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 /src/empathy.c | |
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
Diffstat (limited to 'src/empathy.c')
-rw-r--r-- | src/empathy.c | 26 |
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, |