summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-08-02 15:24:41 +0200
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-08-02 16:30:16 +0200
commit48cfae7dfe818c39835d609933e9db12a3bdc573 (patch)
tree6b4a130b939b11610f074d92ef48d462868a33e5
parentae5de32be39b2dbb6df88033e74ac792ad4ace84 (diff)
add tp_account_manager_can_set_default()
When creating/editing an account, the Ubuntu Online Accounts panel loads the relevant plugin dynamically. In order to work properly, this plugin has to define the default AM with some features. But tp_account_manager_set_default() can only be called once, later calls resulting in critical warnings. By using tp_account_manager_can_set_default() the plugin can check if the default AM has already be defined or not.
-rw-r--r--docs/reference/telepathy-glib-sections.txt1
-rw-r--r--telepathy-glib/account-manager.c17
-rw-r--r--telepathy-glib/account-manager.h4
3 files changed, 22 insertions, 0 deletions
diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index a41a3be1e..6fcc3b653 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -5310,6 +5310,7 @@ tp_account_manager_new
tp_account_manager_new_with_factory
tp_account_manager_init_known_interfaces
tp_account_manager_set_default
+tp_account_manager_can_set_default
tp_account_manager_dup
tp_account_manager_create_account_async
tp_account_manager_create_account_finish
diff --git a/telepathy-glib/account-manager.c b/telepathy-glib/account-manager.c
index 6d31a01da..8b9516de0 100644
--- a/telepathy-glib/account-manager.c
+++ b/telepathy-glib/account-manager.c
@@ -838,6 +838,23 @@ tp_account_manager_set_default (TpAccountManager *manager)
}
/**
+ * tp_account_manager_can_set_default:
+ *
+ * Check if tp_account_manager_set_default() has already successfully been
+ * called.
+ *
+ * Returns: %TRUE if tp_account_manager_set_default() has already successfully
+ * been called in this process, %FALSE otherwise.
+ *
+ * Since: UNRELEASED
+ */
+gboolean
+tp_account_manager_can_set_default (void)
+{
+ return starter_account_manager_proxy == NULL;
+}
+
+/**
* tp_account_manager_dup:
*
* Returns an account manager proxy on the D-Bus daemon on which this
diff --git a/telepathy-glib/account-manager.h b/telepathy-glib/account-manager.h
index 7c373ed8b..42b70b4be 100644
--- a/telepathy-glib/account-manager.h
+++ b/telepathy-glib/account-manager.h
@@ -82,6 +82,10 @@ TpAccountManager *tp_account_manager_new_with_factory (
_TP_AVAILABLE_IN_0_16
void tp_account_manager_set_default (TpAccountManager *manager);
+
+_TP_AVAILABLE_IN_UNRELEASED
+gboolean tp_account_manager_can_set_default (void);
+
TpAccountManager *tp_account_manager_dup (void) G_GNUC_WARN_UNUSED_RESULT;
void tp_account_manager_init_known_interfaces (void);