]> 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 d287b4d78353e82ad99b361b92275d143ae8def2..309cd649c8e8708d3530b4e171f79e98b70ed96e 100644 (file)
@@ -30,6 +30,7 @@
 #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>
 
@@ -121,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);
@@ -216,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);
@@ -239,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;
 }
@@ -317,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;