]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-contact-dialogs.c
Port EmpathyContactDialogs to new API.
[empathy.git] / libempathy-gtk / empathy-contact-dialogs.c
index f7a769d98e296e4f37f7fb0dd0b0e6ee5f4fbda9..309cd649c8e8708d3530b4e171f79e98b70ed96e 100644 (file)
 #include <stdlib.h>
 
 #include <gtk/gtk.h>
-#include <glade/glade.h>
 #include <glib/gi18n-lib.h>
 
 #include <libmissioncontrol/mission-control.h>
 
 #include <libempathy/empathy-contact-manager.h>
+#include <libempathy/empathy-account-manager.h>
 #include <libempathy/empathy-contact-list.h>
 #include <libempathy/empathy-utils.h>
 
@@ -89,6 +89,7 @@ void
 empathy_subscription_dialog_show (EmpathyContact *contact,
                                  GtkWindow     *parent)
 {
+       GtkBuilder *gui;
        GtkWidget *dialog;
        GtkWidget *hbox_subscription;
        GtkWidget *contact_widget;
@@ -105,15 +106,14 @@ empathy_subscription_dialog_show (EmpathyContact *contact,
                return;
        }
 
-       filename = empathy_file_lookup ("empathy-contact-dialogs.glade",
+       filename = empathy_file_lookup ("empathy-contact-dialogs.ui",
                                        "libempathy-gtk");
-       empathy_glade_get_file_simple (filename,
-                                     "subscription_request_dialog",
-                                     NULL,
+       gui = empathy_builder_get_file (filename,
                                      "subscription_request_dialog", &dialog,
                                      "hbox_subscription", &hbox_subscription,
                                      NULL);
        g_free (filename);
+       g_object_unref (gui);
 
        contact_widget = empathy_contact_widget_new (contact,
                                                     EMPATHY_CONTACT_WIDGET_EDIT_ALIAS |
@@ -122,6 +122,8 @@ empathy_subscription_dialog_show (EmpathyContact *contact,
                          contact_widget,
                          TRUE, TRUE,
                          0);
+       gtk_widget_show (contact_widget);
+
 
        g_object_set_data (G_OBJECT (dialog), "contact_widget", contact_widget);
        subscription_dialogs = g_list_prepend (subscription_dialogs, dialog);
@@ -217,6 +219,7 @@ empathy_contact_information_dialog_show (EmpathyContact *contact,
                                                           empathy_account_chooser_filter_is_connected,
                                                           NULL);
        }
+       gtk_widget_show (contact_widget);
 
        g_object_set_data (G_OBJECT (dialog), "contact_widget", contact_widget);
        information_dialogs = g_list_prepend (information_dialogs, dialog);
@@ -240,12 +243,23 @@ static gboolean
 can_add_contact_to_account (McAccount *account,
                            gpointer   user_data)
 {
-       EmpathyContactManager *mgr;
+       EmpathyAccountManager *account_manager;
+       EmpathyContactManager *contact_manager;
+       TpConnection          *connection;
        gboolean               result;
 
-       mgr = empathy_contact_manager_dup_singleton ();
-       result = empathy_contact_manager_can_add (mgr, account);
-       g_object_unref (mgr);
+       account_manager = empathy_account_manager_dup_singleton ();
+       connection = empathy_account_manager_get_connection (account_manager,
+                                                            account);
+       if (!connection) {
+               g_object_unref (account_manager);
+               return FALSE;
+       }
+
+       contact_manager = empathy_contact_manager_dup_singleton ();
+       result = empathy_contact_manager_can_add (contact_manager, connection);
+       g_object_unref (contact_manager);
+       g_object_unref (account_manager);
 
        return result;
 }
@@ -318,6 +332,7 @@ empathy_new_contact_dialog_show (GtkWindow *parent)
        empathy_contact_widget_set_account_filter (contact_widget,
                                                   can_add_contact_to_account,
                                                   NULL);
+       gtk_widget_show (contact_widget);
 
        new_contact_dialog = dialog;