]> git.0d.be Git - empathy.git/blobdiff - ubuntu-online-accounts/cc-plugins/account-plugins/empathy-accounts-plugin-widget.c
Merge branch 'gnome-3-8'
[empathy.git] / ubuntu-online-accounts / cc-plugins / account-plugins / empathy-accounts-plugin-widget.c
index 34729960c52a464f55a463f28d20447305f324d7..58074eecfa49d132e3ffc7cc6177d1749b55e595 100644 (file)
@@ -30,7 +30,7 @@
 #include <libaccounts-glib/ag-service.h>
 #include <libaccounts-glib/ag-account-service.h>
 
-#include <libempathy-gtk/empathy-account-widget.h>
+#include "empathy-account-widget.h"
 
 G_DEFINE_TYPE (EmpathyAccountsPluginWidget, empathy_accounts_plugin_widget, GTK_TYPE_BOX)
 
@@ -102,7 +102,7 @@ create_account_settings (AgAccount *account)
   AgService *service;
   GList *services;
   AgAccountService *account_service;
-  GValue v = G_VALUE_INIT;
+  GVariant *v;
   gchar *manager = NULL, *protocol = NULL;
   EmpathyAccountSettings *settings;
 
@@ -114,17 +114,15 @@ create_account_settings (AgAccount *account)
 
   account_service = ag_account_service_new (account, service);
 
-  g_value_init (&v, G_TYPE_STRING);
-  if (ag_account_service_get_value (account_service,
-        "telepathy/manager", &v) != AG_SETTING_SOURCE_NONE)
-    manager = g_value_dup_string (&v);
-  g_value_unset (&v);
+  v = ag_account_service_get_variant (account_service,
+        "telepathy/manager", NULL);
+  if (v != NULL)
+    manager = g_variant_dup_string (v, NULL);
 
-  g_value_init (&v, G_TYPE_STRING);
-  if (ag_account_service_get_value (account_service,
-        "telepathy/protocol", &v) != AG_SETTING_SOURCE_NONE)
-    protocol = g_value_dup_string (&v);
-  g_value_unset (&v);
+  v = ag_account_service_get_variant (account_service,
+        "telepathy/protocol", NULL);
+  if (v != NULL)
+    protocol = g_variant_dup_string (v, NULL);
 
   g_return_val_if_fail (manager != NULL, NULL);
   g_return_val_if_fail (protocol != NULL, NULL);
@@ -149,6 +147,12 @@ response_cb (GtkWidget *widget,
     gint response,
     EmpathyAccountsPluginWidget *self)
 {
+  if (!self->priv->account_widget)
+    {
+      // widget might not be ready yet
+      g_signal_emit (self, signals[SIG_DONE], 0);
+      return;
+    }
   if (response == GTK_RESPONSE_OK)
     {
       empathy_account_widget_apply_and_log_in (self->priv->account_widget);
@@ -281,8 +285,8 @@ maybe_add_account_widget (EmpathyAccountsPluginWidget *self)
     }
   else
     {
-      g_signal_connect_swapped (self->priv->settings, "notify::ready",
-          G_CALLBACK (add_account_widget), self);
+      tp_g_signal_connect_object (self->priv->settings, "notify::ready",
+          G_CALLBACK (add_account_widget), self, G_CONNECT_SWAPPED);
     }
 }