]> git.0d.be Git - empathy.git/commitdiff
factor out empathy_connect_new_account
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 2 Mar 2010 09:25:46 +0000 (10:25 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 2 Mar 2010 15:37:32 +0000 (16:37 +0100)
libempathy-gtk/empathy-account-widget.c
libempathy/empathy-utils.c
libempathy/empathy-utils.h

index a7b272c584166cc8239dc4bb95770141333dba84..8ce6b5f5218614a2f3df3cf5b9b479c70ae7e4b2 100644 (file)
@@ -668,9 +668,6 @@ account_widget_account_enabled_cb (GObject *source_object,
   TpAccount *account = TP_ACCOUNT (source_object);
   EmpathyAccountWidget *widget = EMPATHY_ACCOUNT_WIDGET (user_data);
   EmpathyAccountWidgetPriv *priv = GET_PRIV (widget);
-  TpConnectionPresenceType presence;
-  gchar *message = NULL;
-  gchar *status = NULL;
 
   tp_account_set_enabled_finish (account, res, &error);
 
@@ -681,34 +678,11 @@ account_widget_account_enabled_cb (GObject *source_object,
     }
   else
     {
-      /* only force presence if presence was offline, unknown or unset */
-      presence = tp_account_get_requested_presence (account, NULL, NULL);
-      switch (presence)
-        {
-        case TP_CONNECTION_PRESENCE_TYPE_OFFLINE:
-        case TP_CONNECTION_PRESENCE_TYPE_UNKNOWN:
-        case TP_CONNECTION_PRESENCE_TYPE_UNSET:
-          presence = tp_account_manager_get_most_available_presence (
-              priv->account_manager, &status, &message);
-
-          if (presence == TP_CONNECTION_PRESENCE_TYPE_OFFLINE)
-            /* Global presence is offline; we force it so user doesn't have to
-             * manually change the presence to connect his new account. */
-            presence = TP_CONNECTION_PRESENCE_TYPE_AVAILABLE;
-
-          tp_account_request_presence_async (account, presence,
-              status, NULL, NULL, NULL);
-          break;
-        default:
-          /* do nothing if the presence is not offline */
-          break;
-        }
+      empathy_connect_new_account (account, priv->account_manager);
     }
 
   /* unref widget - part of the workaround */
   g_object_unref (widget);
-  g_free (message);
-  g_free (status);
 }
 
 static void
index fedb14b9893562049c12293c332841f415ab2a7c..7d169ff94d55d1c465e432c17f4ada1a042e3152 100644 (file)
@@ -606,3 +606,40 @@ empathy_account_manager_get_accounts_connected (gboolean *connecting)
 
   return out_connected;
 }
+
+/* Change the RequestedPresence of a newly created account to ensure that it
+ * is actually connected. */
+void
+empathy_connect_new_account (TpAccount *account,
+    TpAccountManager *account_manager)
+{
+  TpConnectionPresenceType presence;
+  gchar *status, *message;
+
+  /* only force presence if presence was offline, unknown or unset */
+  presence = tp_account_get_requested_presence (account, NULL, NULL);
+  switch (presence)
+    {
+      case TP_CONNECTION_PRESENCE_TYPE_OFFLINE:
+      case TP_CONNECTION_PRESENCE_TYPE_UNKNOWN:
+      case TP_CONNECTION_PRESENCE_TYPE_UNSET:
+        presence = tp_account_manager_get_most_available_presence (
+            account_manager, &status, &message);
+
+        if (presence == TP_CONNECTION_PRESENCE_TYPE_OFFLINE)
+          /* Global presence is offline; we force it so user doesn't have to
+           * manually change the presence to connect his new account. */
+          presence = TP_CONNECTION_PRESENCE_TYPE_AVAILABLE;
+
+        tp_account_request_presence_async (account, presence,
+            status, NULL, NULL, NULL);
+
+        g_free (status);
+        g_free (message);
+        break;
+
+       default:
+        /* do nothing if the presence is not offline */
+        break;
+    }
+}
index 0fc6fc2a9773282116784640400b9e414304aeca..0ab9052827cc558876c1eb62250fa82a92d69c98 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <libxml/parser.h>
 #include <libxml/tree.h>
+#include <telepathy-glib/account-manager.h>
 
 #include "empathy-contact.h"
 
@@ -90,6 +91,9 @@ TpAccount * empathy_get_account_for_connection (TpConnection *connection);
 
 gboolean empathy_account_manager_get_accounts_connected (gboolean *connecting);
 
+void empathy_connect_new_account (TpAccount *account,
+    TpAccountManager *account_manager);
+
 G_END_DECLS
 
 #endif /*  __EMPATHY_UTILS_H__ */