+static void
+load_user_list ()
+{
+ const GList *items, *item;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ g_signal_connect (greeter, "user-added", G_CALLBACK (user_added_cb), NULL);
+ g_signal_connect (greeter, "user-changed", G_CALLBACK (user_changed_cb), NULL);
+ items = ldm_greeter_get_users (greeter);
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (user_view));
+ for (item = items; item; item = item->next)
+ {
+ LdmUser *user = item->data;
+ const gchar *image;
+ GdkPixbuf *pixbuf = NULL;
+
+ image = ldm_user_get_image (user);
+ if (image)
+ {
+ gchar *path;
+
+ path = g_filename_from_uri (image, NULL, NULL);
+ if (path)
+ pixbuf = gdk_pixbuf_new_from_file_at_scale (path, 64, 64, TRUE, NULL);
+ g_free (path);
+ }
+ 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, ldm_user_get_name (user),
+ 1, ldm_user_get_display_name (user),
+ 2, pixbuf,
+ -1);
+ }
+ if (ldm_greeter_get_has_guest_account_hint (greeter))
+ {
+ gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ 0, "*guest",
+ 1, "Guest Account",
+ 2, gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), "stock_person", 64, 0, NULL),
+ -1);
+ }
+
+ gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ 0, "*other",
+ 1, "Other...",
+ 2, gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), "stock_person", 64, 0, NULL),
+ -1);
+}
+