]> git.0d.be Git - empathy.git/commitdiff
Request presence again when an account is enabled
authorCosimo Cecchi <cosimoc@gnome.org>
Tue, 25 Aug 2009 17:59:33 +0000 (19:59 +0200)
committerCosimo Cecchi <cosimoc@gnome.org>
Tue, 25 Aug 2009 19:12:24 +0000 (21:12 +0200)
libempathy/empathy-account.c

index 39b5d0f08c616dd3cb953d1410c26ccc5a96c541..7733f3556d01a453490a2de524d8da835b2a4650 100644 (file)
@@ -36,6 +36,7 @@
 #include <glib/gi18n-lib.h>
 
 #include "empathy-account.h"
+#include "empathy-account-manager.h"
 #include "empathy-utils.h"
 #include "empathy-marshal.h"
 
@@ -942,9 +943,13 @@ empathy_account_set_enabled_async (EmpathyAccount *account,
     gpointer user_data)
 {
   EmpathyAccountPriv *priv = GET_PRIV (account);
+  EmpathyAccountManager *acc_manager;
   GValue value = {0, };
   GSimpleAsyncResult *result = g_simple_async_result_new (G_OBJECT (account),
       callback, user_data, empathy_account_set_enabled_finish);
+  char *status = NULL;
+  char *status_message = NULL;
+  TpConnectionPresenceType presence;
 
   if (priv->enabled == enabled)
     {
@@ -952,6 +957,18 @@ empathy_account_set_enabled_async (EmpathyAccount *account,
       return;
     }
 
+  acc_manager = empathy_account_manager_dup_singleton ();
+  presence = empathy_account_manager_get_requested_global_presence
+    (acc_manager, &status, &status_message);
+
+  if (presence != TP_CONNECTION_PRESENCE_TYPE_UNSET)
+    empathy_account_request_presence (account, presence, status,
+        status_message);
+
+  g_object_unref (acc_manager);
+  g_free (status);
+  g_free (status_message);
+
   g_value_init (&value, G_TYPE_BOOLEAN);
   g_value_set_boolean (&value, enabled);