]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Add greeter-show-remote-login hint
authorMichael Terry <michael.terry@canonical.com>
Tue, 11 Sep 2012 17:47:35 +0000 (13:47 -0400)
committerMichael Terry <michael.terry@canonical.com>
Tue, 11 Sep 2012 17:47:35 +0000 (13:47 -0400)
data/lightdm.conf
liblightdm-gobject/greeter.c
liblightdm-gobject/liblightdm-gobject-1.vapi
liblightdm-gobject/lightdm/greeter.h
liblightdm-qt/QLightDM/greeter.h
liblightdm-qt/greeter.cpp
src/display.c
src/display.h
src/lightdm.c
src/seat.c
utils/lightdm-set-defaults.c

index c98446f9e93717dd91af95ea76d9e875606cd001..0e4c318948eac801563df9353a391cd14639bcf4 100644 (file)
@@ -45,6 +45,7 @@
 # greeter-hide-users = True to hide the user list
 # greeter-allow-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
+# greeter-show-remote-login = True if the greeter should offer a remote 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)
@@ -72,6 +73,7 @@
 #greeter-hide-users=false
 #greeter-allow-guest=true
 #greeter-show-manual-login=false
+#greeter-show-remote-login=true
 #user-session=default
 #allow-guest=true
 #guest-session=UNIMPLEMENTED
index b6d1ba773580a1c3e02b655853c4b75c3c51a1a2..b8aa018ddf07999deff2d81a1c68693578b86988 100644 (file)
@@ -22,6 +22,7 @@ enum {
     PROP_DEFAULT_SESSION_HINT,
     PROP_HIDE_USERS_HINT,
     PROP_SHOW_MANUAL_LOGIN_HINT,
+    PROP_SHOW_REMOTE_LOGIN_HINT,
     PROP_LOCK_HINT,
     PROP_HAS_GUEST_ACCOUNT_HINT,
     PROP_SELECT_USER_HINT,
@@ -613,6 +614,26 @@ lightdm_greeter_get_show_manual_login_hint (LightDMGreeter *greeter)
     return g_strcmp0 (value, "true") == 0;
 }
 
+/**
+ * lightdm_greeter_get_show_remote_login_hint:
+ * @greeter: A #LightDMGreeter
+ *
+ * Check if a remote login option should be shown.  If set the GUI
+ * should provide a way for a user to log into a remote desktop server.
+ *
+ * Return value: #TRUE if a remote login option should be shown.
+ */
+gboolean
+lightdm_greeter_get_show_remote_login_hint (LightDMGreeter *greeter)
+{
+    const gchar *value;
+
+    g_return_val_if_fail (LIGHTDM_IS_GREETER (greeter), FALSE);
+    value = lightdm_greeter_get_hint (greeter, "show-remote-login");
+
+    return g_strcmp0 (value, "true") == 0;
+}
+
 /**
  * lightdm_greeter_get_lock_hint:
  * @greeter: A #LightDMGreeter
@@ -1106,6 +1127,9 @@ lightdm_greeter_get_property (GObject    *object,
     case PROP_SHOW_MANUAL_LOGIN_HINT:
         g_value_set_boolean (value, lightdm_greeter_get_show_manual_login_hint (self));
         break;
+    case PROP_SHOW_REMOTE_LOGIN_HINT:
+        g_value_set_boolean (value, lightdm_greeter_get_show_remote_login_hint (self));
+        break;
     case PROP_LOCK_HINT:
         g_value_set_boolean (value, lightdm_greeter_get_lock_hint (self));
         break;
@@ -1229,6 +1253,14 @@ lightdm_greeter_class_init (LightDMGreeterClass *klass)
                                                            FALSE,
                                                            G_PARAM_READABLE));
 
+    g_object_class_install_property (object_class,
+                                     PROP_SHOW_REMOTE_LOGIN_HINT,
+                                     g_param_spec_boolean ("show-remote-login-hint",
+                                                           "show-remote-login-hint",
+                                                           "Show remote login hint",
+                                                           FALSE,
+                                                           G_PARAM_READABLE));
+
     g_object_class_install_property (object_class,
                                      PROP_LOCK_HINT,
                                      g_param_spec_boolean ("lock-hint",
index ba0ec1950678240483e733d1d524c9fbdc06f073..61610742720996b4249e44ab27084eccce3ed11a 100644 (file)
@@ -29,6 +29,7 @@ namespace LightDM {
         public unowned string default_session_hint { get; }
         public bool hide_users_hint { get; }
         public bool show_manual_login_hint { get; }
+        public bool show_remote_login_hint { get; }
         public bool lock_hint { get; }
         public bool has_guest_account_hint { get; }
         public unowned string select_user_hint { get; }
index cd26f772b7f8b9843a7c9efdd16b126a30b1c7fb..d1ea2b938aa4fdaffe9ae5fa3393474e0eae3ce1 100644 (file)
@@ -82,6 +82,8 @@ gboolean lightdm_greeter_get_hide_users_hint (LightDMGreeter *greeter);
 
 gboolean lightdm_greeter_get_show_manual_login_hint (LightDMGreeter *greeter);
 
+gboolean lightdm_greeter_get_show_remote_login_hint (LightDMGreeter *greeter);
+
 gboolean lightdm_greeter_get_lock_hint (LightDMGreeter *greeter);
 
 gboolean lightdm_greeter_get_has_guest_account_hint (LightDMGreeter *greeter);
index 4c6799e07566cff6645ae745b31a873bb58a9ebe..4cf37632c0071de250cf3fd49611954d6ba9a2df 100644 (file)
@@ -55,6 +55,7 @@ public:
     QString defaultSessionHint() const;
     bool hideUsersHint() const;
     bool showManualLoginHint() const;
+    bool showRemoteLoginHint() const;
     bool lockHint () const;
     bool hasGuestAccountHint() const;
     QString selectUserHint() const;
index 2df535b5211d9afd92779539585e47e784320bda..7643e40768dee56aa880af25fd0dfba8fa4f8547 100644 (file)
@@ -192,6 +192,12 @@ bool Greeter::showManualLoginHint() const
     return lightdm_greeter_get_show_manual_login_hint(d->ldmGreeter);
 }
 
+bool Greeter::showRemoteLoginHint() const
+{
+    Q_D(const Greeter);
+    return lightdm_greeter_get_show_remote_login_hint(d->ldmGreeter);
+}
+
 bool Greeter::lockHint() const
 {
     Q_D(const Greeter);
index ec001530743f2ef81a77282a89ec9de8c668c805..82b1cc2621a407cfb77c8e46c31d291f2d2ebd6d 100644 (file)
@@ -49,6 +49,9 @@ struct DisplayPrivate
     /* TRUE if a manual login option should be shown */
     gboolean greeter_show_manual_login;
 
