aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac4
-rw-r--r--src/status-provider-mc5.c37
2 files changed, 28 insertions, 13 deletions
diff --git a/configure.ac b/configure.ac
index 536b5af..790029a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,10 +37,10 @@ AC_SUBST(APPLET_CFLAGS)
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)
diff --git a/src/status-provider-mc5.c b/src/status-provider-mc5.c
index 6154fb7..d65a482 100644
--- a/src/status-provider-mc5.c
+++ b/src/status-provider-mc5.c
@@ -24,7 +24,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#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 @@ static StatusProviderStatus tp_to_sp_map[TP_CONNECTION_PRESENCE_TYPE_ERROR + 1]
typedef struct _StatusProviderMC5Private StatusProviderMC5Private;
struct _StatusProviderMC5Private {
- EmpathyAccountManager * manager;
+ TpAccountManager * manager;
StatusProviderStatus status;
DBusGProxy * dbus_proxy;
};
@@ -83,7 +83,7 @@ static void status_provider_mc5_finalize (GObject *object);
/* 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 @@ status_provider_mc5_class_init (StatusProviderMC5Class *klass)
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;
}
+ /* the daemon is used to communicate via DBus */
+ daemon = tp_dbus_daemon_dup(&error);
- 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);
+ 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 @@ set_status (StatusProvider * sp, StatusProviderStatus status)
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 @@ get_status (StatusProvider * sp)
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);