aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-groups-widget.c16
-rw-r--r--src/empathy.c26
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,