aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-10-14 07:57:07 +0800
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-10-15 01:07:49 +0800
commit8c725d53a09f837b2b8980961c6c2f972b7c3bf6 (patch)
treecd08750eb23089fffc118fae486946b14cdfbc0a
parent6248651c2f485427863a2e59278ff842e843cf94 (diff)
downloadgsoc2013-empathy-8c725d53a09f837b2b8980961c6c2f972b7c3bf6.tar
gsoc2013-empathy-8c725d53a09f837b2b8980961c6c2f972b7c3bf6.tar.gz
gsoc2013-empathy-8c725d53a09f837b2b8980961c6c2f972b7c3bf6.tar.bz2
gsoc2013-empathy-8c725d53a09f837b2b8980961c6c2f972b7c3bf6.tar.lz
gsoc2013-empathy-8c725d53a09f837b2b8980961c6c2f972b7c3bf6.tar.xz
gsoc2013-empathy-8c725d53a09f837b2b8980961c6c2f972b7c3bf6.tar.zst
gsoc2013-empathy-8c725d53a09f837b2b8980961c6c2f972b7c3bf6.zip
Let empathy -a show the assistant if applicable
-rw-r--r--src/empathy.c63
1 files changed, 52 insertions, 11 deletions
diff --git a/src/empathy.c b/src/empathy.c
index 958646f86..c80953e91 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -81,6 +81,7 @@
#define COMMAND_ACCOUNTS_DIALOG 1
+static gboolean account_dialog_only = FALSE;
static gboolean start_hidden = FALSE;
static void
@@ -449,6 +450,50 @@ migrate_config_to_xdg_dir (void)
g_free (old_dir);
}
+static void
+do_show_accounts_ui (GtkWindow *window, EmpathyAccountManager *manager)
+{
+
+ GtkWidget *ui;
+
+ if (has_non_salut_accounts (manager))
+ ui = empathy_accounts_dialog_show (window, NULL);
+ else
+ ui = empathy_account_assistant_show (window);
+
+ if (account_dialog_only)
+ g_signal_connect (ui, "destroy",
+ G_CALLBACK (gtk_main_quit), NULL);
+}
+
+static void
+account_manager_ready_for_accounts_cb (EmpathyAccountManager *manager,
+ GParamSpec *spec,
+ gpointer user_data)
+{
+ if (!empathy_account_manager_is_ready (manager))
+ return;
+
+ do_show_accounts_ui (user_data, manager);
+}
+
+static void
+show_accounts_ui (GtkWindow *window)
+{
+ EmpathyAccountManager *manager;
+
+ manager = empathy_account_manager_dup_singleton ();
+ if (empathy_account_manager_is_ready (manager))
+ {
+ do_show_accounts_ui (window, manager);
+ }
+ else
+ {
+ g_signal_connect (manager, "notify::ready",
+ G_CALLBACK (account_manager_ready_for_accounts_cb), window);
+ }
+}
+
static UniqueResponse
unique_app_message_cb (UniqueApp *unique_app,
gint command,
@@ -456,14 +501,14 @@ unique_app_message_cb (UniqueApp *unique_app,
guint timestamp,
gpointer user_data)
{
- GtkWidget *window = user_data;
+ GtkWindow *window = user_data;
DEBUG ("Other instance launched, presenting the main window. "
"Command=%d, timestamp %u", command, timestamp);
if (command == COMMAND_ACCOUNTS_DIALOG)
{
- empathy_accounts_dialog_show (GTK_WINDOW (window), NULL);
+ show_accounts_ui (window);
}
else
{
@@ -749,7 +794,6 @@ main (int argc, char *argv[])
EmpathyConnectivity *connectivity;
gboolean autoconnect = TRUE;
gboolean no_connect = FALSE;
- gboolean accounts_dialog = FALSE;
GError *error = NULL;
TpDBusDaemon *dbus_daemon;
UniqueApp *unique_app;
@@ -766,7 +810,7 @@ main (int argc, char *argv[])
N_("Don't show the contact list on startup"),
NULL },
{ "accounts", 'a',
- 0, G_OPTION_ARG_NONE, &accounts_dialog,
+ 0, G_OPTION_ARG_NONE, &account_dialog_only,
N_("Show the accounts dialog"),
NULL },
{ "version", 'v',
@@ -814,7 +858,7 @@ main (int argc, char *argv[])
if (unique_app_is_running (unique_app))
{
- unique_app_send_message (unique_app, accounts_dialog ?
+ unique_app_send_message (unique_app, account_dialog_only ?
COMMAND_ACCOUNTS_DIALOG : UNIQUE_ACTIVATE, NULL);
g_object_unref (unique_app);
@@ -841,16 +885,13 @@ main (int argc, char *argv[])
g_clear_error (&error);
}
- if (accounts_dialog)
+ if (account_dialog_only)
{
- GtkWidget *dialog;
-
- dialog = empathy_accounts_dialog_show (NULL, NULL);
- g_signal_connect (dialog, "destroy",
- G_CALLBACK (gtk_main_quit), NULL);
+ show_accounts_ui (NULL);
gtk_main ();
return 0;
+
}
notify_init (_(PACKAGE_NAME));