]> git.0d.be Git - empathy.git/commitdiff
If display name of the selected account changes, update the label.
authorXavier Claessens <xclaesse@src.gnome.org>
Mon, 18 Aug 2008 21:36:53 +0000 (21:36 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Mon, 18 Aug 2008 21:36:53 +0000 (21:36 +0000)
svn path=/trunk/; revision=1349

src/empathy-accounts-dialog.c

index 33d824c11a996af70372a590914b3b231318d90c..a9666f5752842cf824a38b1a24b4a23c3cd1fe5f 100644 (file)
@@ -150,13 +150,25 @@ static void       accounts_dialog_response_cb               (GtkWidget
 static void       accounts_dialog_destroy_cb                (GtkWidget                *widget,
                                                             EmpathyAccountsDialog    *dialog);
 
+static void
+accounts_dialog_update_name_label (EmpathyAccountsDialog *dialog,
+                                  McAccount             *account)
+{
+       gchar *text;
+
+       text = g_markup_printf_escaped ("<big><b>%s</b></big>",
+                       mc_account_get_display_name (account));
+       gtk_label_set_markup (GTK_LABEL (dialog->label_name), text);
+
+       g_free (text);
+}
+
 static void
 accounts_dialog_update_account (EmpathyAccountsDialog *dialog,
                                McAccount            *account)
 {
        McProfile   *profile;
        const gchar *config_ui;
-       gchar       *text;
 
        if (!account) {
                GtkTreeView  *view;
@@ -254,11 +266,8 @@ accounts_dialog_update_account (EmpathyAccountsDialog *dialog,
        gtk_widget_set_tooltip_text (dialog->image_type,
                                     mc_profile_get_display_name (profile));
 
-       text = g_markup_printf_escaped ("<big><b>%s</b></big>",
-                       mc_account_get_display_name (account));
-       gtk_label_set_markup (GTK_LABEL (dialog->label_name), text);
+       accounts_dialog_update_name_label (dialog, account);
 
-       g_free (text);
        g_object_unref (profile);
 }
 
@@ -815,6 +824,27 @@ accounts_dialog_account_enabled_cb (McAccountMonitor      *monitor,
        g_object_unref (account);
 }
 
+static void
+accounts_dialog_account_changed_cb (McAccountMonitor       *monitor,
+                                   gchar                  *unique_name,
+                                   EmpathyAccountsDialog  *dialog)
+{
+
+       McAccount *account;
+       McAccount *selected_account;
+
+       account = mc_account_lookup (unique_name);
+       if (!account) {
+               return;
+       }
+
+       accounts_dialog_add_or_update_account (dialog, account);
+       selected_account = accounts_dialog_model_get_selected (dialog);
+       if (empathy_account_equal (account, selected_account)) {
+               accounts_dialog_update_name_label (dialog, account);
+       }
+}
+
 static void
 accounts_dialog_button_create_clicked_cb (GtkWidget             *button,
                                          EmpathyAccountsDialog  *dialog)
@@ -994,6 +1024,9 @@ accounts_dialog_destroy_cb (GtkWidget            *widget,
        g_signal_handlers_disconnect_by_func (dialog->monitor,
                                              accounts_dialog_account_enabled_cb,
                                              dialog);
+       g_signal_handlers_disconnect_by_func (dialog->monitor,
+                                             accounts_dialog_account_changed_cb,
+                                             dialog);
        empathy_disconnect_account_status_changed (dialog->token);
 
        /* Delete incomplete accounts */
@@ -1101,6 +1134,9 @@ empathy_accounts_dialog_show (GtkWindow *parent,
        g_signal_connect (dialog->monitor, "account-disabled",
                          G_CALLBACK (accounts_dialog_account_enabled_cb),
                          dialog);
+       g_signal_connect (dialog->monitor, "account-changed",
+                         G_CALLBACK (accounts_dialog_account_changed_cb),
+                         dialog);
        dialog->token = empathy_connect_to_account_status_changed (dialog->mc,
                                                   G_CALLBACK (accounts_dialog_status_changed_cb),
                                                   dialog, NULL);