summaryrefslogtreecommitdiff
path: root/gui/simple-greeter/gdm-user-chooser-widget.c
diff options
context:
space:
mode:
Diffstat (limited to 'gui/simple-greeter/gdm-user-chooser-widget.c')
-rw-r--r--gui/simple-greeter/gdm-user-chooser-widget.c118
1 files changed, 92 insertions, 26 deletions
diff --git a/gui/simple-greeter/gdm-user-chooser-widget.c b/gui/simple-greeter/gdm-user-chooser-widget.c
index c9c31591..46884118 100644
--- a/gui/simple-greeter/gdm-user-chooser-widget.c
+++ b/gui/simple-greeter/gdm-user-chooser-widget.c
@@ -58,6 +58,7 @@ struct GdmUserChooserWidgetPrivate
guint show_other_user : 1;
guint show_guest_user : 1;
+ guint show_auto_user : 1;
};
enum {
@@ -70,6 +71,66 @@ static void gdm_user_chooser_widget_finalize (GObject *
G_DEFINE_TYPE (GdmUserChooserWidget, gdm_user_chooser_widget, GDM_TYPE_CHOOSER_WIDGET)
+static void
+add_user_other (GdmUserChooserWidget *widget)
+{
+ gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget),
+ GDM_USER_CHOOSER_USER_OTHER,
+ widget->priv->stock_person_pixbuf,
+ _("Other..."),
+ _("Choose a different account"),
+ 0,
+ FALSE,
+ TRUE);
+}
+
+static void
+add_user_guest (GdmUserChooserWidget *widget)
+{
+ gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget),
+ GDM_USER_CHOOSER_USER_GUEST,
+ widget->priv->stock_person_pixbuf,
+ _("Guest"),
+ _("Login as a temporary guest"),
+ 0,
+ FALSE,
+ TRUE);
+}
+
+static void
+add_user_auto (GdmUserChooserWidget *widget)
+{
+ gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget),
+ GDM_USER_CHOOSER_USER_AUTO,
+ widget->priv->stock_person_pixbuf,
+ _("Automatic Login"),
+ _("Automatically login to the system after selecting options"),
+ 0,
+ FALSE,
+ TRUE);
+}
+
+static void
+remove_user_other (GdmUserChooserWidget *widget)
+{
+ gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
+ GDM_USER_CHOOSER_USER_OTHER);
+}
+
+static void
+remove_user_guest (GdmUserChooserWidget *widget)
+{
+ gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
+ GDM_USER_CHOOSER_USER_GUEST);
+}
+
+static void
+remove_user_auto (GdmUserChooserWidget *widget)
+{
+ gdm_chooser_widget_remove_item (GDM_CHOOSER_WIDGET (widget),
+ GDM_USER_CHOOSER_USER_AUTO);
+}
+
void
gdm_user_chooser_widget_set_show_other_user (GdmUserChooserWidget *widget,
gboolean show_user)
@@ -78,6 +139,11 @@ gdm_user_chooser_widget_set_show_other_user (GdmUserChooserWidget *widget,
if (widget->priv->show_other_user != show_user) {
widget->priv->show_other_user = show_user;
+ if (show_user) {
+ add_user_other (widget);
+ } else {
+ remove_user_other (widget);
+ }
}
}
@@ -89,6 +155,27 @@ gdm_user_chooser_widget_set_show_guest_user (GdmUserChooserWidget *widget,
if (widget->priv->show_guest_user != show_user) {
widget->priv->show_guest_user = show_user;
+ if (show_user) {
+ add_user_guest (widget);
+ } else {
+ remove_user_guest (widget);
+ }
+ }
+}
+
+void
+gdm_user_chooser_widget_set_show_auto_user (GdmUserChooserWidget *widget,
+ gboolean show_user)
+{
+ g_return_if_fail (GDM_IS_USER_CHOOSER_WIDGET (widget));
+
+ if (widget->priv->show_auto_user != show_user) {
+ widget->priv->show_auto_user = show_user;
+ if (show_user) {
+ add_user_auto (widget);
+ } else {
+ remove_user_auto (widget);
+ }
}
}
@@ -155,6 +242,11 @@ gdm_user_chooser_widget_constructor (GType type,
n_construct_properties,
construct_properties));
+ /* FIXME: make these construct properties */
+ gdm_user_chooser_widget_set_show_guest_user (user_chooser_widget, FALSE);
+ gdm_user_chooser_widget_set_show_auto_user (user_chooser_widget, FALSE);
+ gdm_user_chooser_widget_set_show_other_user (user_chooser_widget, TRUE);
+
return G_OBJECT (user_chooser_widget);
}
@@ -294,31 +386,6 @@ setup_icons (GdmUserChooserWidget *widget)
load_icons (widget);
}
-static gboolean
-add_special_users (GdmUserChooserWidget *widget)
-{
-
- gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget),
- GDM_USER_CHOOSER_USER_OTHER,
- widget->priv->stock_person_pixbuf,
- _("Other..."),
- _("Choose a different account"),
- 0,
- FALSE,
- TRUE);
-#if 0
- gdm_chooser_widget_add_item (GDM_CHOOSER_WIDGET (widget),
- GDM_USER_CHOOSER_USER_GUEST,
- widget->priv->stock_person_pixbuf,
- _("Guest"),
- _("Login as a temporary guest"),
- 0,
- FALSE,
- TRUE);
-#endif
- return FALSE;
-}
-
static void
on_user_added (GdmUserManager *manager,
GdmUser *user,
@@ -438,7 +505,6 @@ gdm_user_chooser_widget_init (GdmUserChooserWidget *widget)
widget);
setup_icons (widget);
- add_special_users (widget);
}
static void