From 51c871d17949a1366f09eb16e74aac0cae653086 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Mon, 2 Nov 2009 16:33:15 +0000 Subject: =?UTF-8?q?empathy-account-widget:=C2=A0replace=C2=A0the=C2=A0'Con?= =?UTF-8?q?nect'=C2=A0buton=C2=A0by=C2=A0a=C2=A0'Save'=C2=A0one=C2=A0when?= =?UTF-8?q?=C2=A0we=C2=A0are=C2=A0offline=C2=A0(#600427)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libempathy-gtk/empathy-account-widget.c | 38 +++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) (limited to 'libempathy-gtk/empathy-account-widget.c') diff --git a/libempathy-gtk/empathy-account-widget.c b/libempathy-gtk/empathy-account-widget.c index 293b2c711..3fc556af8 100644 --- a/libempathy-gtk/empathy-account-widget.c +++ b/libempathy-gtk/empathy-account-widget.c @@ -35,6 +35,7 @@ #endif #include +#include #include #include @@ -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); } -- cgit v1.2.3