]> git.0d.be Git - empathy.git/commitdiff
empathy-account-widget: update apply button when our state changes
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Mon, 2 Nov 2009 16:33:49 +0000 (16:33 +0000)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 3 Nov 2009 12:43:57 +0000 (12:43 +0000)
libempathy-gtk/empathy-account-widget.c

index 3fc556af800cd338bb17890050b6b3f7d28ba48e..af9fbb026b8a0ffcf62a4e111c4f51f6a2468811 100644 (file)
@@ -1147,6 +1147,26 @@ do_get_property (GObject *object,
     }
 }
 
+static void
+idle_state_change_cb (EmpathyIdle *idle,
+    GParamSpec *spec,
+    EmpathyAccountWidget *self)
+{
+  EmpathyAccountWidgetPriv *priv = GET_PRIV (self);
+  TpConnectionPresenceType state;
+
+  state = empathy_idle_get_state (priv->idle);
+
+  if (state > TP_CONNECTION_PRESENCE_TYPE_OFFLINE)
+    {
+      g_object_set (priv->apply_button, "label", GTK_STOCK_CONNECT, NULL);
+    }
+  else
+    {
+      g_object_set (priv->apply_button, "label", GTK_STOCK_APPLY, NULL);
+    }
+}
+
 #define WIDGET(cm, proto) \
   { #cm, #proto, "empathy-account-widget-"#proto".ui", \
     account_widget_build_##proto }
@@ -1252,6 +1272,9 @@ do_constructed (GObject *obj)
           TpConnectionPresenceType state;
           priv->idle = empathy_idle_dup_singleton ();
 
+          empathy_signal_connect_weak (priv->idle, "notify::state",
+              G_CALLBACK (idle_state_change_cb), obj);
+
           state = empathy_idle_get_state (priv->idle);
 
           if (state > TP_CONNECTION_PRESENCE_TYPE_OFFLINE)