summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Le Folgoc <mrpouit@ubuntu.com>2012-07-28 23:25:03 +0200
committerLionel Le Folgoc <mrpouit@ubuntu.com>2012-07-28 23:25:03 +0200
commit28f751817faeb37e4c4666a91228ae4d7f1b8fda (patch)
treeb94643dd48b137223b3d92aa29344094cd664846
parent4acdf4a895ee8ce0695ffb93f77642ae8a22b840 (diff)
downloadlightdm-gtk-greeter-28f751817faeb37e4c4666a91228ae4d7f1b8fda.tar.gz
Replace the userlist's treeview with a combobox
And drop the unused pixbuf
-rw-r--r--data/greeter.ui15
-rw-r--r--src/lightdm-gtk-greeter.c57
2 files changed, 23 insertions, 49 deletions
diff --git a/data/greeter.ui b/data/greeter.ui
index 4b3cd0b..7fcbaa5 100644
--- a/data/greeter.ui
+++ b/data/greeter.ui
@@ -57,18 +57,11 @@
</packing>
</child>
<child>
- <object class="GtkTreeView" id="user_treeview">
- <property name="name">user_treeview</property>
+ <object class="GtkComboBox" id="user_combobox">
+ <property name="name">user_combobox</property>
<property name="can_focus">True</property>
<property name="model">user_liststore</property>
- <property name="headers_visible">False</property>
- <property name="fixed_height_mode">True</property>
- <property name="enable_grid_lines">horizontal</property>
- <child internal-child="selection">
- <object class="GtkTreeSelection" id="treeview-selection1">
- <signal name="changed" handler="user_treeview_selection_changed_cb" swapped="no"/>
- </object>
- </child>
+ <signal name="changed" handler="user_combobox_active_changed_cb" swapped="no"/>
</object>
<packing>
<property name="expand">True</property>
@@ -340,8 +333,6 @@
<column type="gchararray"/>
<!-- column-name weight -->
<column type="gint"/>
- <!-- column-name image -->
- <column type="GdkPixbuf"/>
</columns>
</object>
</interface>
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c
index b4d4ffc..4527d4c 100644
--- a/src/lightdm-gtk-greeter.c
+++ b/src/lightdm-gtk-greeter.c
@@ -24,9 +24,9 @@ static GKeyFile *state;
static gchar *state_filename;
static GtkWindow *login_window, *panel_window;
static GtkLabel *message_label, *prompt_label;
-static GtkTreeView *user_view;
static GtkWidget *login_box, *prompt_box;
static GtkEntry *prompt_entry;
+static GtkComboBox *user_combo;
static GtkComboBox *session_combo;
static GtkComboBox *language_combo;
static gchar *default_font_name, *default_theme_name;
@@ -204,7 +204,7 @@ cancel_authentication (void)
else
{
gtk_widget_hide (login_box);
- gtk_widget_grab_focus (GTK_WIDGET (user_view));
+ gtk_widget_grab_focus (GTK_WIDGET (user_combo));
}
}
@@ -228,15 +228,17 @@ start_session (void)
g_free (session);
}
-void user_treeview_selection_changed_cb (GtkTreeSelection *selection);
+void user_combobox_active_changed_cb (GtkComboBox *widget, LightDMGreeter *greeter);
G_MODULE_EXPORT
void
-user_treeview_selection_changed_cb (GtkTreeSelection *selection)
+user_combobox_active_changed_cb (GtkComboBox *widget, LightDMGreeter *greeter)
{
GtkTreeModel *model;
GtkTreeIter iter;
- if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ model = gtk_combo_box_get_model (user_combo);
+
+ if (gtk_combo_box_get_active_iter (user_combo, &iter))
{
gchar *user;
@@ -417,14 +419,13 @@ user_added_cb (LightDMUserList *user_list, LightDMUser *user)
GtkTreeModel *model;
GtkTreeIter iter;
- model = gtk_tree_view_get_model (user_view);
+ model = gtk_combo_box_get_model (user_combo);
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
0, lightdm_user_get_name (user),
1, lightdm_user_get_display_name (user),
2, lightdm_user_get_logged_in (user) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
- /*3, pixbuf,*/
-1);
}
@@ -433,7 +434,7 @@ get_user_iter (const gchar *username, GtkTreeIter *iter)
{
GtkTreeModel *model;
- model = gtk_tree_view_get_model (user_view);
+ model = gtk_combo_box_get_model (user_combo);
if (!gtk_tree_model_get_iter_first (model, iter))
return FALSE;
@@ -461,12 +462,12 @@ user_changed_cb (LightDMUserList *user_list, LightDMUser *user)
if (!get_user_iter (lightdm_user_get_name (user), &iter))
return;
- model = gtk_tree_view_get_model (user_view);
+ model = gtk_combo_box_get_model (user_combo);
+
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
0, lightdm_user_get_name (user),
1, lightdm_user_get_display_name (user),
2, lightdm_user_get_logged_in (user) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
- /*3, pixbuf,*/
-1);
}
@@ -479,7 +480,7 @@ user_removed_cb (LightDMUserList *user_list, LightDMUser *user)
if (!get_user_iter (lightdm_user_get_name (user), &iter))
return;
- model = gtk_tree_view_get_model (user_view);
+ model = gtk_combo_box_get_model (user_combo);
gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
}
@@ -545,35 +546,17 @@ load_user_list ()
g_signal_connect (lightdm_user_list_get_instance (), "user-changed", G_CALLBACK (user_changed_cb), NULL);
g_signal_connect (lightdm_user_list_get_instance (), "user-removed", G_CALLBACK (user_removed_cb), NULL);
- model = gtk_tree_view_get_model (user_view);
+ model = gtk_combo_box_get_model (user_combo);
items = lightdm_user_list_get_users (lightdm_user_list_get_instance ());
for (item = items; item; item = item->next)
{
LightDMUser *user = item->data;
- const gchar *image;
- GdkPixbuf *pixbuf = NULL;
-
- image = lightdm_user_get_image (user);
- if (image)
- pixbuf = gdk_pixbuf_new_from_file_at_scale (image, 64, 64, TRUE, NULL);
- if (!pixbuf)
- pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
- "stock_person",
- 64,
- GTK_ICON_LOOKUP_USE_BUILTIN,
- NULL);
- /*if (!pixbuf)
- {
- pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, 64, 64);
- memset (gdk_pixbuf_get_pixels (pixbuf), 0, gdk_pixbuf_get_height (pixbuf) * gdk_pixbuf_get_rowstride (pixbuf) * gdk_pixbuf_get_n_channels (pixbuf));
- }*/
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
0, lightdm_user_get_name (user),
1, lightdm_user_get_display_name (user),
2, lightdm_user_get_logged_in (user) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
- 3, pixbuf,
-1);
}
if (lightdm_greeter_get_has_guest_account_hint (greeter))
@@ -583,7 +566,6 @@ load_user_list ()
0, "*guest",
1, _("Guest Account"),
2, PANGO_WEIGHT_NORMAL,
- 3, gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), "stock_person", 64, 0, NULL),
-1);
}
@@ -592,7 +574,6 @@ load_user_list ()
0, "*other",
1, _("Other..."),
2, PANGO_WEIGHT_NORMAL,
- 3, gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), "stock_person", 64, 0, NULL),
-1);
last_user = g_key_file_get_value (state, "greeter", "last-user", NULL);
@@ -617,7 +598,7 @@ load_user_list ()
g_free (name);
if (matched)
{
- gtk_tree_selection_select_iter (gtk_tree_view_get_selection (user_view), &iter);
+ gtk_combo_box_set_active_iter (user_combo, &iter);
start_authentication (selected_user);
break;
}
@@ -838,6 +819,7 @@ main (int argc, char **argv)
prompt_label = GTK_LABEL (gtk_builder_get_object (builder, "prompt_label"));
prompt_entry = GTK_ENTRY (gtk_builder_get_object (builder, "prompt_entry"));
message_label = GTK_LABEL (gtk_builder_get_object (builder, "message_label"));
+ user_combo = GTK_COMBO_BOX (gtk_builder_get_object (builder, "user_combobox"));
session_combo = GTK_COMBO_BOX (gtk_builder_get_object (builder, "session_combobox"));
language_combo = GTK_COMBO_BOX (gtk_builder_get_object (builder, "language_combobox"));
panel_window = GTK_WINDOW (gtk_builder_get_object (builder, "panel_window"));
@@ -928,16 +910,17 @@ main (int argc, char **argv)
set_language (NULL);
}
- user_view = GTK_TREE_VIEW (gtk_builder_get_object (builder, "user_treeview"));
- gtk_tree_view_insert_column_with_attributes (user_view, 0, "Face", gtk_cell_renderer_pixbuf_new(), "pixbuf", 3, NULL);
- gtk_tree_view_insert_column_with_attributes (user_view, 1, "Name", gtk_cell_renderer_text_new(), "text", 1, "weight", 2, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (user_combo), renderer, TRUE);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (user_combo), renderer, "text", 1);
+ gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (user_combo), renderer, "weight", 2);
if (lightdm_greeter_get_hide_users_hint (greeter))
start_authentication ("*other");
else
{
load_user_list ();
- gtk_widget_show (GTK_WIDGET (user_view));
+ gtk_widget_show (GTK_WIDGET (user_combo));
}
gtk_builder_connect_signals(builder, greeter);