]> git.0d.be Git - empathy.git/commitdiff
Add 'favorite' checkbox to the contact menu
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 9 Mar 2010 10:20:33 +0000 (11:20 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Mon, 15 Mar 2010 08:28:41 +0000 (09:28 +0100)
libempathy-gtk/empathy-contact-menu.c
libempathy-gtk/empathy-contact-menu.h

index 54bb4b28617a96c1b5a5f27896d109557412cf65..47f68e8eb664890588d2be838c9575e9f19f7220 100644 (file)
@@ -112,6 +112,13 @@ empathy_contact_menu_new (EmpathyContact             *contact,
        gtk_menu_shell_append (shell, item);
        gtk_widget_show (item);
 
+#if HAVE_FAVOURITE_CONTACTS
+       /* Favorite checkbox */
+       item = empathy_contact_favourite_menu_item_new (contact);
+       gtk_menu_shell_append (shell, item);
+       gtk_widget_show (item);
+#endif
+
        /* Separator */
        if (features & (EMPATHY_CONTACT_FEATURE_EDIT |
                        EMPATHY_CONTACT_FEATURE_INFO)) {
@@ -396,6 +403,48 @@ empathy_contact_share_my_desktop_menu_item_new (EmpathyContact *contact)
        return item;
 }
 
+#if HAVE_FAVOURITE_CONTACTS
+static void
+favourite_menu_item_toggled_cb (GtkCheckMenuItem *item,
+       EmpathyContact *contact)
+{
+       EmpathyContactManager *manager;
+       EmpathyContactList *list;
+
+       manager = empathy_contact_manager_dup_singleton ();
+       list = EMPATHY_CONTACT_LIST (manager);
+
+       if (gtk_check_menu_item_get_active (item)) {
+               empathy_contact_list_add_to_favourites (list, contact);
+       } else {
+               empathy_contact_list_remove_from_favourites (list, contact);
+       }
+
+       g_object_unref (manager);
+}
+
+GtkWidget *
+empathy_contact_favourite_menu_item_new (EmpathyContact *contact)
+{
+       GtkWidget *item;
+       EmpathyContactManager *manager;
+
+       item = gtk_check_menu_item_new_with_label (_("Favorite"));
+
+       manager = empathy_contact_manager_dup_singleton ();
+       gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+               empathy_contact_list_is_favourite (EMPATHY_CONTACT_LIST (manager),
+                                                  contact));
+
+       g_signal_connect (item, "toggled",
+                         G_CALLBACK (favourite_menu_item_toggled_cb),
+                         contact);
+
+       g_object_unref (manager);
+       return item;
+}
+#endif
+
 static void
 contact_info_menu_item_activate_cb (EmpathyContact *contact)
 {
index 2c623e6baf1f7ba5dea0ec7e3ee764cdf34e542a..25f18e03fd7b7936701ef9ea14e77f9c7643dc85 100644 (file)
@@ -50,6 +50,7 @@ GtkWidget * empathy_contact_edit_menu_item_new (EmpathyContact             *cont
 GtkWidget * empathy_contact_invite_menu_item_new (EmpathyContact *contact);
 GtkWidget * empathy_contact_file_transfer_menu_item_new (EmpathyContact    *contact);
 GtkWidget * empathy_contact_share_my_desktop_menu_item_new (EmpathyContact *contact);
+GtkWidget * empathy_contact_favourite_menu_item_new (EmpathyContact *contact);
 
 G_END_DECLS