From 3c136f3efe92a0364ecf21bc0fb62ad66e583d09 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Mon, 12 Dec 2011 13:03:59 +0100 Subject: remove empathy-contact-manager https://bugzilla.gnome.org/show_bug.cgi?id=660547 --- libempathy/Makefile.am | 2 - libempathy/empathy-contact-manager.c | 541 ----------------------------------- libempathy/empathy-contact-manager.h | 60 ---- 3 files changed, 603 deletions(-) delete mode 100644 libempathy/empathy-contact-manager.c delete mode 100644 libempathy/empathy-contact-manager.h (limited to 'libempathy') diff --git a/libempathy/Makefile.am b/libempathy/Makefile.am index cd0302273..da37ef371 100644 --- a/libempathy/Makefile.am +++ b/libempathy/Makefile.am @@ -39,7 +39,6 @@ libempathy_headers = \ empathy-connection-aggregator.h \ empathy-contact-groups.h \ empathy-contact-list.h \ - empathy-contact-manager.h \ empathy-contact.h \ empathy-debug.h \ empathy-ft-factory.h \ @@ -82,7 +81,6 @@ libempathy_handwritten_source = \ empathy-connection-aggregator.c \ empathy-contact-groups.c \ empathy-contact-list.c \ - empathy-contact-manager.c \ empathy-contact.c \ empathy-debug.c \ empathy-ft-factory.c \ diff --git a/libempathy/empathy-contact-manager.c b/libempathy/empathy-contact-manager.c deleted file mode 100644 index fd2b3e1a4..000000000 --- a/libempathy/empathy-contact-manager.c +++ /dev/null @@ -1,541 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Copyright (C) 2007-2008 Collabora Ltd. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * 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 - */ - -#include - -#include - -#include -#include -#include -#include - -#include "empathy-contact-manager.h" -#include "empathy-contact-list.h" -#include "empathy-utils.h" - -#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT -#include "empathy-debug.h" - -#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyContactManager) -typedef struct { - /* Owned (TpConnection *) => Owned (TpContactList *) - The contact list associated with each connected connection */ - GHashTable *lists; - TpAccountManager *account_manager; -} EmpathyContactManagerPriv; - -static void contact_manager_iface_init (EmpathyContactListIface *iface); - -G_DEFINE_TYPE_WITH_CODE (EmpathyContactManager, empathy_contact_manager, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (EMPATHY_TYPE_CONTACT_LIST, - contact_manager_iface_init)); - -static EmpathyContactManager *manager_singleton = NULL; - -static void -contact_manager_members_changed_cb (EmpathyTpContactList *list, - EmpathyContact *contact, - EmpathyContact *actor, - guint reason, - gchar *message, - gboolean is_member, - EmpathyContactManager *manager) -{ - g_signal_emit_by_name (manager, "members-changed", - contact, actor, reason, message, is_member); -} - -static void -contact_manager_pendings_changed_cb (EmpathyTpContactList *list, - EmpathyContact *contact, - EmpathyContact *actor, - guint reason, - gchar *message, - gboolean is_pending, - EmpathyContactManager *manager) -{ - g_signal_emit_by_name (manager, "pendings-changed", - contact, actor, reason, message, is_pending); -} - -static void -contact_manager_groups_changed_cb (EmpathyTpContactList *list, - EmpathyContact *contact, - gchar *group, - gboolean is_member, - EmpathyContactManager *manager) -{ - g_signal_emit_by_name (manager, "groups-changed", - contact, group, is_member); -} - -static void -contact_manager_invalidated_cb (TpProxy *connection, - guint domain, - gint code, - gchar *message, - EmpathyContactManager *manager) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyTpContactList *list; - - DEBUG ("Removing connection: %s (%s)", - tp_proxy_get_object_path (TP_PROXY (connection)), - message); - - list = g_hash_table_lookup (priv->lists, connection); - if (list) { - empathy_tp_contact_list_remove_all (list); - 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_status_changed_cb (TpAccount *account, - guint old_status, - guint new_status, - guint reason, - gchar *dbus_error_name, - GHashTable *details, - EmpathyContactManager *self) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (self); - EmpathyTpContactList *list; - TpConnection *connection; - - if (new_status == TP_CONNECTION_STATUS_DISCONNECTED) - /* No point to start tracking a connection which is about to die */ - return; - - connection = tp_account_get_connection (account); - - if (connection == NULL || g_hash_table_lookup (priv->lists, connection)) { - return; - } - - DEBUG ("Adding new connection: %s", - tp_proxy_get_object_path (TP_PROXY (connection))); - - list = empathy_tp_contact_list_new (connection); - g_hash_table_insert (priv->lists, g_object_ref (connection), list); - g_signal_connect (connection, "invalidated", - G_CALLBACK (contact_manager_invalidated_cb), - self); - - /* Connect signals */ - g_signal_connect (list, "members-changed", - G_CALLBACK (contact_manager_members_changed_cb), - self); - g_signal_connect (list, "pendings-changed", - G_CALLBACK (contact_manager_pendings_changed_cb), - self); - g_signal_connect (list, "groups-changed", - G_CALLBACK (contact_manager_groups_changed_cb), - self); -} - -static void -contact_manager_validity_changed_cb (TpAccountManager *account_manager, - TpAccount *account, - gboolean valid, - EmpathyContactManager *manager) -{ - if (valid) { - tp_g_signal_connect_object (account, "status-changed", - G_CALLBACK (contact_manager_status_changed_cb), - manager, 0); - } -} - -static void -contact_manager_finalize (GObject *object) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (object); - - g_hash_table_foreach (priv->lists, - contact_manager_disconnect_foreach, - object); - g_hash_table_unref (priv->lists); - - g_object_unref (priv->account_manager); -} - -static GObject * -contact_manager_constructor (GType type, - guint n_props, - GObjectConstructParam *props) -{ - GObject *retval; - - if (manager_singleton) { - retval = g_object_ref (manager_singleton); - } else { - retval = G_OBJECT_CLASS (empathy_contact_manager_parent_class)->constructor - (type, n_props, props); - - manager_singleton = EMPATHY_CONTACT_MANAGER (retval); - g_object_add_weak_pointer (retval, (gpointer) &manager_singleton); - } - - 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) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->finalize = contact_manager_finalize; - object_class->constructor = contact_manager_constructor; - - g_type_class_add_private (object_class, sizeof (EmpathyContactManagerPriv)); -} - -static void -account_manager_prepared_cb (GObject *source_object, - GAsyncResult *result, - gpointer user_data) -{ - GList *accounts, *l; - EmpathyContactManager *manager = user_data; - TpAccountManager *account_manager = TP_ACCOUNT_MANAGER (source_object); - GError *error = NULL; - - if (!tp_proxy_prepare_finish (account_manager, result, &error)) { - DEBUG ("Failed to prepare account manager: %s", error->message); - g_error_free (error); - return; - } - - accounts = tp_account_manager_get_valid_accounts (account_manager); - - for (l = accounts; l != NULL; l = l->next) { - TpAccount *account = l->data; - TpConnection *conn = tp_account_get_connection (account); - - if (conn != NULL) { - contact_manager_status_changed_cb (account, 0, 0, 0, - NULL, NULL, manager); - } - - tp_g_signal_connect_object (account, "status-changed", - G_CALLBACK (contact_manager_status_changed_cb), - manager, 0); - } - g_list_free (accounts); - - tp_g_signal_connect_object (account_manager, "account-validity-changed", - G_CALLBACK (contact_manager_validity_changed_cb), - manager, 0); -} - -static void -empathy_contact_manager_init (EmpathyContactManager *manager) -{ - EmpathyContactManagerPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (manager, - EMPATHY_TYPE_CONTACT_MANAGER, EmpathyContactManagerPriv); - - manager->priv = priv; - priv->lists = g_hash_table_new_full (empathy_proxy_hash, - empathy_proxy_equal, - (GDestroyNotify) g_object_unref, - (GDestroyNotify) g_object_unref); - - priv->account_manager = tp_account_manager_dup (); - - tp_proxy_prepare_async (priv->account_manager, NULL, - account_manager_prepared_cb, manager); -} - -EmpathyContactManager * -empathy_contact_manager_dup_singleton (void) -{ - return g_object_new (EMPATHY_TYPE_CONTACT_MANAGER, NULL); -} - -EmpathyTpContactList * -empathy_contact_manager_get_list (EmpathyContactManager *manager, - TpConnection *connection) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - - g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL); - g_return_val_if_fail (TP_IS_CONNECTION (connection), NULL); - - return g_hash_table_lookup (priv->lists, connection); -} - -static void -contact_manager_add (EmpathyContactList *manager, - EmpathyContact *contact, - const gchar *message) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyContactList *list; - TpConnection *connection; - - g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager)); - - connection = empathy_contact_get_connection (contact); - list = g_hash_table_lookup (priv->lists, connection); - - if (list) { - empathy_contact_list_add (list, contact, message); - } -} - -static void -contact_manager_remove (EmpathyContactList *manager, - EmpathyContact *contact, - const gchar *message) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyContactList *list; - TpConnection *connection; - - g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager)); - - connection = empathy_contact_get_connection (contact); - list = g_hash_table_lookup (priv->lists, connection); - - if (list) { - empathy_contact_list_remove (list, contact, message); - } -} - -static void -contact_manager_get_members_foreach (TpConnection *connection, - EmpathyTpContactList *list, - GList **contacts) -{ - GList *l; - - l = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (list)); - *contacts = g_list_concat (*contacts, l); -} - -static GList * -contact_manager_get_members (EmpathyContactList *manager) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - GList *contacts = NULL; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL); - - g_hash_table_foreach (priv->lists, - (GHFunc) contact_manager_get_members_foreach, - &contacts); - - return contacts; -} - -static void -contact_manager_get_pendings_foreach (TpConnection *connection, - EmpathyTpContactList *list, - GList **contacts) -{ - GList *l; - - l = empathy_contact_list_get_pendings (EMPATHY_CONTACT_LIST (list)); - *contacts = g_list_concat (*contacts, l); -} - -static GList * -contact_manager_get_pendings (EmpathyContactList *manager) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - GList *contacts = NULL; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL); - - g_hash_table_foreach (priv->lists, - (GHFunc) contact_manager_get_pendings_foreach, - &contacts); - - return contacts; -} - -static GList * -contact_manager_get_groups (EmpathyContactList *manager, - EmpathyContact *contact) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyContactList *list; - TpConnection *connection; - - g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), NULL); - - connection = empathy_contact_get_connection (contact); - list = g_hash_table_lookup (priv->lists, connection); - - if (list) { - return empathy_contact_list_get_groups (list, contact); - } - - return NULL; -} - -static void -contact_manager_add_to_group (EmpathyContactList *manager, - EmpathyContact *contact, - const gchar *group) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyContactList *list; - TpConnection *connection; - - g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager)); - - connection = empathy_contact_get_connection (contact); - list = g_hash_table_lookup (priv->lists, connection); - - if (list) { - empathy_contact_list_add_to_group (list, contact, group); - } -} - -static void -contact_manager_remove_from_group (EmpathyContactList *manager, - EmpathyContact *contact, - const gchar *group) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - EmpathyContactList *list; - TpConnection *connection; - - g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager)); - - connection = empathy_contact_get_connection (contact); - list = g_hash_table_lookup (priv->lists, connection); - - if (list) { - empathy_contact_list_remove_from_group (list, contact, group); - } -} - -typedef struct { - const gchar *old_group; - const gchar *new_group; -} RenameGroupData; - -static void -contact_manager_rename_group_foreach (TpConnection *connection, - EmpathyTpContactList *list, - RenameGroupData *data) -{ - empathy_contact_list_rename_group (EMPATHY_CONTACT_LIST (list), - data->old_group, - data->new_group); -} - -static void -contact_manager_rename_group (EmpathyContactList *manager, - const gchar *old_group, - const gchar *new_group) -{ - EmpathyContactManagerPriv *priv = GET_PRIV (manager); - RenameGroupData data; - - g_return_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager)); - - data.old_group = old_group; - data.new_group = new_group; - g_hash_table_foreach (priv->lists, - (GHFunc) contact_manager_rename_group_foreach, - &data); -} - -static void contact_manager_remove_group_foreach (TpConnection *connection, - EmpathyTpContactList *list, - const gchar *group) -{ - empathy_contact_list_remove_group (EMPATHY_CONTACT_LIST (list), - group); -} - -static void -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, - (GHFunc) contact_manager_remove_group_foreach, - (gpointer) group); -} - -static void -contact_manager_iface_init (EmpathyContactListIface *iface) -{ - iface->add = contact_manager_add; - iface->remove = contact_manager_remove; - iface->get_members = contact_manager_get_members; - iface->get_pendings = contact_manager_get_pendings; - iface->get_groups = contact_manager_get_groups; - iface->add_to_group = contact_manager_add_to_group; - iface->remove_from_group = contact_manager_remove_from_group; - iface->rename_group = contact_manager_rename_group; - iface->remove_group = contact_manager_remove_group; -} diff --git a/libempathy/empathy-contact-manager.h b/libempathy/empathy-contact-manager.h deleted file mode 100644 index 4d1493091..000000000 --- a/libempathy/empathy-contact-manager.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* - * Copyright (C) 2007-2008 Collabora Ltd. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * 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 - */ - -#ifndef __EMPATHY_CONTACT_MANAGER_H__ -#define __EMPATHY_CONTACT_MANAGER_H__ - -#include - -#include "empathy-contact.h" -#include "empathy-tp-contact-list.h" -#include "empathy-contact-list.h" - -G_BEGIN_DECLS - -#define EMPATHY_TYPE_CONTACT_MANAGER (empathy_contact_manager_get_type ()) -#define EMPATHY_CONTACT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EMPATHY_TYPE_CONTACT_MANAGER, EmpathyContactManager)) -#define EMPATHY_CONTACT_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EMPATHY_TYPE_CONTACT_MANAGER, EmpathyContactManagerClass)) -#define EMPATHY_IS_CONTACT_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EMPATHY_TYPE_CONTACT_MANAGER)) -#define EMPATHY_IS_CONTACT_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EMPATHY_TYPE_CONTACT_MANAGER)) -#define EMPATHY_CONTACT_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EMPATHY_TYPE_CONTACT_MANAGER, EmpathyContactManagerClass)) - -typedef struct _EmpathyContactManager EmpathyContactManager; -typedef struct _EmpathyContactManagerClass EmpathyContactManagerClass; - -struct _EmpathyContactManager { - GObject parent; - gpointer priv; -}; - -struct _EmpathyContactManagerClass { - GObjectClass parent_class; -}; - -GType empathy_contact_manager_get_type (void) G_GNUC_CONST; -gboolean empathy_contact_manager_initialized (void); -EmpathyContactManager *empathy_contact_manager_dup_singleton (void); -EmpathyTpContactList * empathy_contact_manager_get_list (EmpathyContactManager *manager, - TpConnection *connection); - -G_END_DECLS - -#endif /* __EMPATHY_CONTACT_MANAGER_H__ */ -- cgit v1.2.3