]> git.0d.be Git - empathy.git/blobdiff - libempathy/empathy-contact-manager.c
Updated Basque language
[empathy.git] / libempathy / empathy-contact-manager.c
index 66c4514aff7748d7c001aca4048c7fbc3dccf358..302fad3c53f269ded86efbd39a3a25befebc2ca0 100644 (file)
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- * 
+ *
  * Authors: Xavier Claessens <xclaesse@gmail.com>
  */
 
@@ -86,26 +86,6 @@ contact_manager_groups_changed_cb (EmpathyTpContactList  *list,
                               contact, group, is_member);
 }
 
-static void
-contact_manager_disconnect_foreach (gpointer key,
-                                   gpointer value,
-                                   gpointer user_data)
-{
-       EmpathyTpContactList  *list = value;
-       EmpathyContactManager *manager = user_data;
-
-       /* Disconnect signals from the list */
-       g_signal_handlers_disconnect_by_func (list,
-                                             contact_manager_members_changed_cb,
-                                             manager);
-       g_signal_handlers_disconnect_by_func (list,
-                                             contact_manager_pendings_changed_cb,
-                                             manager);
-       g_signal_handlers_disconnect_by_func (list,
-                                             contact_manager_groups_changed_cb,
-                                             manager);
-}
-
 static void
 contact_manager_invalidated_cb (TpProxy *connection,
                                guint    domain,
@@ -123,10 +103,34 @@ contact_manager_invalidated_cb (TpProxy *connection,
        list = g_hash_table_lookup (priv->lists, connection);
        if (list) {
                empathy_tp_contact_list_remove_all (list);
-               g_hash_table_remove (priv->lists, connection);          
+               g_hash_table_remove (priv->lists, connection);
        }
 }
 
+static void
+contact_manager_disconnect_foreach (gpointer key,
+                                   gpointer value,
+                                   gpointer user_data)
+{
+       TpConnection *connection = key;
+       EmpathyTpContactList  *list = value;
+       EmpathyContactManager *manager = user_data;
+
+       /* Disconnect signals from the list */
+       g_signal_handlers_disconnect_by_func (list,
+                                             contact_manager_members_changed_cb,
+                                             manager);
+       g_signal_handlers_disconnect_by_func (list,
+                                             contact_manager_pendings_changed_cb,
+                                             manager);
+       g_signal_handlers_disconnect_by_func (list,
+                                             contact_manager_groups_changed_cb,
+                                             manager);
+       g_signal_handlers_disconnect_by_func (connection,
+                                             contact_manager_invalidated_cb,
+                                             manager);
+}
+
 static void
 contact_manager_new_connection_cb (EmpathyAccountManager *account_manager,
                                   TpConnection *connection,
@@ -200,6 +204,23 @@ contact_manager_constructor (GType type,
        return retval;
 }
 
+/**
+ * empathy_contact_manager_initialized:
+ *
+ * Reports whether or not the singleton has already been created.
+ *
+ * There can be instances where you want to access the #EmpathyContactManager
+ * only if it has been set up for this process.
+ *
+ * Returns: %TRUE if the #EmpathyContactManager singleton has previously
+ * been initialized.
+ */
+gboolean
+empathy_contact_manager_initialized (void)
+{
+       return (manager_singleton != NULL);
+}
+
 static void
 empathy_contact_manager_class_init (EmpathyContactManagerClass *klass)
 {
@@ -499,7 +520,7 @@ contact_manager_remove_group (EmpathyContactList *manager,
                              const gchar *group)
 {
        EmpathyContactManagerPriv *priv = GET_PRIV (manager);
-       
+
        g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
 
        g_hash_table_foreach (priv->lists,
@@ -523,19 +544,24 @@ contact_manager_iface_init (EmpathyContactListIface *iface)
        iface->remove_group      = contact_manager_remove_group;
 }
 
-gboolean
-empathy_contact_manager_can_add (EmpathyContactManager *manager,
-                                TpConnection          *connection)
+EmpathyContactListFlags
+empathy_contact_manager_get_flags_for_connection (
+                               EmpathyContactManager *manager,
+                               TpConnection          *connection)
 {
        EmpathyContactManagerPriv *priv = GET_PRIV (manager);
-       EmpathyTpContactList      *list;
-       
+       EmpathyContactList        *list;
+       EmpathyContactListFlags    flags;
+
        g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), FALSE);
+       g_return_val_if_fail (connection != NULL, FALSE);
 
        list = g_hash_table_lookup (priv->lists, connection);
-       if (list == NULL)
+       if (list == NULL) {
                return FALSE;
+       }
+       flags = empathy_contact_list_get_flags (list);
 
-       return empathy_tp_contact_list_can_add (list);
+       return flags;
 }