]> git.0d.be Git - empathy.git/commitdiff
show the infobar when not connected
authorFelix Kaser <f.kaser@gmx.net>
Wed, 2 Dec 2009 22:55:08 +0000 (23:55 +0100)
committerFelix Kaser <f.kaser@gmx.net>
Tue, 15 Dec 2009 12:52:43 +0000 (13:52 +0100)
fixes bug #599153

src/empathy-accounts-dialog.c

index 9bad1d9b7efd446faf51c1d73154b7b8d3ae4f73..5b68226a898fc7a5408b06a1fed5945190e66010 100644 (file)
@@ -169,6 +169,38 @@ accounts_dialog_update_name_label (EmpathyAccountsDialog *dialog,
   g_free (text);
 }
 
+static void
+accounts_dialog_update_status_infobar (EmpathyAccountsDialog *dialog,
+    guint status)
+{
+  EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
+
+  /* don't show the infobar if account is connected */
+  if (status == TP_CONNECTION_STATUS_CONNECTED)
+    {
+      gtk_widget_hide (priv->infobar);
+      return;
+    }
+
+  switch (status)
+    {
+      case TP_CONNECTION_STATUS_CONNECTING:
+        gtk_label_set_text (GTK_LABEL (priv->label_status),
+            _("Connecting..."));
+        break;
+      case TP_CONNECTION_STATUS_DISCONNECTED:
+        gtk_label_set_text (GTK_LABEL (priv->label_status),
+            _("Disconnected - REASON"));
+        break;
+      default:
+        gtk_label_set_text (GTK_LABEL (priv->label_status),
+            _("Unknown Status"));
+    }
+
+  gtk_widget_show (priv->label_status);
+  gtk_widget_show (priv->infobar);
+}
+
 static void
 empathy_account_dialog_widget_cancelled_cb (
     EmpathyAccountWidget *widget_object,
@@ -275,6 +307,10 @@ account_dialog_create_settings_widget (EmpathyAccountsDialog *dialog,
 
   accounts_dialog_update_name_label (dialog,
       empathy_account_settings_get_display_name (settings));
+
+  accounts_dialog_update_status_infobar (dialog,
+      tp_account_get_connection_status (
+      empathy_account_settings_get_account (settings), NULL));
 }
 
 static void
@@ -1131,6 +1167,9 @@ accounts_dialog_connection_changed_cb (TpAccount *account,
   gboolean      found;
   EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
 
+  /* Update the status-infobar in the details view*/
+  accounts_dialog_update_status_infobar (dialog, current);
+
   /* Update the status in the model */
   model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->treeview));