diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-11-29 21:02:40 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2011-11-29 21:24:17 +0800 |
commit | 4532530cec308a87223f46cd3724c1868849937f (patch) | |
tree | a7a4edd57b3c426a40f83c8b29adfdd06e20a1fd | |
parent | 97f3aec6da2eed048d878611667381a773980e59 (diff) | |
download | gsoc2013-empathy-4532530cec308a87223f46cd3724c1868849937f.tar gsoc2013-empathy-4532530cec308a87223f46cd3724c1868849937f.tar.gz gsoc2013-empathy-4532530cec308a87223f46cd3724c1868849937f.tar.bz2 gsoc2013-empathy-4532530cec308a87223f46cd3724c1868849937f.tar.lz gsoc2013-empathy-4532530cec308a87223f46cd3724c1868849937f.tar.xz gsoc2013-empathy-4532530cec308a87223f46cd3724c1868849937f.tar.zst gsoc2013-empathy-4532530cec308a87223f46cd3724c1868849937f.zip |
groups-widget: use empathy_connection_aggregator_get_all_groups()
We have to prepare the contact groups feature and ensure that the singleton is
still alive. The 'empathy' process is the only one allowing user to change
contact groups so we just have to do it there.
https://bugzilla.gnome.org/show_bug.cgi?id=665121
-rw-r--r-- | libempathy-gtk/empathy-groups-widget.c | 16 | ||||
-rw-r--r-- | src/empathy.c | 26 |
2 files changed, 34 insertions, 8 deletions
diff --git a/libempathy-gtk/empathy-groups-widget.c b/libempathy-gtk/empathy-groups-widget.c index fa092b6d6..efb58fa99 100644 --- a/libempathy-gtk/empathy-groups-widget.c +++ b/libempathy-gtk/empathy-groups-widget.c @@ -32,7 +32,7 @@ #include <folks/folks.h> #include <libempathy/empathy-utils.h> -#include <libempathy/empathy-contact-manager.h> +#include <libempathy/empathy-connection-aggregator.h> #include "empathy-groups-widget.h" #include "empathy-ui-utils.h" @@ -150,7 +150,7 @@ static void populate_data (EmpathyGroupsWidget *self) { EmpathyGroupsWidgetPriv *priv = GET_PRIV (self); - EmpathyContactManager *manager; + EmpathyConnectionAggregator *aggregator; GtkTreeIter iter; GeeSet *member_groups; GList *all_groups, *l; @@ -158,12 +158,12 @@ populate_data (EmpathyGroupsWidget *self) /* Remove the old groups */ gtk_list_store_clear (priv->group_store); - /* FIXME: We have to get the whole group list from EmpathyContactManager, as - * libfolks hasn't grown API to get the whole group list yet. (bgo#627398) */ - manager = empathy_contact_manager_dup_singleton (); - all_groups = empathy_contact_list_get_all_groups ( - EMPATHY_CONTACT_LIST (manager)); - g_object_unref (manager); + /* FIXME: We have to get the whole group list from + * EmpathyConnectionAggregator, as libfolks hasn't grown API to get the whole + * group list yet. (bgo#627398) */ + aggregator = empathy_connection_aggregator_dup_singleton (); + all_groups = empathy_connection_aggregator_get_all_groups (aggregator); + g_object_unref (aggregator); /* Get the list of groups that this #FolksGroupDetails is currently in */ member_groups = folks_group_details_get_groups (priv->group_details); diff --git a/src/empathy.c b/src/empathy.c index b73bf1b03..57f5c8418 100644 --- a/src/empathy.c +++ b/src/empathy.c @@ -48,6 +48,8 @@ #include <telepathy-logger/log-manager.h> +#include <libempathy/empathy-client-factory.h> +#include <libempathy/empathy-connection-aggregator.h> #include <libempathy/empathy-presence-manager.h> #include <libempathy/empathy-utils.h> #include <libempathy/empathy-chatroom-manager.h> @@ -122,6 +124,7 @@ struct _EmpathyApp EmpathyConnectivity *connectivity; GSettings *gsettings; EmpathyNotificationsApprover *notifications_approver; + EmpathyConnectionAggregator *conn_aggregator; #ifdef HAVE_GEOCLUE EmpathyLocationManager *location_manager; #endif @@ -167,6 +170,7 @@ empathy_app_dispose (GObject *object) tp_clear_object (&self->ft_factory); tp_clear_object (&self->gsettings); tp_clear_object (&self->notifications_approver); + tp_clear_object (&self->conn_aggregator); if (dispose != NULL) dispose (object); @@ -808,11 +812,31 @@ empathy_app_constructed (GObject *object) self->location_manager = empathy_location_manager_dup_singleton (); #endif + self->conn_aggregator = empathy_connection_aggregator_dup_singleton (); + self->activated = FALSE; self->ft_factory = NULL; self->window = NULL; } +static void +add_empathy_features (void) +{ + /* Add 'empathy' specific feature before doing any preparation */ + EmpathyClientFactory *factory; + + factory = empathy_client_factory_dup (); + + tp_simple_client_factory_add_connection_features_varargs ( + TP_SIMPLE_CLIENT_FACTORY (factory), + /* empathy_connection_aggregator_get_all_groups(), used by + * EmpathyGroupsWidget relies on it */ + TP_CONNECTION_FEATURE_CONTACT_GROUPS, + NULL); + + g_object_unref (factory); +} + int main (int argc, char *argv[]) { @@ -832,6 +856,8 @@ main (int argc, char *argv[]) gtk_init (&argc, &argv); empathy_gtk_init (); + add_empathy_features (); + app = g_object_new (EMPATHY_TYPE_APP, "application-id", EMPATHY_DBUS_NAME, "flags", G_APPLICATION_HANDLES_COMMAND_LINE, |