]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-contact-menu.c
Merge commit 'jtellier/video-call-button-sensitivity'
[empathy.git] / libempathy-gtk / empathy-contact-menu.c
index 3c4eb0bbf031ac3ee23bd3a61f49ac13f54689f8..0de7c1ca6afdd78c4ab7847db97c4aa6d7db8c23 100644 (file)
@@ -146,12 +146,27 @@ empathy_contact_add_menu_item_new (EmpathyContact *contact)
        GtkWidget *item;
        GtkWidget *image;
        EmpathyContactManager *manager;
+       TpConnection *connection;
        GList *l, *members;
        gboolean found = FALSE;
+       EmpathyContactListFlags flags;
 
        g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
 
+       if (!empathy_contact_manager_initialized ()) {
+               return NULL;
+       }
+
        manager = empathy_contact_manager_dup_singleton ();
+       connection = empathy_contact_get_connection (contact);
+
+       flags = empathy_contact_manager_get_flags_for_connection (manager,
+                       connection);
+
+       if (!(flags & EMPATHY_CONTACT_LIST_CAN_ADD)) {
+               return NULL;
+       }
+
        members = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (manager));
        for (l = members; l; l = l->next) {
                if (!found && empathy_contact_equal (l->data, contact)) {
@@ -163,6 +178,7 @@ empathy_contact_add_menu_item_new (EmpathyContact *contact)
                g_object_unref (l->data);
        }
        g_list_free (members);
+       g_object_unref (manager);
 
        if (found) {
                return NULL;
@@ -230,7 +246,7 @@ empathy_contact_audio_call_menu_item_new (EmpathyContact *contact)
        image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VOIP,
                                              GTK_ICON_SIZE_MENU);
        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
-       gtk_widget_set_sensitive (item, empathy_contact_can_voip (contact));
+       gtk_widget_set_sensitive (item, empathy_contact_can_voip_audio (contact));
        gtk_widget_show (image);
 
        g_signal_connect (item, "activate",
@@ -262,7 +278,7 @@ empathy_contact_video_call_menu_item_new (EmpathyContact *contact)
        image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_VIDEO_CALL,
                                              GTK_ICON_SIZE_MENU);
        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
-       gtk_widget_set_sensitive (item, empathy_contact_can_voip (contact));
+       gtk_widget_set_sensitive (item, empathy_contact_can_voip_video (contact));
        gtk_widget_show (image);
 
        g_signal_connect (item, "activate",