[empathy] empathy-account-widget: replace the 'Connect' buton by a 'Save' one when we are offlineÂ



commit 51c871d17949a1366f09eb16e74aac0cae653086
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Mon Nov 2 16:33:15 2009 +0000

    empathy-account-widget: replace the 'Connect' buton by a 'Save' one when we are offline (#600427)

 libempathy-gtk/empathy-account-widget.c |   38 +++++++++++++++++++++++++++++-
 1 files changed, 36 insertions(+), 2 deletions(-)
---
diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c
index 293b2c7..3fc556a 100644
--- a/libempathy-gtk/empathy-account-widget.c
+++ b/libempathy-gtk/empathy-account-widget.c
@@ -35,6 +35,7 @@
 #endif
 
 #include <libempathy/empathy-utils.h>
+#include <libempathy/empathy-idle.h>
 
 #include <telepathy-glib/account.h>
 #include <telepathy-glib/connection-manager.h>
@@ -71,6 +72,8 @@ typedef struct {
    * modify it. When we are creating an account, this member is set to TRUE */
   gboolean creating_account;
 
+  EmpathyIdle *idle;
+
   gboolean dispose_run;
 } EmpathyAccountWidgetPriv;
 
@@ -1240,10 +1243,35 @@ do_constructed (GObject *obj)
   if (!priv->simple)
     {
       GtkWidget *hbox = gtk_hbox_new (TRUE, 3);
+      const gchar *apply_button_id;
 
       priv->cancel_button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
-      priv->apply_button = gtk_button_new_from_stock (
-        priv->creating_account ? GTK_STOCK_CONNECT : GTK_STOCK_APPLY);
+
+      if (priv->creating_account)
+        {
+          TpConnectionPresenceType state;
+          priv->idle = empathy_idle_dup_singleton ();
+
+          state = empathy_idle_get_state (priv->idle);
+
+          if (state > TP_CONNECTION_PRESENCE_TYPE_OFFLINE)
+            {
+              /* We are online, display a Connect button */
+              apply_button_id = GTK_STOCK_CONNECT;
+            }
+          else
+            {
+              /* We are offline, display a Save button */
+              apply_button_id = GTK_STOCK_SAVE;
+            }
+        }
+      else
+        {
+          /* We are editing an existing account, display an Apply button */
+          apply_button_id = GTK_STOCK_APPLY;
+        }
+
+      priv->apply_button = gtk_button_new_from_stock (apply_button_id);
 
 #ifdef HAVE_MOBLIN
       if (priv->creating_account)
@@ -1386,6 +1414,12 @@ do_dispose (GObject *obj)
       priv->settings = NULL;
     }
 
+  if (priv->idle != NULL)
+    {
+      g_object_unref (priv->idle);
+      priv->idle = NULL;
+    }
+
   if (G_OBJECT_CLASS (empathy_account_widget_parent_class)->dispose != NULL)
     G_OBJECT_CLASS (empathy_account_widget_parent_class)->dispose (obj);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]