aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-08-19 05:36:49 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-08-19 05:36:49 +0800
commitba0ca2274b9aa0a41c3b60a6bfd862aa385c3b45 (patch)
tree8841ffa1bf34b903705d40241ad69844de73c763
parent55e9b194df4e863c4af4a0c4874d00d1e82fa8c5 (diff)
downloadgsoc2013-empathy-ba0ca2274b9aa0a41c3b60a6bfd862aa385c3b45.tar
gsoc2013-empathy-ba0ca2274b9aa0a41c3b60a6bfd862aa385c3b45.tar.gz
gsoc2013-empathy-ba0ca2274b9aa0a41c3b60a6bfd862aa385c3b45.tar.bz2
gsoc2013-empathy-ba0ca2274b9aa0a41c3b60a6bfd862aa385c3b45.tar.lz
gsoc2013-empathy-ba0ca2274b9aa0a41c3b60a6bfd862aa385c3b45.tar.xz
gsoc2013-empathy-ba0ca2274b9aa0a41c3b60a6bfd862aa385c3b45.tar.zst
gsoc2013-empathy-ba0ca2274b9aa0a41c3b60a6bfd862aa385c3b45.zip
If adding a an account that is already in the treeview, simply update values. That happens when an account becomes valid
svn path=/trunk/; revision=1346
-rw-r--r--src/empathy-accounts-dialog.c37
1 files changed, 17 insertions, 20 deletions
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index 12cc00a58..977aeefbc 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -114,7 +114,7 @@ static void accounts_dialog_model_set_selected (EmpathyAccountsDial
static gboolean accounts_dialog_model_remove_selected (EmpathyAccountsDialog *dialog);
static void accounts_dialog_model_selection_changed (GtkTreeSelection *selection,
EmpathyAccountsDialog *dialog);
-static void accounts_dialog_add_account (EmpathyAccountsDialog *dialog,
+static void accounts_dialog_add_or_update_account (EmpathyAccountsDialog *dialog,
McAccount *account);
static void accounts_dialog_account_added_cb (McAccountMonitor *monitor,
gchar *unique_name,
@@ -596,8 +596,8 @@ accounts_dialog_model_selection_changed (GtkTreeSelection *selection,
}
static void
-accounts_dialog_add_account (EmpathyAccountsDialog *dialog,
- McAccount *account)
+accounts_dialog_add_or_update_account (EmpathyAccountsDialog *dialog,
+ McAccount *account)
{
GtkTreeModel *model;
GtkTreeIter iter;
@@ -605,26 +605,23 @@ accounts_dialog_add_account (EmpathyAccountsDialog *dialog,
const gchar *name;
gboolean enabled;
- if (accounts_dialog_get_account_iter (dialog, account, &iter)) {
- return;
- }
-
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview));
status = mission_control_get_connection_status (dialog->mc, account, NULL);
name = mc_account_get_display_name (account);
enabled = mc_account_is_enabled (account);
- g_return_if_fail (name != NULL);
+ if (!accounts_dialog_get_account_iter (dialog, account, &iter)) {
+ DEBUG ("Adding new account");
+ gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+ }
- DEBUG ("Adding new account: %s", name);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ COL_ENABLED, enabled,
+ COL_NAME, name,
+ COL_STATUS, status,
+ COL_ACCOUNT_POINTER, account,
+ -1);
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->treeview));
- gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter,
- -1,
- COL_ENABLED, enabled,
- COL_NAME, name,
- COL_STATUS, status,
- COL_ACCOUNT_POINTER, account,
- -1);
accounts_dialog_status_changed_cb (dialog->mc,
status,
MC_PRESENCE_UNSET,
@@ -641,7 +638,7 @@ accounts_dialog_account_added_cb (McAccountMonitor *monitor,
McAccount *account;
account = mc_account_lookup (unique_name);
- accounts_dialog_add_account (dialog, account);
+ accounts_dialog_add_or_update_account (dialog, account);
g_object_unref (account);
}
@@ -811,7 +808,7 @@ accounts_dialog_button_create_clicked_cb (GtkWidget *button,
}
}
- accounts_dialog_add_account (dialog, account);
+ accounts_dialog_add_or_update_account (dialog, account);
accounts_dialog_model_set_selected (dialog, account);
g_object_unref (account);
@@ -1077,7 +1074,7 @@ empathy_accounts_dialog_show (GtkWindow *parent,
/* Add existing accounts */
accounts = mc_accounts_list ();
for (l = accounts; l; l = l->next) {
- accounts_dialog_add_account (dialog, l->data);
+ accounts_dialog_add_or_update_account (dialog, l->data);
g_object_unref (l->data);
}
g_list_free (accounts);