[empathy] accounts-dialog: don't add newly created account twice



commit 825666791c56b9050db4339f57474e2df698f891
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Tue Jan 24 12:03:23 2012 +0100

    accounts-dialog: don't add newly created account twice
    
    It used to be created once in the accounts_dialog_account_validity_changed_cb
    callback and once when the new account dialog is done.
    
    This change is actually good because now accounts are always added to the
    model using the same code path.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=668372

 src/empathy-accounts-dialog.c |   78 +++++------------------------------------
 1 files changed, 9 insertions(+), 69 deletions(-)
---
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index 29a61ff..cd3ab1f 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -161,21 +161,13 @@ enum {
 static EmpathyAccountSettings * accounts_dialog_model_get_selected_settings (
     EmpathyAccountsDialog *dialog);
 
-static gboolean accounts_dialog_get_settings_iter (
-    EmpathyAccountsDialog *dialog,
-    EmpathyAccountSettings *settings,
-    GtkTreeIter *iter);
-
 static void accounts_dialog_model_select_first (EmpathyAccountsDialog *dialog);
 
 static void accounts_dialog_update_settings (EmpathyAccountsDialog *dialog,
     EmpathyAccountSettings *settings);
 
-static void accounts_dialog_add (EmpathyAccountsDialog *dialog,
-    EmpathyAccountSettings *settings);
-
 static void accounts_dialog_model_set_selected (EmpathyAccountsDialog *dialog,
-    EmpathyAccountSettings *settings);
+    TpAccount *account);
 
 static void accounts_dialog_connection_changed_cb (TpAccount *account,
     guint old_status,
@@ -940,12 +932,16 @@ accounts_dialog_button_add_clicked_cb (GtkWidget *button,
   if (response == GTK_RESPONSE_OK)
     {
       EmpathyAccountSettings *settings;
+      TpAccount *account;
 
       settings = empathy_new_account_dialog_get_settings (
           EMPATHY_NEW_ACCOUNT_DIALOG (dialog));
 
-      accounts_dialog_add (self, settings);
-      accounts_dialog_model_set_selected (self, settings);
+      /* The newly created account has already been added by
+       * accounts_dialog_account_validity_changed_cb so we just
+       * have to select it. */
+      account = empathy_account_settings_get_account (settings);
+      accounts_dialog_model_set_selected (self, account);
     }
 
   gtk_widget_destroy (dialog);
@@ -1585,41 +1581,6 @@ accounts_dialog_model_setup (EmpathyAccountsDialog *dialog)
 }
 
 static gboolean
-accounts_dialog_get_settings_iter (EmpathyAccountsDialog *dialog,
-    EmpathyAccountSettings *settings,
-    GtkTreeIter *iter)
-{
-  GtkTreeView      *view;
-  GtkTreeModel     *model;
-  gboolean          ok;
-  EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
-
-  /* Update the status in the model */
-  view = GTK_TREE_VIEW (priv->treeview);
-  model = gtk_tree_view_get_model (view);
-
-  for (ok = gtk_tree_model_get_iter_first (model, iter);
-       ok;
-       ok = gtk_tree_model_iter_next (model, iter))
-    {
-      EmpathyAccountSettings *this_settings;
-      gboolean   equal;
-
-      gtk_tree_model_get (model, iter,
-          COL_ACCOUNT_SETTINGS, &this_settings,
-          -1);
-
-      equal = (this_settings == settings);
-      g_object_unref (this_settings);
-
-      if (equal)
-        return TRUE;
-    }
-
-  return FALSE;
-}
-
-static gboolean
 accounts_dialog_get_account_iter (EmpathyAccountsDialog *dialog,
     TpAccount *account,
     GtkTreeIter *iter)
@@ -1678,11 +1639,11 @@ select_and_scroll_to_iter (EmpathyAccountsDialog *dialog,
 
 static void
 accounts_dialog_model_set_selected (EmpathyAccountsDialog *dialog,
-    EmpathyAccountSettings *settings)
+    TpAccount *account)
 {
   GtkTreeIter       iter;
 
-  if (accounts_dialog_get_settings_iter (dialog, settings, &iter))
+  if (accounts_dialog_get_account_iter (dialog, account, &iter))
     select_and_scroll_to_iter (dialog, &iter);
 }
 
@@ -1781,27 +1742,6 @@ finally:
 }
 
 static void
-accounts_dialog_add (EmpathyAccountsDialog *dialog,
-    EmpathyAccountSettings *settings)
-{
-  GtkTreeModel       *model;
-  GtkTreeIter         iter;
-  const gchar        *name;
-  EmpathyAccountsDialogPriv *priv = GET_PRIV (dialog);
-
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->treeview));
-  name = empathy_account_settings_get_display_name (settings);
-
-  gtk_list_store_append (GTK_LIST_STORE (model), &iter);
-
-  gtk_list_store_set (GTK_LIST_STORE (model), &iter,
-      COL_NAME, name,
-      COL_STATUS, TP_CONNECTION_STATUS_DISCONNECTED,
-      COL_ACCOUNT_SETTINGS, settings,
-      -1);
-}
-
-static void
 accounts_dialog_connection_changed_cb (TpAccount *account,
     guint old_status,
     guint current,



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