diff options
-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, |