aboutsummaryrefslogtreecommitdiffstats
path: root/launcher
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2007-05-01 20:18:26 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2007-05-01 20:18:26 +0800
commit8aaf6865026ead0f21a233a2897a89a7de332f5d (patch)
tree1eb2237d2e0284e26130361ec8ca68922af6e971 /launcher
parentb21403fed48c9b95d32a9b8968ac8f47135fd34f (diff)
downloadgsoc2013-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.c90
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;
}