+    /* TRUE if a remote login option should be shown */
+    gboolean greeter_show_remote_login;
+
     /* TRUE if the greeter is a lock screen */
     gboolean greeter_is_lock;
 
@@ -204,6 +207,13 @@ display_set_show_manual_login_hint (Display *display, gboolean show_manual_login
     display->priv->greeter_show_manual_login = show_manual_login;
 }
 
+void
+display_set_show_remote_login_hint (Display *display, gboolean show_remote_login)
+{
+    g_return_if_fail (display != NULL);
+    display->priv->greeter_show_remote_login = show_remote_login;
+}
+
 void
 display_set_lock_hint (Display *display, gboolean is_lock)
 {
@@ -418,6 +428,7 @@ start_greeter (Display *display)
     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");
+    greeter_set_hint (display->priv->greeter, "show-remote-login", display->priv->greeter_show_remote_login ? "true" : "false");
     if (display->priv->greeter_is_lock)
         greeter_set_hint (display->priv->greeter, "lock-screen", "true");
 
index 23d8c8baf3fd2f008e57a28e65abace9119b4abb..e8a6027aa7a5f00a183523b5f91cb5ec827500a1 100644 (file)
@@ -74,6 +74,8 @@ 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_show_remote_login_hint (Display *display, gboolean show_remote);
+
 void display_set_lock_hint (Display *display, gboolean is_lock);
 
 void display_set_user_session (Display *display, SessionType type, const gchar *session_name);
index 04fb59ef1152772b5e5e2c43f08370de747ee59f..79c9fc47e9574c1ade3a66b46dfa8e42d889ae2f 100644 (file)
@@ -1007,6 +1007,8 @@ main (int argc, char **argv)
         config_set_boolean (config_get_instance (), "SeatDefaults", "allow-guest", TRUE);
     if (!config_has_key (config_get_instance (), "SeatDefaults", "greeter-allow-guest"))
         config_set_boolean (config_get_instance (), "SeatDefaults", "greeter-allow-guest", TRUE);
+    if (!config_has_key (config_get_instance (), "SeatDefaults", "greeter-show-remote-login"))
+        config_set_boolean (config_get_instance (), "SeatDefaults", "greeter-show-remote-login", TRUE);
     if (!config_has_key (config_get_instance (), "SeatDefaults", "greeter-session"))
         config_set_string (config_get_instance (), "SeatDefaults", "greeter-session", GREETER_SESSION);
     if (!config_has_key (config_get_instance (), "SeatDefaults", "user-session"))
index f055f389d38d97742fdce05d711e8d9612240637..dcea2066ae88db99dfaf28f506ef85e6715da42d 100644 (file)
@@ -485,6 +485,7 @@ switch_to_user_or_start_greeter (Seat *seat, const gchar *username, gboolean use
     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"));
+    display_set_show_remote_login_hint (display, seat_get_boolean_property (seat, "greeter-show-remote-login"));
     if (is_lock)
         display_set_lock_hint (display, TRUE);
     display_set_allow_guest (display, seat_get_allow_guest (seat));
index 951e39969ee21c563a55a51bb5b1f884a9a31291..a28efc2a3c742e680a51c74462d882aa5d93b13e 100644 (file)
@@ -25,6 +25,7 @@
 #define AUTOLOGIN_KEY_NAME  "autologin-user"
 #define HIDE_USERS_KEY_NAME  "greeter-hide-users"
 #define MANUAL_LOGIN_KEY_NAME  "greeter-show-manual-login"
+#define REMOTE_LOGIN_KEY_NAME  "greeter-show-remote-login"
 #define ALLOW_GUEST_KEY_NAME  "allow-guest"
 
 #define IS_STRING_EMPTY(x) ((x)==NULL||(x)[0]=='\0')
@@ -34,6 +35,7 @@ static gboolean keep_old = FALSE;
 static gboolean remove = FALSE;
 static gboolean hide_users = FALSE;
 static gboolean show_manual_login = FALSE;
+static gboolean show_remote_login = FALSE;
 static gboolean allow_guest = FALSE;
 
 static char    *session = NULL;
@@ -41,6 +43,7 @@ static char    *greeter = NULL;
 static char    *autologin = NULL;
 static char    *str_hide_users = NULL;
 static char    *str_show_manual_login = NULL;
+static char    *str_show_remote_login = NULL;
 static char    *str_allow_guest = NULL;
 
 static GOptionEntry entries[] =
@@ -53,6 +56,7 @@ static GOptionEntry entries[] =
   { "autologin",'a', 0, G_OPTION_ARG_STRING, &autologin, N_("Set autologin user"), NULL },
   { "hide-users",'i', 0, G_OPTION_ARG_STRING, &str_hide_users, N_("Set greeter-hide-users to true or false"), NULL },
   { "show-manual-login",'m', 0, G_OPTION_ARG_STRING, &str_show_manual_login, N_("Set show-manual-login to true or false"), NULL },
+  { "show-remote-login",'R', 0, G_OPTION_ARG_STRING, &str_show_remote_login, N_("Set show-remote-login to true or false"), NULL },
   { "allow-guest",'l', 0, G_OPTION_ARG_STRING, &str_allow_guest, N_("Set allow-guest to true or false"), NULL },
   { NULL }
 };
@@ -175,7 +179,7 @@ main (int argc, char *argv[])
         g_error_free (error);
         return 1;
     }
