summaryrefslogtreecommitdiff
path: root/gui/simple-greeter/gdm-user-chooser-widget.c
diff options
context:
space:
mode:
authorWilliam Jon McCann <jmccann@redhat.com>2008-02-20 18:41:49 +0000
committerWilliam Jon McCann <mccann@src.gnome.org>2008-02-20 18:41:49 +0000
commit9400160560215c509759efca6fb365f12e4a8bc5 (patch)
tree3653a68ebba12afe5864ddc8737fd1f491bda275 /gui/simple-greeter/gdm-user-chooser-widget.c
parent7ded9b2049a472b9fb5f6f2f70e270e14fcee656 (diff)
downloadgdm-9400160560215c509759efca6fb365f12e4a8bc5.tar.gz
Add initial support for timed login.
2008-02-20 William Jon McCann <jmccann@redhat.com> * common/gdm-settings-client.c: (gdm_settings_client_get_string): * common/gdm-settings-keys.h: * daemon/gdm-factory-slave.c: (on_greeter_begin_verification), (on_greeter_begin_verification_for_user): * daemon/gdm-greeter-server.c: (handle_begin_timed_login), (greeter_handle_child_message), (do_introspect), (gdm_greeter_server_class_init): * daemon/gdm-greeter-server.h: * daemon/gdm-product-slave.c: (on_relay_setup), (on_relay_setup_for_user): * daemon/gdm-session-direct.c: (gdm_session_direct_init), (send_setup), (send_setup_for_user), (gdm_session_direct_setup), (gdm_session_direct_setup_for_user), (gdm_session_direct_set_property), (gdm_session_direct_get_property), (gdm_session_direct_dispose), (gdm_session_direct_class_init): * daemon/gdm-session-relay.c: (send_dbus_string_string_signal), (gdm_session_relay_setup), (gdm_session_relay_setup_for_user), (do_introspect): * daemon/gdm-session.c: (gdm_session_setup), (gdm_session_setup_for_user): * daemon/gdm-session.h: * daemon/gdm-simple-slave.c: (on_greeter_begin_verification), (on_greeter_begin_timed_login), (on_greeter_begin_verification_for_user), (run_greeter): * daemon/simple-slave-main.c: (main): * daemon/test-session.c: (on_open): * gui/simple-greeter/gdm-greeter-client.c: (emit_string_signal_for_message), (gdm_greeter_client_call_begin_timed_login): * gui/simple-greeter/gdm-greeter-client.h: * gui/simple-greeter/gdm-greeter-login-window.c: (remove_timed_login_timeout), (timed_login_timer), (restart_timed_login_timeout), (on_login_button_clicked_answer_query), (on_login_button_clicked_timed_login), (set_log_in_button_mode), (switch_mode), (do_cancel), (reset_dialog), (gdm_greeter_login_window_info_query), (gdm_greeter_login_window_secret_info_query), (on_user_chosen), (load_theme), (read_configuration), (gdm_greeter_login_window_constructor), (gdm_greeter_login_window_class_init), (gdm_greeter_login_window_init): * gui/simple-greeter/gdm-greeter-login-window.h: * gui/simple-greeter/gdm-greeter-session.c: (on_begin_timed_login), (toggle_login_window): * gui/simple-greeter/gdm-user-chooser-dialog.c: (gdm_user_chooser_dialog_set_show_other_user), (gdm_user_chooser_dialog_set_show_guest_user), (gdm_user_chooser_dialog_set_show_auto_user), (gdm_user_chooser_dialog_init): * gui/simple-greeter/gdm-user-chooser-dialog.h: * gui/simple-greeter/gdm-user-chooser-widget.c: (add_user_other), (add_user_guest), (add_user_auto), (remove_user_other), (remove_user_guest), (remove_user_auto), (gdm_user_chooser_widget_set_show_other_user), (gdm_user_chooser_widget_set_show_guest_user), (gdm_user_chooser_widget_set_show_auto_user), (gdm_user_chooser_widget_constructor), (gdm_user_chooser_widget_init): * gui/simple-greeter/gdm-user-chooser-widget.h: * gui/simple-greeter/greeter-main.c: (main): * gui/simple-greeter/test-greeter-login-window.c: (main): * gui/simple-greeter/test-user-chooser.c: (main): Add initial support for timed login. svn path=/trunk/; revision=5820
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