[empathy] Check CAN_ADD before returning an Add Contact... menu item



commit ce74b001af76af82c3bc448784ce7826b99d378f
Author: Davyd Madeley <davyd madeley id au>
Date:   Tue Jul 14 11:47:47 2009 +0100

    Check CAN_ADD before returning an Add Contact... menu item

 libempathy-gtk/empathy-contact-menu.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c
index 3c4eb0b..b4d694b 100644
--- a/libempathy-gtk/empathy-contact-menu.c
+++ b/libempathy-gtk/empathy-contact-menu.c
@@ -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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]