]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Add a seat option greeter-show-manual-login which hints to a greeter if it should...
authorRobert Ancell <robert.ancell@canonical.com>
Thu, 8 Mar 2012 04:57:58 +0000 (15:57 +1100)
committerRobert Ancell <robert.ancell@canonical.com>
Thu, 8 Mar 2012 04:57:58 +0000 (15:57 +1100)
NEWS
data/lightdm.conf
liblightdm-gobject/greeter.c
liblightdm-gobject/liblightdm-gobject-1.vapi
liblightdm-gobject/lightdm/greeter.h
src/display.c
src/display.h
src/seat.c

diff --git a/NEWS b/NEWS
index 7f87160eb31941f60aa959d9d395a1b03a2f2956..8cdc4ef2220ee90df8dae6346bf271de6bbb5fd8 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,9 @@
 Overview of changes in lightdm 1.1.7
 
-    * Add a seat option greeter-allow-guest which controls if the
-      greeter should show a guest option
+    * Add a seat option greeter-allow-guest which controls if the greeter should
+      provide an option to access the guest account.
+    * Add a seat option greeter-show-manual-login which hints to a greeter if it
+      should show a manual username entry if a user list is already present.
 
 Overview of changes in lightdm 1.1.6
 
index f37dcdb02c50a8bd6e93cc5ac7e4d436ca88d612..f670728999f59c4e23838d7e6b77a7e56a67d210 100644 (file)
@@ -39,6 +39,7 @@
 # greeter-session = Session to load for greeter
 # greeter-hide-users = True to hide the user list
 # greeter-show-guest = True if the greeter should show a guest login option
+# greeter-show-manual-login = True if the greeter should offer a manual login option
 # user-session = Session to load for users
 # allow-guest = True if guest login is allowed
 # guest-session = Session to load for guests (overrides user-session)
@@ -64,6 +65,7 @@
 #greeter-session=example-gtk-gnome
 #greeter-hide-users=false
 #greeter-show-guest=true
+#greeter-show-manual-login=false
 #user-session=default
 #allow-guest=true
 #guest-session=UNIMPLEMENTED
index ee3960f87acfb59af1dca4b17fd967b1028518bc..2806dd588f82ad691a4ea5c897134384e42fa032 100644 (file)
@@ -21,6 +21,7 @@ enum {
     PROP_0,
     PROP_DEFAULT_SESSION_HINT,
     PROP_HIDE_USERS_HINT,
+    PROP_SHOW_MANUAL_LOGIN_HINT,
     PROP_LOCK_HINT,
     PROP_HAS_GUEST_ACCOUNT_HINT,
     PROP_SELECT_USER_HINT,
@@ -561,6 +562,28 @@ lightdm_greeter_get_hide_users_hint (LightDMGreeter *greeter)
     return g_strcmp0 (value, "true") == 0;
 }
 
