aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-11-29 21:02:40 +0800
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2011-11-29 21:24:17 +0800
commit4532530cec308a87223f46cd3724c1868849937f (patch)
treea7a4edd57b3c426a40f83c8b29adfdd06e20a1fd
parent97f3aec6da2eed048d878611667381a773980e59 (diff)
downloadgsoc2013-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.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,