← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ken-vandine/indicator-session/tp_glib into lp:indicator-session

 

Ken VanDine has proposed merging lp:~ken-vandine/indicator-session/tp_glib into lp:indicator-session.

    Requested reviews:
    Indicator Applet Developers (indicator-applet-developers)
Related bugs:
  #461367 Move from libempathy to libtelepathy-glib
  https://bugs.launchpad.net/bugs/461367


Port from libempathy to telepathy-glib 
-- 
https://code.launchpad.net/~ken-vandine/indicator-session/tp_glib/+merge/15818
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file 'configure.ac'
--- configure.ac	2009-11-04 22:14:49 +0000
+++ configure.ac	2009-12-08 16:25:18 +0000
@@ -37,10 +37,10 @@
 AC_SUBST(APPLET_LIBS)
 
 DBUSMENUGLIB_REQUIRED_VERSION=0.1.1
-LIBEMPATHY_REQUIRED_VERSION=2.27.0
+TELEPATHYGLIB_REQUIRED_VERSION=0.9.0
 
 PKG_CHECK_MODULES(STATUSSERVICE, dbusmenu-glib >= $DBUSMENUGLIB_REQUIRED_VERSION
-                                 libempathy >= $LIBEMPATHY_REQUIRED_VERSION)
+                                 telepathy-glib >= $TELEPATHYGLIB_REQUIRED_VERSION)
 
 AC_SUBST(STATUSERVICE_CFLAGS)
 AC_SUBST(STATUSERVICE_LIBS)

=== modified file 'src/Makefile.am'
--- src/Makefile.am	2009-10-06 23:49:57 +0000
+++ src/Makefile.am	2009-12-08 16:25:18 +0000
@@ -154,7 +154,9 @@
 	status-service.xml \
 	status-provider-mc5.list \
 	status-provider-pidgin.list \
-	status-provider-telepathy.list
+	status-provider-telepathy.list \
+	users-service.xml \
+	users-service.list
 
 CLEANFILES = \
 	$(BUILT_SOURCES)

=== modified file 'src/status-provider-mc5.c'
--- src/status-provider-mc5.c	2009-10-08 20:12:42 +0000
+++ src/status-provider-mc5.c	2009-12-08 16:25:18 +0000
@@ -24,7 +24,7 @@
 #include "config.h"
 #endif
 
-#include "libempathy/empathy-account-manager.h"
+#include <telepathy-glib/account-manager.h>
 
 #include "status-provider.h"
 #include "status-provider-mc5.h"
@@ -65,7 +65,7 @@
 
 typedef struct _StatusProviderMC5Private StatusProviderMC5Private;
 struct _StatusProviderMC5Private {
-	EmpathyAccountManager * manager;
+	TpAccountManager * manager;
 	StatusProviderStatus status;
 	DBusGProxy * dbus_proxy;
 };
@@ -83,7 +83,7 @@
 /* Internal Funcs */
 static void set_status (StatusProvider * sp, StatusProviderStatus status);
 static StatusProviderStatus get_status (StatusProvider * sp);
-static void presence_changed (EmpathyAccountManager * eam, guint type, const gchar * type_str, const gchar * message, StatusProviderMC5 * sp);
+static void presence_changed (TpAccountManager * eam, guint type, const gchar * type_str, const gchar * message, StatusProviderMC5 * sp);
 static void dbus_namechange (DBusGProxy * proxy, const gchar * name, const gchar * prev, const gchar * new, StatusProviderMC5 * self);
 static void mc5_exists_cb (DBusGProxy * proxy, gboolean exists, GError * error, gpointer userdata);
 
@@ -109,25 +109,41 @@
 	return;
 }
 
-/* Build our empathy account manager instance if we don't
+/* Build our telepathy account manager instance if we don't
    have one. */
 static void
 build_eam (StatusProviderMC5 * self)
 {
 	StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(self);
+	static TpDBusDaemon *daemon = NULL;
+	GError *error = NULL;
 
 	if (priv->manager != NULL) {
 		return;
 	}
-
-	priv->manager = EMPATHY_ACCOUNT_MANAGER(g_object_new(EMPATHY_TYPE_ACCOUNT_MANAGER, NULL));
-	g_signal_connect(G_OBJECT(priv->manager), "global-presence-changed", G_CALLBACK(presence_changed), self);
+	/* the daemon is used to communicate via DBus */
+	daemon = tp_dbus_daemon_dup(&error);
+
+	if (daemon == NULL)
+	{
+		g_debug("Cannot create DBus daemon: %s\n", error->message);
+		g_error_free(error);
+		return;
+	}
+
+	priv->manager = TP_ACCOUNT_MANAGER (g_object_new (TP_TYPE_ACCOUNT_MANAGER,
+		"dbus-daemon", daemon,
+		"dbus-connection", ((TpProxy *) daemon)->dbus_connection,
+		"bus-name", "org.freedesktop.Telepathy.MissionControl5",
+		"object-path", "/org/freedesktop/Telepathy/AccountManager",
+		NULL));
+	g_signal_connect(G_OBJECT(priv->manager), "most-available-presence-changed", G_CALLBACK(presence_changed), self);
 
 	return;
 }
 
 /* Creating an instance of the status provider.  We set the variables
-   and create an EmpathyAccountManager object.  It does all the hard
+   and create an TpAccountManager object.  It does all the hard
    work in this module of tracking MissionControl and enumerating the
    accounts and all that jazz. */
 static void
@@ -266,8 +282,7 @@
 	StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(sp);
 
 	build_eam(STATUS_PROVIDER_MC5(sp));
-
-	empathy_account_manager_request_global_presence(priv->manager, sp_to_tp_map[status], sp_to_mc_map[status], "");
+	tp_account_manager_set_all_requested_presences(priv->manager, sp_to_tp_map[status], sp_to_mc_map[status], "");
 
 	return;
 }
@@ -287,11 +302,11 @@
 	return priv->status;
 }
 
-/* A signal handler for when the EmpatyAccountManager believes
+/* A signal handler for when the TpAccountManager believes
    that the global status has changed.  It roughly calculates this
    by finding the most available of all accounts that are active. */
 static void
-presence_changed (EmpathyAccountManager * eam, guint type, const gchar * type_str, const gchar * message, StatusProviderMC5 * sp)
+presence_changed (TpAccountManager * eam, guint type, const gchar * type_str, const gchar * message, StatusProviderMC5 * sp)
 {
 	StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(sp);
 


Follow ups