[telepathy-mission-control/master] libmcclient support for HasBeenOnline
Alberto Mardegan
alberto.mardegan at nokia.com
Fri Apr 17 01:42:56 PDT 2009
Add a mc_account_has_been_online() API, and a new GQuark for the flags-changed
signal.
---
doc/reference/libmcclient/libmcclient-sections.txt | 1 +
doc/reference/libmcclient/tmpl/mc-account.sgml | 9 +++++
libmcclient/mc-account.c | 33 ++++++++++++++++++++
libmcclient/mc-account.h | 1 +
libmcclient/mc-quark.list | 1 +
5 files changed, 45 insertions(+), 0 deletions(-)
diff --git a/doc/reference/libmcclient/libmcclient-sections.txt b/doc/reference/libmcclient/libmcclient-sections.txt
index a9da870..ed1150d 100644
--- a/doc/reference/libmcclient/libmcclient-sections.txt
+++ b/doc/reference/libmcclient/libmcclient-sections.txt
@@ -13,6 +13,7 @@ mc_account_get_display_name
mc_account_get_icon
mc_account_is_valid
mc_account_is_enabled
+mc_account_has_been_online
mc_account_connects_automatically
mc_account_get_nickname
mc_account_get_parameters
diff --git a/doc/reference/libmcclient/tmpl/mc-account.sgml b/doc/reference/libmcclient/tmpl/mc-account.sgml
index f80a9e6..dc65776 100644
--- a/doc/reference/libmcclient/tmpl/mc-account.sgml
+++ b/doc/reference/libmcclient/tmpl/mc-account.sgml
@@ -200,6 +200,15 @@ mc-account
@Returns:
+<!-- ##### FUNCTION mc_account_has_been_online ##### -->
+<para>
+
+</para>
+
+ at account:
+ at Returns:
+
+
<!-- ##### FUNCTION mc_account_connects_automatically ##### -->
<para>
diff --git a/libmcclient/mc-account.c b/libmcclient/mc-account.c
index f5f9b27..5ae78a8 100644
--- a/libmcclient/mc-account.c
+++ b/libmcclient/mc-account.c
@@ -56,6 +56,7 @@ struct _McAccountProps {
gchar *icon;
guint valid : 1;
guint enabled : 1;
+ guint has_been_online : 1;
guint connect_automatically : 1;
guint emit_changed : 1;
guint emit_connection_status_changed : 1;
@@ -448,6 +449,21 @@ update_enabled (const gchar *name, const GValue *value, gpointer user_data)
}
static void
+update_has_been_online (const gchar *name, const GValue *value,
+ gpointer user_data)
+{
+ McAccount *account = MC_ACCOUNT (user_data);
+ McAccountProps *props = account->priv->props;
+
+ props->has_been_online = g_value_get_boolean (value);
+ if (props->emit_changed)
+ g_signal_emit (account, _mc_account_signals[FLAG_CHANGED],
+ MC_QUARK_HAS_BEEN_ONLINE,
+ MC_QUARK_HAS_BEEN_ONLINE,
+ props->has_been_online);
+}
+
+static void
update_nickname (const gchar *name, const GValue *value, gpointer user_data)
{
McAccount *account = MC_ACCOUNT (user_data);
@@ -599,6 +615,7 @@ static const McIfaceProperty account_properties[] =
{ "Icon", "s", update_icon },
{ "Valid", "b", update_valid },
{ "Enabled", "b", update_enabled },
+ { "HasBeenOnline", "b", update_has_been_online },
{ "Nickname", "s", update_nickname },
{ "Parameters", "a{sv}", update_parameters },
{ "AutomaticPresence", "(uss)", update_automatic_presence },
@@ -845,6 +862,22 @@ mc_account_is_enabled (McAccount *account)
}
/**
+ * mc_account_has_been_online:
+ * @account: the #McAccount.
+ *
+ * Returns: %TRUE if the account has ever been online, %FALSE otherwise.
+ * mc_account_call_when_ready() must have been successfully invoked prior to
+ * calling this function.
+ */
+gboolean
+mc_account_has_been_online (McAccount *account)
+{
+ g_return_val_if_fail (MC_IS_ACCOUNT (account), FALSE);
+ if (G_UNLIKELY (!account->priv->props)) return FALSE;
+ return account->priv->props->has_been_online;
+}
+
+/**
* mc_account_connects_automatically:
* @account: the #McAccount.
*
diff --git a/libmcclient/mc-account.h b/libmcclient/mc-account.h
index 87babc5..40675f5 100644
--- a/libmcclient/mc-account.h
+++ b/libmcclient/mc-account.h
@@ -101,6 +101,7 @@ const gchar *mc_account_get_display_name (McAccount *account);
const gchar *mc_account_get_icon (McAccount *account);
gboolean mc_account_is_valid (McAccount *account);
gboolean mc_account_is_enabled (McAccount *account);
+gboolean mc_account_has_been_online (McAccount *account);
gboolean mc_account_connects_automatically (McAccount *account);
const gchar *mc_account_get_nickname (McAccount *account);
GHashTable *mc_account_get_parameters (McAccount *account);
diff --git a/libmcclient/mc-quark.list b/libmcclient/mc-quark.list
index 5c50abe..06085d5 100644
--- a/libmcclient/mc-quark.list
+++ b/libmcclient/mc-quark.list
@@ -7,4 +7,5 @@ icon icon
nickname nickname
enabled enabled
valid valid
+has_been_online has-been-online
connect_automatically connect-automatically
--
1.5.6.5
More information about the telepathy-commits
mailing list