+/**
+ * lightdm_greeter_get_show_manual_login_hint:
+ * @greeter: A #LightDMGreeter
+ *
+ * Check if a manual login option should be shown.  If set the GUI
+ * should provide a way for a username to be entered manually.
+ * Without this hint a greeter which is showing a user list can
+ * limit logins to only those users.
+ *
+ * Return value: #TRUE if a manual login option should be shown.
+ */
+gboolean
+lightdm_greeter_get_show_manual_login_hint (LightDMGreeter *greeter)
+{
+    const gchar *value;
+
+    g_return_val_if_fail (LIGHTDM_IS_GREETER (greeter), FALSE);
+    value = lightdm_greeter_get_hint (greeter, "show-manual-login");
+
+    return g_strcmp0 (value, "true") == 0;
+}
+
 /**
  * lightdm_greeter_get_lock_hint:
  * @greeter: A #LightDMGreeter
@@ -990,6 +1013,9 @@ lightdm_greeter_get_property (GObject    *object,
     case PROP_HIDE_USERS_HINT:
         g_value_set_boolean (value, lightdm_greeter_get_hide_users_hint (self));
         break;
+    case PROP_SHOW_MANUAL_LOGIN_HINT:
+        g_value_set_boolean (value, lightdm_greeter_get_show_manual_login_hint (self));
+        break;
     case PROP_LOCK_HINT:
         g_value_set_boolean (value, lightdm_greeter_get_lock_hint (self));
         break;
@@ -1105,6 +1131,14 @@ lightdm_greeter_class_init (LightDMGreeterClass *klass)
                                                            FALSE,
                                                            G_PARAM_READABLE));
 
+    g_object_class_install_property (object_class,
+                                     PROP_SHOW_MANUAL_LOGIN_HINT,
+                                     g_param_spec_boolean ("show-manual-login-hint",
+                                                           "show-manual-login-hint",
+                                                           "Show manual login hint",
+                                                           FALSE,
+                                                           G_PARAM_READABLE));
+
     g_object_class_install_property (object_class,
                                      PROP_LOCK_HINT,
                                      g_param_spec_boolean ("lock-hint",
index 88d678500f98abec50f057ab6ba713a1e720a5a1..56aa327e244bcdecce47c4f854b570c0716c51a6 100644 (file)
@@ -27,6 +27,7 @@ namespace LightDM {
         public unowned string get_hint (string name);
         public unowned string default_session_hint { get; }
         public bool hide_users_hint { get; }
+        public bool show_manual_login_hint { get; }
         public bool lock_hint { get; }
         public bool has_guest_account_hint { get; }
         public unowned string select_user_hint { get; }
index 1b76be98c9463a7af91db7ebcf43c44cdf9bfe35..dc051b3e5c356b9d03b1a2b50968ef810f10d36b 100644 (file)
@@ -80,6 +80,8 @@ const gchar *lightdm_greeter_get_default_session_hint (LightDMGreeter *greeter);
 
 gboolean lightdm_greeter_get_hide_users_hint (LightDMGreeter *greeter);
 
+gboolean lightdm_greeter_get_show_manual_login_hint (LightDMGreeter *greeter);
+
 gboolean lightdm_greeter_get_lock_hint (LightDMGreeter *greeter);
 
 gboolean lightdm_greeter_get_has_guest_account_hint (LightDMGreeter *greeter);
index 3f26395af1a881f577b562cfd01f20c29d23da5c..be83134e92e0a5c1970299952c267341ccce70f6 100644 (file)
@@ -55,6 +55,9 @@ struct DisplayPrivate
     /* TRUE if the user list should be shown */
     gboolean greeter_hide_users;
 
+    /* TRUE if a manual login option should be shown */
+    gboolean greeter_show_manual_login;
+
     /* TRUE if the greeter is a lock screen */
     gboolean greeter_is_lock;
 
@@ -203,6 +206,13 @@ display_set_hide_users_hint (Display *display, gboolean hide_users)
     display->priv->greeter_hide_users = hide_users;
 }
 
+void
+display_set_show_manual_login_hint (Display *display, gboolean show_manual_login)
+{
+    g_return_if_fail (display != NULL);
+    display->priv->greeter_show_manual_login = show_manual_login;
+}
+
 void
 display_set_lock_hint (Display *display, gboolean is_lock)
 {
@@ -417,6 +427,7 @@ start_greeter (Display *display)
     greeter_set_allow_guest (display->priv->greeter, display->priv->allow_guest);
     greeter_set_hint (display->priv->greeter, "has-guest-account", (display->priv->allow_guest && display->priv->greeter_allow_guest) ? "true" : "false");
     greeter_set_hint (display->priv->greeter, "hide-users", display->priv->greeter_hide_users ? "true" : "false");
+    greeter_set_hint (display->priv->greeter, "show-manual-login", display->priv->greeter_show_manual_login ? "true" : "false");
     if (display->priv->greeter_is_lock)
         greeter_set_hint (display->priv->greeter, "lock-screen", "true");
 
index c7e0850b241a788e0d96a16329faa27db102e120..e6a970b199ebceaebab357cfa49f8a7dbc24a173 100644 (file)
@@ -72,6 +72,8 @@ void display_set_select_user_hint (Display *display, const gchar *username, gboo
 
 void display_set_hide_users_hint (Display *display, gboolean hide_users);
 
+void display_set_show_manual_login_hint (Display *display, gboolean show_manual);
+
 void display_set_lock_hint (Display *display, gboolean is_lock);
 
 void display_set_user_session (Display *display, const gchar *session_name);
index d17e008bac7752ff9217eae543d352ab8c858d00..f001274a928fd17eb9ba5ce075f4cf5f199dc194 100644 (file)
@@ -487,6 +487,7 @@ switch_to_user_or_start_greeter (Seat *seat, const gchar *username, gboolean use
     display_set_greeter_session (display, seat_get_string_property (seat, "greeter-session"));
     display_set_session_wrapper (display, seat_get_string_property (seat, "session-wrapper"));
     display_set_hide_users_hint (display, seat_get_boolean_property (seat, "greeter-hide-users"));
+    display_set_show_manual_login_hint (display, seat_get_boolean_property (seat, "greeter-show-manual-login"));
     if (is_lock)
         display_set_lock_hint (display, TRUE);
     display_set_allow_guest (display, seat_get_allow_guest (seat));