aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-accounts.c
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>2010-03-02 02:59:38 +0800
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>2010-03-02 02:59:42 +0800
commitb0de7c5d5d8c93dd7b74a77b4892c331f37f5441 (patch)
tree8c63a77afe624bb20a49c6afd6a86e47704e6a5d /src/empathy-accounts.c
parent886357ee6af17fe37523337209a09aa6f3112604 (diff)
downloadgsoc2013-empathy-b0de7c5d5d8c93dd7b74a77b4892c331f37f5441.tar
gsoc2013-empathy-b0de7c5d5d8c93dd7b74a77b4892c331f37f5441.tar.gz
gsoc2013-empathy-b0de7c5d5d8c93dd7b74a77b4892c331f37f5441.tar.bz2
gsoc2013-empathy-b0de7c5d5d8c93dd7b74a77b4892c331f37f5441.tar.lz
gsoc2013-empathy-b0de7c5d5d8c93dd7b74a77b4892c331f37f5441.tar.xz
gsoc2013-empathy-b0de7c5d5d8c93dd7b74a77b4892c331f37f5441.tar.zst
gsoc2013-empathy-b0de7c5d5d8c93dd7b74a77b4892c331f37f5441.zip
Make the empathy-account code be slightly more streamlined
On every run of the accounts UI we should try to import MC4 accounts (if they weren't imported already). Also replace the --try-import option with --if-needed to better document the fact that it will only display the UI if needed.
Diffstat (limited to 'src/empathy-accounts.c')
-rw-r--r--src/empathy-accounts.c85
1 files changed, 47 insertions, 38 deletions
diff --git a/src/empathy-accounts.c b/src/empathy-accounts.c
index 942f6a475..f924acc73 100644
--- a/src/empathy-accounts.c
+++ b/src/empathy-accounts.c
@@ -53,50 +53,58 @@
#define EMPATHY_ACCOUNTS_DBUS_NAME "org.gnome.EmpathyAccounts"
-static gboolean try_import = FALSE;
+static gboolean only_if_needed = FALSE;
static gboolean hidden = FALSE;
static gchar *selected_account_name = NULL;
static void
-account_manager_ready_for_assistant_cb (GObject *source_object,
+account_prepare_cb (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
{
- TpAccountManager *account_mgr = TP_ACCOUNT_MANAGER (source_object);
+ TpAccountManager *manager = TP_ACCOUNT_MANAGER (user_data);
+ TpAccount *account = TP_ACCOUNT (source_object);
GError *error = NULL;
- if (!tp_account_manager_prepare_finish (account_mgr, result, &error))
+ if (!tp_account_prepare_finish (account, result, &error))
{
- DEBUG ("Failed to prepare account manager: %s", error->message);
+ DEBUG ("Failed to prepare account: %s", error->message);
g_error_free (error);
- return;
+
+ account = NULL;
}
- g_object_set_data (G_OBJECT (account_mgr), "assistant-destroy-callback",
+ empathy_accounts_show_accounts_ui (manager, account,
G_CALLBACK (gtk_main_quit));
+}
- empathy_accounts_manager_ready_for_show_assistant (account_mgr, hidden);
+static void
+maybe_show_accounts_ui (TpAccountManager *manager)
+{
+ if (hidden ||
+ (only_if_needed && empathy_accounts_has_non_salut_accounts (manager)))
+ gtk_main_quit ();
+ else
+ empathy_accounts_show_accounts_ui (manager, NULL, gtk_main_quit);
}
static void
-account_prepare_cb (GObject *source_object,
+cm_manager_prepared_cb (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
- TpAccountManager *manager = TP_ACCOUNT_MANAGER (user_data);
- TpAccount *account = TP_ACCOUNT (source_object);
- GError *error = NULL;
-
- if (!tp_account_prepare_finish (account, result, &error))
+ if (!empathy_connection_managers_prepare_finish (
+ EMPATHY_CONNECTION_MANAGERS (source), result, NULL))
{
- DEBUG ("Failed to prepare account: %s", error->message);
- g_error_free (error);
-
- account = NULL;
+ g_warning ("Failed to prepare connection managers singleton");
+ gtk_main_quit ();
+ return;
}
- empathy_accounts_show_accounts_ui (manager, account,
- G_CALLBACK (gtk_main_quit));
+ empathy_accounts_import (TP_ACCOUNT_MANAGER (user_data),
+ EMPATHY_CONNECTION_MANAGERS (source));
+
+ maybe_show_accounts_ui (TP_ACCOUNT_MANAGER (user_data));
}
static void
@@ -115,7 +123,7 @@ account_manager_ready_for_accounts_cb (GObject *source_object,
return;
}
- if (account_id)
+ if (account_id != NULL)
{
gchar *account_path;
TpAccount *account = NULL;
@@ -143,8 +151,18 @@ account_manager_ready_for_accounts_cb (GObject *source_object,
}
else
{
- empathy_accounts_show_accounts_ui (manager, NULL,
- G_CALLBACK (gtk_main_quit));
+ if (empathy_import_mc4_has_imported ())
+ {
+ maybe_show_accounts_ui (manager);
+ }
+ else
+ {
+ EmpathyConnectionManagers *cm_mgr =
+ empathy_connection_managers_dup_singleton ();
+
+ empathy_connection_managers_prepare_async (
+ cm_mgr, cm_manager_prepared_cb, manager);
+ }
}
}
@@ -191,15 +209,14 @@ main (int argc, char *argv[])
GOptionContext *optcontext;
GOptionEntry options[] = {
- { "import", 'i',
- G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &try_import,
- N_("Try to import any recognized accounts and display an assistant if "
- "that fails"),
- NULL },
{ "hidden", 'h',
0, G_OPTION_ARG_NONE, &hidden,
N_("Don't display any dialogs; do any work (eg, importing) and exit"),
NULL },
+ { "if-needed", 'n',
+ 0, G_OPTION_ARG_NONE, &only_if_needed,
+ N_("Don't display any dialogs if there are any non-salut accounts"),
+ NULL },
{ "select-account", 's',
G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_STRING, &selected_account_name,
N_("Initially select given account (eg, "
@@ -264,16 +281,8 @@ main (int argc, char *argv[])
account_manager = tp_account_manager_dup ();
- if (try_import)
- {
- tp_account_manager_prepare_async (account_manager, NULL,
- account_manager_ready_for_assistant_cb, NULL);
- }
- else
- {
- tp_account_manager_prepare_async (account_manager, NULL,
- account_manager_ready_for_accounts_cb, selected_account_name);
- }
+ tp_account_manager_prepare_async (account_manager, NULL,
+ account_manager_ready_for_accounts_cb, selected_account_name);
g_signal_connect (unique_app, "message-received",
G_CALLBACK (unique_app_message_cb), NULL);