aboutsummaryrefslogtreecommitdiffstats
path: root/src
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 /src
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
Diffstat (limited to 'src')
-rw-r--r--src/empathy.c26
1 files changed, 26 insertions, 0 deletions
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,