summaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2008-05-08 18:54:07 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2008-05-08 18:54:07 +0000
commit9f756a13ba6f96e7bdd0e38ddab104b072041c64 (patch)
tree5c628cbdf48779fd91eca88ce4ef7586d267aa0a /gui
parent8f84d7bb79bd3fedf816eb26b36b74957b875e50 (diff)
downloadgdm-9f756a13ba6f96e7bdd0e38ddab104b072041c64.tar.gz
Add a GConf key for not showing normal users in the user list.
svn path=/trunk/; revision=6225
Diffstat (limited to 'gui')
-rw-r--r--gui/simple-greeter/gdm-simple-greeter.schemas.in11
-rw-r--r--gui/simple-greeter/gdm-user-chooser-widget.c30
2 files changed, 41 insertions, 0 deletions
diff --git a/gui/simple-greeter/gdm-simple-greeter.schemas.in b/gui/simple-greeter/gdm-simple-greeter.schemas.in
index b7b18643..9cd6bbe9 100644
--- a/gui/simple-greeter/gdm-simple-greeter.schemas.in
+++ b/gui/simple-greeter/gdm-simple-greeter.schemas.in
@@ -68,6 +68,17 @@
</locale>
</schema>
<schema>
+ <key>/schemas/apps/gdm/simple-greeter/disable_user_list</key>
+ <applyto>/apps/gdm/simple-greeter/disable_user_list</applyto>
+ <owner>gdm-simple-greeter</owner>
+ <type>bool</type>
+ <default>FALSE</default>
+ <locale name="C">
+ <short>Do not show known users in the login window</short>
+ <long>Set to TRUE to disable showing known users in the login window.</long>
+ </locale>
+ </schema>
+ <schema>
<key>/schemas/apps/gdm/simple-greeter/wm_use_compiz</key>
<applyto>/apps/gdm/simple-greeter/wm_use_compiz</applyto>
<owner>gdm-simple-greeter</owner>
diff --git a/gui/simple-greeter/gdm-user-chooser-widget.c b/gui/simple-greeter/gdm-user-chooser-widget.c
index 9b54a01f..a37b5a48 100644
--- a/gui/simple-greeter/gdm-user-chooser-widget.c
+++ b/gui/simple-greeter/gdm-user-chooser-widget.c
@@ -34,9 +34,14 @@
#include <glib/gstdio.h>
#include <gtk/gtk.h>
+#include <gconf/gconf-client.h>
+
#include "gdm-user-manager.h"
#include "gdm-user-chooser-widget.h"
+
+#define KEY_DISABLE_USER_LIST "/apps/gdm/simple-greeter/disable_user_list"
+
enum {
USER_NO_DISPLAY = 1 << 0,
USER_ACCOUNT_DISABLED = 1 << 1,
@@ -59,6 +64,7 @@ struct GdmUserChooserWidgetPrivate
guint show_other_user : 1;
guint show_guest_user : 1;
guint show_auto_user : 1;
+ guint show_normal_users : 1;
};
enum {
@@ -231,6 +237,25 @@ gdm_user_chooser_widget_get_property (GObject *object,
}
}
+static gboolean
+is_user_list_disabled (GdmUserChooserWidget *widget)
+{
+ GConfClient *client;
+ GError *error;
+ gboolean result;
+
+ client = gconf_client_get_default ();
+ error = NULL;
+ result = gconf_client_get_bool (client, KEY_DISABLE_USER_LIST, &error);
+ if (error != NULL) {
+ g_debug ("GdmUserChooserWidget: unable to get disable-user-list configuration: %s", error->message);
+ g_error_free (error);
+ }
+ g_object_unref (client);
+
+ return result;
+}
+
static GObject *
gdm_user_chooser_widget_constructor (GType type,
guint n_construct_properties,
@@ -247,6 +272,8 @@ gdm_user_chooser_widget_constructor (GType type,
gdm_user_chooser_widget_set_show_auto_user (user_chooser_widget, FALSE);
gdm_user_chooser_widget_set_show_other_user (user_chooser_widget, TRUE);
+ user_chooser_widget->priv->show_normal_users = !is_user_list_disabled (user_chooser_widget);
+
return G_OBJECT (user_chooser_widget);
}
@@ -403,6 +430,9 @@ on_user_added (GdmUserManager *manager,
char *tooltip;
gboolean is_logged_in;
+ if (!widget->priv->show_normal_users)
+ return;
+
pixbuf = gdm_user_render_icon (user, ICON_SIZE);
if (pixbuf == NULL && widget->priv->stock_person_pixbuf != NULL) {
pixbuf = g_object_ref (widget->priv->stock_person_pixbuf);