[gnome-system-tools] Update users list after changing Real name
- From: Milan Bouchet-Valat <milanbv src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-system-tools] Update users list after changing Real name
- Date: Mon, 25 Jan 2010 22:37:37 +0000 (UTC)
commit 2f4c4ea281cd984631d56fbe87d07ef0d3dc7e03
Author: Milan Bouchet-Valat <nalimilan club fr>
Date: Sun Jan 17 21:51:18 2010 +0100
Update users list after changing Real name
We need to update the Real name shown in the list. Add a more generic function users_table_update_current() that simply resets all settings for the current user.
src/users/user-settings.c | 6 ++++++
src/users/users-table.c | 34 +++++++++++++++++++++++++++++++---
src/users/users-table.h | 2 ++
3 files changed, 39 insertions(+), 3 deletions(-)
---
diff --git a/src/users/user-settings.c b/src/users/user-settings.c
index f9ab4cb..723ef7a 100644
--- a/src/users/user-settings.c
+++ b/src/users/user-settings.c
@@ -1038,6 +1038,7 @@ on_edit_user_name (GtkButton *button, gpointer user_data)
GtkWidget *user_name_entry;
GtkWidget *face_image;
GtkWidget *name_label;
+ GtkWidget *user_settings_real_name;
OobsUser *user;
const char *fullname;
gboolean is_self;
@@ -1060,6 +1061,8 @@ on_edit_user_name (GtkButton *button, gpointer user_data)
user_name_entry = gst_dialog_get_widget (tool->main_dialog, "user_name_entry");
face_image = gst_dialog_get_widget (tool->main_dialog, "user_name_face");
name_label = gst_dialog_get_widget (tool->main_dialog, "user_name_name");
+ user_settings_real_name = gst_dialog_get_widget (tool->main_dialog,
+ "user_settings_real_name");
fullname = oobs_user_get_full_name (user);
gtk_entry_set_text (GTK_ENTRY (user_name_entry), fullname);
@@ -1079,6 +1082,9 @@ on_edit_user_name (GtkButton *button, gpointer user_data)
gst_tool_commit (tool, GST_USERS_TOOL (tool)->self_config);
else
gst_tool_commit (tool, OOBS_OBJECT (user));
+
+ gtk_label_set_text (GTK_LABEL (user_settings_real_name), fullname);
+ users_table_update_current ();
}
g_object_unref (user);
diff --git a/src/users/users-table.c b/src/users/users-table.c
index f39c5ff..f5d0540 100644
--- a/src/users/users-table.c
+++ b/src/users/users-table.c
@@ -237,6 +237,36 @@ users_table_select_first (void)
gtk_tree_selection_select_path (selection, first_user);
}
+void
+users_table_update_current ()
+{
+ GtkWidget *users_table = gst_dialog_get_widget (GST_TOOL (tool)->main_dialog, "users_table");
+ GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (users_table));
+ GtkTreeModel *filter_model;
+ GList *selected;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+ GtkTreeIter filter_iter;
+ OobsUser *user;
+
+ selected = gtk_tree_selection_get_selected_rows (selection, &filter_model);
+ g_assert (selected != NULL);
+
+ /* Only choose the first selected user */
+ path = (GtkTreePath *) selected->data;
+
+ gtk_tree_model_get_iter (filter_model, &filter_iter, path);
+ g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL);
+ g_list_free (selected);
+
+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (filter_model),
+ &iter, &filter_iter);
+
+ user = users_table_get_current ();
+ users_table_set_user (user, &iter);
+ g_object_unref (user);
+}
+
/*
* Convenience function to get the first selected user of the table,
* i.e. the one whose settings are currently shown.
@@ -255,8 +285,7 @@ users_table_get_current (void)
selected = gtk_tree_selection_get_selected_rows (selection, &model);
- if (selected == NULL)
- return NULL;
+ g_return_val_if_fail (selected != NULL, NULL);
/* Only choose the first selected user */
path = (GtkTreePath *) selected->data;
@@ -264,7 +293,6 @@ users_table_get_current (void)
gtk_tree_model_get_iter (model, &iter, path);
g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL);
g_list_free (selected);
-
gtk_tree_model_get (model, &iter, COL_USER_OBJECT, &user, -1);
return user;
}
diff --git a/src/users/users-table.h b/src/users/users-table.h
index 5ae45d7..b49884d 100644
--- a/src/users/users-table.h
+++ b/src/users/users-table.h
@@ -53,6 +53,8 @@ void users_table_select_first (void);
OobsUser *users_table_get_current (void);
+void users_table_update_current (void);
+
void users_table_actions_set_sensitive (gint table,
gint count,
OobsUser *user);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]