diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2007-05-01 20:18:26 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2007-05-01 20:18:26 +0800 |
commit | 8aaf6865026ead0f21a233a2897a89a7de332f5d (patch) | |
tree | 1eb2237d2e0284e26130361ec8ca68922af6e971 /launcher | |
parent | b21403fed48c9b95d32a9b8968ac8f47135fd34f (diff) | |
download | gsoc2013-empathy-8aaf6865026ead0f21a233a2897a89a7de332f5d.tar gsoc2013-empathy-8aaf6865026ead0f21a233a2897a89a7de332f5d.tar.gz gsoc2013-empathy-8aaf6865026ead0f21a233a2897a89a7de332f5d.tar.bz2 gsoc2013-empathy-8aaf6865026ead0f21a233a2897a89a7de332f5d.tar.lz gsoc2013-empathy-8aaf6865026ead0f21a233a2897a89a7de332f5d.tar.xz gsoc2013-empathy-8aaf6865026ead0f21a233a2897a89a7de332f5d.tar.zst gsoc2013-empathy-8aaf6865026ead0f21a233a2897a89a7de332f5d.zip |
[darcs-to-svn @ Connect accounts in empathy-launcher, not in empathy-contact-list]
svn path=/trunk/; revision=14
Diffstat (limited to 'launcher')
-rw-r--r-- | launcher/empathy-launcher.c | 90 |
1 files changed, 84 insertions, 6 deletions
diff --git a/launcher/empathy-launcher.c b/launcher/empathy-launcher.c index 3f58be97c..f6851f95c 100644 --- a/launcher/empathy-launcher.c +++ b/launcher/empathy-launcher.c @@ -21,28 +21,106 @@ */ #include <config.h> - #include <stdlib.h> - #include <glib.h> -#include <libempathy/empathy-session.h> +#include <libtelepathy/tp-helpers.h> +#include <libmissioncontrol/mc-account-monitor.h> +#include <libmissioncontrol/mission-control.h> + #include <libempathy/gossip-debug.h> #define DEBUG_DOMAIN "Launcher" +static void error_cb (MissionControl *mc, + GError *error, + gpointer data); +static void service_ended_cb (MissionControl *mc, + gpointer user_data); +static void start_mission_control (MissionControl *mc); + + + + +static void +error_cb (MissionControl *mc, + GError *error, + gpointer data) +{ + if (error) { + gossip_debug (DEBUG_DOMAIN, "Error: %s", error->message); + } +} + +static void +service_ended_cb (MissionControl *mc, + gpointer user_data) +{ + gossip_debug (DEBUG_DOMAIN, "Mission Control stopped"); +} + +static void +account_enabled_cb (McAccountMonitor *monitor, + gchar *unique_name, + MissionControl *mc) +{ + gossip_debug (DEBUG_DOMAIN, "Account enabled: %s", unique_name); + start_mission_control (mc); +} + +static void +start_mission_control (MissionControl *mc) +{ + McPresence presence; + + presence = mission_control_get_presence_actual (mc, NULL); + + if (presence != MC_PRESENCE_UNSET && + presence != MC_PRESENCE_OFFLINE) { + /* MC is already running and online, nothing to do */ + return; + } + + gossip_debug (DEBUG_DOMAIN, "Starting Mission Control..."); + + /* FIXME: Save/Restore status message */ + mission_control_set_presence (mc, MC_PRESENCE_AVAILABLE, + NULL, + (McCallback) error_cb, + NULL); + + mission_control_connect_all_with_default_presence (mc, + (McCallback) error_cb, + NULL); +} + int main (int argc, char *argv[]) { - GMainLoop *main_loop; + GMainLoop *main_loop; + MissionControl *mc; + McAccountMonitor *monitor; g_type_init (); - empathy_session_connect (); - main_loop = g_main_loop_new (NULL, FALSE); + monitor = mc_account_monitor_new (); + mc = mission_control_new (tp_get_bus ()); + + g_signal_connect (monitor, "account-enabled", + G_CALLBACK (account_enabled_cb), + mc); + g_signal_connect (mc, "ServiceEnded", + G_CALLBACK (service_ended_cb), + NULL); + + start_mission_control (mc); + g_main_loop_run (main_loop); + g_object_unref (monitor); + g_object_unref (mc); + return 0; } |