-    if (IS_STRING_EMPTY (session) && IS_STRING_EMPTY (greeter) && IS_STRING_EMPTY (autologin) && IS_STRING_EMPTY(str_hide_users) && IS_STRING_EMPTY(str_show_manual_login) && IS_STRING_EMPTY(str_allow_guest)) {
+    if (IS_STRING_EMPTY (session) && IS_STRING_EMPTY (greeter) && IS_STRING_EMPTY (autologin) && IS_STRING_EMPTY(str_hide_users) && IS_STRING_EMPTY(str_show_manual_login) && IS_STRING_EMPTY(str_show_remote_login) && IS_STRING_EMPTY(str_allow_guest)) {
         g_printerr (N_("Wrong usage of the command\n%s"), g_option_context_get_help (context, FALSE, NULL));
         g_option_context_free (context);
         return 1;
@@ -231,6 +235,15 @@ main (int argc, char *argv[])
             return 1;
         }
     }
+    if (!(IS_STRING_EMPTY(str_show_remote_login)) && (return_code == 0)) {
+        if (str_to_bool(str_show_remote_login, &show_remote_login) == 0) {
+            return_code = update_boolean (show_remote_login, keep_old, SEATDEFAULT_KEY_GROUP, REMOTE_LOGIN_KEY_NAME, keyfile);
+        }
+        else {
+            g_printerr (N_("true and false are the only valid choices for show-remote-login\n"));
+            return 1;
+        }
+    }
 
     if (return_code == 0) {
         s_data = g_key_file_to_data (keyfile, &size, &error);