[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