diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2011-07-14 13:18:25 +1000 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2011-07-14 13:18:25 +1000 |
commit | f6fd86b913a6bd56a1bc179b0a2d26ea9b87d332 (patch) | |
tree | 53811ce072ef2f0f15f40afc0da09d85913e0481 /liblightdm-gobject | |
parent | 52af281d7a69b80552f1975c9cff250d533875bc (diff) | |
download | lightdm-f6fd86b913a6bd56a1bc179b0a2d26ea9b87d332.tar.gz |
Added two signals: select-user and select-guest. This requires the greeter to select a user account for logging in
Diffstat (limited to 'liblightdm-gobject')
-rw-r--r-- | liblightdm-gobject/greeter-protocol.h | 3 | ||||
-rw-r--r-- | liblightdm-gobject/greeter.c | 44 | ||||
-rw-r--r-- | liblightdm-gobject/lightdm/greeter.h | 2 |
3 files changed, 48 insertions, 1 deletions
diff --git a/liblightdm-gobject/greeter-protocol.h b/liblightdm-gobject/greeter-protocol.h index 5d8701bc..bccce500 100644 --- a/liblightdm-gobject/greeter-protocol.h +++ b/liblightdm-gobject/greeter-protocol.h @@ -27,7 +27,8 @@ typedef enum GREETER_MESSAGE_QUIT = 102, GREETER_MESSAGE_PROMPT_AUTHENTICATION = 103, GREETER_MESSAGE_END_AUTHENTICATION = 104, - GREETER_MESSAGE_USER_DEFAULTS = 106 + GREETER_MESSAGE_SELECT_USER = 107, + GREETER_MESSAGE_SELECT_GUEST = 108 } GreeterMessage; #endif /* _GREETER_PROTOCOL_H_ */ diff --git a/liblightdm-gobject/greeter.c b/liblightdm-gobject/greeter.c index 0abc1b2f..aa722e7d 100644 --- a/liblightdm-gobject/greeter.c +++ b/liblightdm-gobject/greeter.c @@ -50,6 +50,8 @@ enum { SHOW_MESSAGE, AUTHENTICATION_COMPLETE, TIMED_LOGIN, + SELECT_USER, + SELECT_GUEST, USER_ADDED, USER_CHANGED, USER_REMOVED, @@ -326,6 +328,7 @@ from_server_cb (GIOChannel *source, GIOCondition condition, gpointer data) LdmGreeter *greeter = data; gsize offset; guint32 id, sequence_number, return_code; + gchar *username; if (!read_packet (greeter, FALSE)) return TRUE; @@ -382,6 +385,16 @@ from_server_cb (GIOChannel *source, GIOCondition condition, gpointer data) else g_debug ("Ignoring end authentication with invalid sequence number %d", sequence_number); break; + case GREETER_MESSAGE_SELECT_USER: + username = read_string (greeter, &offset); + g_debug ("Got request to select user %s", username); + g_signal_emit (G_OBJECT (greeter), signals[SELECT_USER], 0, username); + g_free (username); + break; + case GREETER_MESSAGE_SELECT_GUEST: + g_debug ("Got request to select guest account"); + g_signal_emit (G_OBJECT (greeter), signals[SELECT_GUEST], 0); + break; default: g_warning ("Unknown message from server: %d", id); break; @@ -1986,6 +1999,37 @@ ldm_greeter_class_init (LdmGreeterClass *klass) G_TYPE_NONE, 1, G_TYPE_STRING); /** + * LdmGreeter::select-user: + * @greeter: A #LdmGreeter + * @username: A username + * + * The ::select-user signal gets emitted when the daemon request the greeter to select a user to log in as. + **/ + signals[SELECT_USER] = + g_signal_new ("select-user", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (LdmGreeterClass, select_user), + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + + /** + * LdmGreeter::select-guest: + * @greeter: A #LdmGreeter + * + * The ::select-guest signal gets emitted when the deamon requests the greeter to select the guest account. + **/ + signals[SELECT_GUEST] = + g_signal_new ("select-guest", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (LdmGreeterClass, select_guest), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** * LdmGreeter::user-added: * @greeter: A #LdmGreeter * diff --git a/liblightdm-gobject/lightdm/greeter.h b/liblightdm-gobject/lightdm/greeter.h index c10c4a84..fd231872 100644 --- a/liblightdm-gobject/lightdm/greeter.h +++ b/liblightdm-gobject/lightdm/greeter.h @@ -60,6 +60,8 @@ struct _LdmGreeterClass void (*show_message)(LdmGreeter *greeter, const gchar *text, LdmMessageType type); void (*authentication_complete)(LdmGreeter *greeter); void (*timed_login)(LdmGreeter *greeter, const gchar *username); + void (*select_user)(LdmGreeter *greeter, const gchar *username); + void (*select_guest)(LdmGreeter *greeter); void (*user_added)(LdmGreeter *greeter, LdmUser *user); void (*user_changed)(LdmGreeter *greeter, LdmUser *user); void (*user_removed)(LdmGreeter *greeter, LdmUser *user); |