* 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>
*/
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,
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,
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)
{
const gchar *group)
{
EmpathyContactManagerPriv *priv = GET_PRIV (manager);
-
+
g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager));
g_hash_table_foreach (priv->lists,
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;
}