]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Fix up documentation and tweak UI
authorunknown <robert.ancell@gmail.com>
Sun, 27 Jun 2010 05:16:48 +0000 (15:16 +1000)
committerunknown <robert.ancell@gmail.com>
Sun, 27 Jun 2010 05:16:48 +0000 (15:16 +1000)
16 files changed:
doc/Makefile.am
doc/ldmgreeter-docs.sgml
doc/ldmgreeter-sections.txt [new file with mode: 0644]
doc/tmpl/greeter.sgml [new file with mode: 0644]
doc/tmpl/session.sgml [new file with mode: 0644]
doc/tmpl/user.sgml [new file with mode: 0644]
greeters/ldm-gtk-greeter.c
greeters/ldm-webkit-greeter.c
libldmgreeter/Makefile.am
libldmgreeter/greeter.c
libldmgreeter/greeter.h
libldmgreeter/session.c
libldmgreeter/session.h
libldmgreeter/user.c
libldmgreeter/user.h
themes/webkit/index.html

index 6edce8b852073c57c1ff198725f1ff0edf2237c1..338d4da6a64f40caed639c8f47fd00cb585344e6 100644 (file)
@@ -1,9 +1,9 @@
 DOC_MODULE=ldmgreeter
 
-DOC_SOURCE_DIR=$(top_srcdir)/libldmgreeter
-
 DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
 
+DOC_SOURCE_DIR=$(top_srcdir)/libldmgreeter
+
 HFILE_GLOB=$(top_srcdir)/libldmgreeter/*.h
 CFILE_GLOB=$(top_srcdir)/libldmgreeter/*.c
 
@@ -12,10 +12,10 @@ INCLUDES = \
        -I$(top_srcdir)/libldmgreeter
 
 GTKDOC_LIBS = \
-       $(LIBLDMGREETER_LIBS) \
-       -L$(top_builddir)/libldmgreeter \
-       -lldmgreeter
+       $(top_builddir)/libldmgreeter/libldmgreeter.la
+
+MKDB_OPTIONS=--sgml-mode --output-format=xml --name-space=ldm
 
 include $(top_srcdir)/gtk-doc.make
 
-DISTCLEANFILES = $(DOC_MODULE)-docs.xml $(DOC_MODULE)-overrides.txt $(DOC_MODULE)-sections.txt $(DOC_MODULE).types
+DISTCLEANFILES = Makefile.in $(DOC_MODULE)-docs.xml $(DOC_MODULE)-overrides.txt $(DOC_MODULE).types
index 316cc0cda368c158152cfd3f841359fdad560227..37f3e813c7c78b50a87bc146ec3c85197f6d8c71 100644 (file)
@@ -7,7 +7,9 @@
   </bookinfo>
 
   <part id="core">
-    <title>Gnome Scan Core Reference</title>
+    <title>LightDM Greeter Core Reference</title>
     <xi:include href="xml/greeter.xml"/>
+    <xi:include href="xml/session.xml"/>
+    <xi:include href="xml/user.xml"/>
   </part>
 </book>
diff --git a/doc/ldmgreeter-sections.txt b/doc/ldmgreeter-sections.txt
new file mode 100644 (file)
index 0000000..d3d727c
--- /dev/null
@@ -0,0 +1,80 @@
+<SECTION>
+<FILE>user</FILE>
+<TITLE>LdmUser</TITLE>
+LdmUser
+ldm_user_get_name
+ldm_user_get_real_name
+ldm_user_get_display_name
+ldm_user_get_image
+ldm_user_get_logged_in
+<SUBSECTION Standard>
+LDM_USER
+LDM_IS_USER
+LDM_TYPE_USER
+ldm_user_get_type
+LDM_USER_CLASS
+LDM_IS_USER_CLASS
+LDM_USER_GET_CLASS
+<SUBSECTION Private>
+LdmUserPrivate
+ldm_user_new
+</SECTION>
+
+<SECTION>
+<FILE>session</FILE>
+<TITLE>LdmSession</TITLE>
+LdmSession
+ldm_session_get_key
+ldm_session_get_name
+ldm_session_get_comment
+<SUBSECTION Standard>
+LDM_SESSION
+LDM_IS_SESSION
+LDM_TYPE_SESSION
+ldm_session_get_type
+LDM_SESSION_CLASS
+LDM_IS_SESSION_CLASS
+LDM_SESSION_GET_CLASS
+<SUBSECTION Private>
+LdmSessionPrivate
+ldm_session_new
+</SECTION>
+
+<SECTION>
+<FILE>greeter</FILE>
+<TITLE>LdmGreeter</TITLE>
+LdmGreeter
+ldm_greeter_new
+ldm_greeter_connect
+ldm_greeter_get_num_users
+ldm_greeter_get_users
+ldm_greeter_get_sessions
+ldm_greeter_get_session
+ldm_greeter_set_session
+ldm_greeter_get_timed_login_user
+ldm_greeter_get_timed_login_delay
+ldm_greeter_cancel_timed_login
+ldm_greeter_start_authentication
+ldm_greeter_provide_secret
+ldm_greeter_cancel_authentication
+ldm_greeter_get_is_authenticated
+ldm_greeter_get_can_suspend
+ldm_greeter_suspend
+ldm_greeter_get_can_hibernate
+ldm_greeter_hibernate
+ldm_greeter_get_can_restart
+ldm_greeter_restart
+ldm_greeter_get_can_shutdown
+ldm_greeter_shutdown
+<SUBSECTION Standard>
+LDM_GREETER
+LDM_IS_GREETER
+LDM_TYPE_GREETER
+ldm_greeter_get_type
+LDM_GREETER_CLASS
+LDM_IS_GREETER_CLASS
+LDM_GREETER_GET_CLASS
+<SUBSECTION Private>
+LdmGreeterPrivate
+LdmGreeterClass
+</SECTION>
diff --git a/doc/tmpl/greeter.sgml b/doc/tmpl/greeter.sgml
new file mode 100644 (file)
index 0000000..f843837
--- /dev/null
@@ -0,0 +1,358 @@
+<!-- ##### SECTION Title ##### -->
+LdmGreeter
+
+<!-- ##### SECTION Short_Description ##### -->
+LightDM greeter object
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+#LdmGreeter is an object that manages the connection to the LightDM server and provides common greeter functionality.
+</para>
+<para>
+To connect to the display manager instanciate a #LdmGreeter object from inside the greeter process:
+<example>
+<title>Connecting to the display manager</title>
+<programlisting><![CDATA[
+LdmGreeter *greeter = ldm_greeter_new ();
+if (!ldm_greeter_connect (LDM_GREETER (greeter))) {
+    // Log an error
+    exit (0);
+}
+]]></programlisting>
+</example>
+Information on how to connect to the display manager is passed using environment variables.
+</para>
+<para>
+Once connected, start an authentication conversation like this:
+<example>
+<title>Example Authorization Conversation</title>
+<programlisting><![CDATA[
+static void show_prompt_cb (LdmGreeter *greeter, const char *text)
+{
+    // Show the user the message and prompt for some response
+    gchar *secret = ask_user_question (text);
+
+    // Give the result to the user
+    ldm_greeter_provide_secret (greeter, secret);
+}
+
+static void authentication_complete_cb (LdmGreeter *greeter)
+{
+    if (ldm_greeter_get_is_authenticated (greeter)) {
+        // Log in to this session.
+        ldm_greeter_login (greeter);
+    }
+    else {
+        // Display a warning and reset the greeter
+    }
+}
+
+static void quit_cb (LdmGreeter *greeter)
+{
+    // Clean up
+    // ...
+    
+    exit (0);
+}
+
+g_object_connect (G_OBJECT (greeter), "show-prompt", G_CALLBACK (show_prompt_cb), NULL);
+g_object_connect (G_OBJECT (greeter), "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
+g_object_connect (G_OBJECT (greeter), "quit", G_CALLBACK (quit_cb), NULL);
+]]></programlisting>
+</example>
+</para>
+
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT LdmGreeter ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SIGNAL LdmGreeter::authentication-complete ##### -->
+<para>
+
+</para>
+
+@ldmgreeter: the object which received the signal.
+
+<!-- ##### SIGNAL LdmGreeter::show-error ##### -->
+<para>
+
+</para>
+
+@ldmgreeter: the object which received the signal.
+@arg1: 
+
+<!-- ##### SIGNAL LdmGreeter::show-message ##### -->
+<para>
+
+</para>
+
+@ldmgreeter: the object which received the signal.
+@arg1: 
+
+<!-- ##### SIGNAL LdmGreeter::show-prompt ##### -->
+<para>
+
+</para>
+
+@ldmgreeter: the object which received the signal.
+@arg1: 
+
+<!-- ##### SIGNAL LdmGreeter::timed-login ##### -->
+<para>
+
+</para>
+
+@ldmgreeter: the object which received the signal.
+@arg1: 
+
+<!-- ##### ARG LdmGreeter:can-hibernate ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmGreeter:can-restart ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmGreeter:can-shutdown ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmGreeter:can-suspend ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmGreeter:is-authenticated ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmGreeter:login-delay ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmGreeter:num-users ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmGreeter:session ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmGreeter:timed-login-user ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION ldm_greeter_new ##### -->
+<para>
+
+</para>
+
+@void: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_connect ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_num_users ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_users ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_sessions ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_session ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_set_session ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@session: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_timed_login_user ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_timed_login_delay ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_cancel_timed_login ##### -->
+<para>
+
+</para>
+
+@greeter: 
+
+
+<!-- ##### FUNCTION ldm_greeter_start_authentication ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@username: 
+
+
+<!-- ##### FUNCTION ldm_greeter_provide_secret ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@secret: 
+
+
+<!-- ##### FUNCTION ldm_greeter_cancel_authentication ##### -->
+<para>
+
+</para>
+
+@greeter: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_is_authenticated ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_can_suspend ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_suspend ##### -->
+<para>
+
+</para>
+
+@greeter: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_can_hibernate ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_hibernate ##### -->
+<para>
+
+</para>
+
+@greeter: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_can_restart ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_restart ##### -->
+<para>
+
+</para>
+
+@greeter: 
+
+
+<!-- ##### FUNCTION ldm_greeter_get_can_shutdown ##### -->
+<para>
+
+</para>
+
+@greeter: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_greeter_shutdown ##### -->
+<para>
+
+</para>
+
+@greeter: 
+
+
diff --git a/doc/tmpl/session.sgml b/doc/tmpl/session.sgml
new file mode 100644 (file)
index 0000000..adec4ff
--- /dev/null
@@ -0,0 +1,70 @@
+<!-- ##### SECTION Title ##### -->
+LdmSession
+
+<!-- ##### SECTION Short_Description ##### -->
+Information about a session
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Object containing information about available sessions on this system. #LdmSession objects are not created by the user, but provided by the #LdmGreeter object.
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT LdmSession ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG LdmSession:comment ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmSession:key ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmSession:name ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION ldm_session_get_key ##### -->
+<para>
+
+</para>
+
+@session: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_session_get_name ##### -->
+<para>
+
+</para>
+
+@session: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_session_get_comment ##### -->
+<para>
+
+</para>
+
+@session: 
+@Returns: 
+
+
diff --git a/doc/tmpl/user.sgml b/doc/tmpl/user.sgml
new file mode 100644 (file)
index 0000000..732fa76
--- /dev/null
@@ -0,0 +1,114 @@
+<!-- ##### SECTION Title ##### -->
+LdmUser
+
+<!-- ##### SECTION Short_Description ##### -->
+Information about a user
+
+<!-- ##### SECTION Long_Description ##### -->
+<para>
+Object containing information about a user present on this system. #LdmUser objects are not created by the user, but provided by the #LdmGreeter object.
+</para>
+<para>
+A user has the following properties:
+<itemizedlist>
+<listitem>
+    <para>The user name is used to refer to this user.</para>
+</listitem>
+<listitem>
+    <para>The real name is the name of the person that owns this user account.</para>
+</listitem>
+<listitem>
+    <para>The display name provides text to use for the user label.</para>
+</listitem>
+<listitem>
+    <para>The image URI provides an image to use for the user.</para>
+</listitem>
+</itemizedlist>
+</para>
+
+<!-- ##### SECTION See_Also ##### -->
+<para>
+</para>
+
+<!-- ##### SECTION Stability_Level ##### -->
+
+
+<!-- ##### SECTION Image ##### -->
+
+
+<!-- ##### STRUCT LdmUser ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ARG LdmUser:display-name ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmUser:image ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmUser:logged-in ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmUser:name ##### -->
+<para>
+
+</para>
+
+<!-- ##### ARG LdmUser:real-name ##### -->
+<para>
+
+</para>
+
+<!-- ##### FUNCTION ldm_user_get_name ##### -->
+<para>
+
+</para>
+
+@user: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_user_get_real_name ##### -->
+<para>
+
+</para>
+
+@user: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_user_get_display_name ##### -->
+<para>
+
+</para>
+
+@user: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_user_get_image ##### -->
+<para>
+
+</para>
+
+@user: 
+@Returns: 
+
+
+<!-- ##### FUNCTION ldm_user_get_logged_in ##### -->
+<para>
+
+</para>
+
+@user: 
+@Returns: 
+
+
index 642b6c87e030befe94cf62818f0b084e43db5065..c65e5a24a4f7575c3d9b02a3c9028f5fba308940 100644 (file)
@@ -67,16 +67,26 @@ static void
 authentication_complete_cb (LdmGreeter *greeter)
 {
     if (ldm_greeter_get_is_authenticated (greeter))
-        gtk_main_quit ();
-
-    gtk_widget_show (label);
-    gtk_label_set_text (GTK_LABEL (label), "Failed to authenticate");
-    gtk_entry_set_text (GTK_ENTRY (password_entry), "");
-    gtk_widget_grab_focus (username_entry);
+    {
+        ldm_greeter_login (greeter);
+    }
+    else
+    {
+        gtk_widget_show (label);
+        gtk_label_set_text (GTK_LABEL (label), "Failed to authenticate");
+        gtk_entry_set_text (GTK_ENTRY (password_entry), "");
+        gtk_widget_grab_focus (username_entry);
+    }
 }
 
 static void
 timed_login_cb (LdmGreeter *greeter, const gchar *username)
+{
+    ldm_greeter_login (greeter);
+}
+
+static void
+quit_cb (LdmGreeter *greeter, const gchar *username)
 {
     gtk_main_quit ();
 }
@@ -112,6 +122,7 @@ main(int argc, char **argv)
     g_signal_connect (G_OBJECT (greeter), "show-error", G_CALLBACK (show_message_cb), NULL);
     g_signal_connect (G_OBJECT (greeter), "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
     g_signal_connect (G_OBJECT (greeter), "timed-login", G_CALLBACK (timed_login_cb), NULL);
+    g_signal_connect (G_OBJECT (greeter), "quit", G_CALLBACK (quit_cb), NULL);
 
     ldm_greeter_connect (greeter);
 
index 0f7398eb0db35bd4ffa921d6ed7d899044548d70..3a438af90a10594908adf4f01d6009e4d8ded2ef 100644 (file)
@@ -46,7 +46,17 @@ authentication_complete_cb (LdmGreeter *greeter, WebKitWebView *view)
 }
 
 static void
-timed_login_cb (LdmGreeter *greeter, const gchar *username)
+timed_login_cb (LdmGreeter *greeter, const gchar *username, WebKitWebView *view)
+{
+    gchar *command;
+  
+    command = g_strdup_printf ("timed_login('%s')", username); // FIXME: Escape text
+    webkit_web_view_execute_script (view, command);
+    g_free (command);
+}
+
+static void
+quit_cb (LdmGreeter *greeter, const gchar *username)
 {
     gtk_main_quit ();
 }
@@ -478,18 +488,21 @@ shutdown_cb (JSContextRef context,
 }
 
 static JSValueRef
-close_cb (JSContextRef context,
+login_cb (JSContextRef context,
           JSObjectRef function,
           JSObjectRef thisObject,
           size_t argumentCount,
           const JSValueRef arguments[],
           JSValueRef *exception)
 {
+    LdmGreeter *greeter = JSObjectGetPrivate (thisObject);
+
     // FIXME: Throw exception
     if (argumentCount != 0)
         return JSValueMakeNull (context);
 
-    exit (0);
+    ldm_greeter_login (greeter);
+    return JSValueMakeNull (context);
 }
 
 static const JSStaticValue ldm_user_values[] =
@@ -535,7 +548,7 @@ static const JSStaticFunction ldm_functions[] =
     { "hibernate", hibernate_cb, kJSPropertyAttributeReadOnly },
     { "restart", restart_cb, kJSPropertyAttributeReadOnly },
     { "shutdown", shutdown_cb, kJSPropertyAttributeReadOnly },
-    { "close", close_cb, kJSPropertyAttributeReadOnly },
+    { "login", login_cb, kJSPropertyAttributeReadOnly },
     { NULL, NULL, 0 }
 };
 
@@ -626,6 +639,7 @@ main(int argc, char **argv)
     g_signal_connect (G_OBJECT (greeter), "show-error", G_CALLBACK (show_message_cb), web_view);
     g_signal_connect (G_OBJECT (greeter), "authentication-complete", G_CALLBACK (authentication_complete_cb), web_view);
     g_signal_connect (G_OBJECT (greeter), "timed-login", G_CALLBACK (timed_login_cb), web_view);
+    g_signal_connect (G_OBJECT (greeter), "quit", G_CALLBACK (quit_cb), web_view);
 
     webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), url);
     ldm_greeter_connect (greeter);
index 258a65503d0a7cc4a1472f9d019fa507f413b45f..d3decded948b85c7ac31e7bb136f6baa77eb8ff4 100644 (file)
@@ -13,7 +13,7 @@ libldmgreeter_la_SOURCES= \
        session.c \
        user.c
 
-libldmgreeterincludedir=$(includedir)/lightdm-1.0
+libldmgreeterincludedir=$(includedir)/lightdm-1.0/lightdm
 
 if HAVE_INTROSPECTION
 
index c48450086235c662af73cf173aa4fa1ed8192b42..bc457ca18e4f3f716877a0a1d6d55e2a10fbb98c 100644 (file)
@@ -38,11 +38,12 @@ enum {
     SHOW_ERROR,
     AUTHENTICATION_COMPLETE,
     TIMED_LOGIN,
+    QUIT,
     LAST_SIGNAL
 };
 static guint signals[LAST_SIGNAL] = { 0 };
 
-struct LdmGreeterPrivate
+struct _LdmGreeterPrivate
 {
     DBusGConnection *lightdm_bus;
 
@@ -191,10 +192,13 @@ ldm_greeter_get_num_users (LdmGreeter *greeter)
 
 /**
  * ldm_greeter_get_users:
- * @greeter:
+ * @greeter: A #LdmGreeter
+ * 
+ * Get a list of users to present to the user.  This list may be a subset of the
+ * available users and may be empty depending on the server configuration.
  * 
  * Return value: A list of #LdmUser that should be presented to the user.
- */
+ **/
 const GList *
 ldm_greeter_get_users (LdmGreeter *greeter)
 {
@@ -251,6 +255,14 @@ update_sessions (LdmGreeter *greeter)
     greeter->priv->have_sessions = TRUE;
 }
 
+/**
+ * ldm_greeter_get_sessions:
+ * @greeter: A #LdmGreeter
+ *
+ * Get the available sessions.
+ *
+ * Return value: A list of #LdmSession
+ **/
 const GList *
 ldm_greeter_get_sessions (LdmGreeter *greeter)
 {
@@ -258,6 +270,13 @@ ldm_greeter_get_sessions (LdmGreeter *greeter)
     return greeter->priv->sessions;
 }
 
+/**
+ * ldm_greeter_set_session:
+ * @greeter: A #LdmGreeter
+ * @session: A session name.
+ * 
+ * Set the session to log into.
+ **/
 void
 ldm_greeter_set_session (LdmGreeter *greeter, const gchar *session)
 {
@@ -276,24 +295,54 @@ ldm_greeter_set_session (LdmGreeter *greeter, const gchar *session)
     g_clear_error (&error);
 }
 
+/**
+ * ldm_greeter_get_session:
+ * @greeter: A #LdmGreeter
+ *
+ * Get the session that will be logged into.
+ *
+ * Return value: The session name
+ **/
 const gchar *
 ldm_greeter_get_session (LdmGreeter *greeter)
 {
     return greeter->priv->session;
 }
 
+/**
+ * ldm_greeter_get_timed_login_user:
+ * @greeter: A #LdmGreeter
+ *
+ * Get the user to log in by as default.
+ *
+ * Return value: A username
+ */
 const gchar *
 ldm_greeter_get_timed_login_user (LdmGreeter *greeter)
 {
     return greeter->priv->timed_user;
 }
 
+/**
+ * ldm_greeter_get_timed_login_delay:
+ * @greeter: A #LdmGreeter
+ *
+ * Get the number of seconds to wait until logging in as the default user.
+ *
+ * Return value: The number of seconds before logging in as the default user
+ */
 gint
 ldm_greeter_get_timed_login_delay (LdmGreeter *greeter)
 {
     return greeter->priv->login_delay;
 }
 
+/**
+ * ldm_greeter_cancel_timed_login:
+ * @greeter: A #LdmGreeter
+ *
+ * Cancel the login as the default user.
+ */
 void
 ldm_greeter_cancel_timed_login (LdmGreeter *greeter)
 {
@@ -361,12 +410,26 @@ auth_response_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer userdata)
     g_ptr_array_unref (array);
 }
 
+/**
+ * ldm_greeter_start_authentication:
+ * @greeter: A #LdmGreeter
+ * @username: A username
+ *
+ * Starts the authentication procedure for a user.
+ **/
 void
 ldm_greeter_start_authentication (LdmGreeter *greeter, const char *username)
 {
     dbus_g_proxy_begin_call (greeter->priv->display_proxy, "StartAuthentication", auth_response_cb, greeter, NULL, G_TYPE_STRING, username, G_TYPE_INVALID);
 }
 
+/**
+ * ldm_greeter_provide_secret:
+ * @greeter: A #LdmGreeter
+ * @secret: Response to a prompt
+ *
+ * Provide secret information from a prompt.
+ **/
 void
 ldm_greeter_provide_secret (LdmGreeter *greeter, const gchar *secret)
 {
@@ -379,22 +442,51 @@ ldm_greeter_provide_secret (LdmGreeter *greeter, const gchar *secret)
     dbus_g_proxy_begin_call (greeter->priv->display_proxy, "ContinueAuthentication", auth_response_cb, greeter, NULL, G_TYPE_STRV, secrets, G_TYPE_INVALID);
 }
 
+/**
+ * ldm_greeter_cancel_authentication:
+ * @greeter: A #LdmGreeter
+ * 
+ * Cancel the current user authentication.
+ **/
 void
 ldm_greeter_cancel_authentication (LdmGreeter *greeter)
 {
 }
 
+/**
+ * ldm_greeter_get_is_authenticated:
+ * @greeter: A #LdmGreeter
+ * 
+ * Checks if the greeter has successfully authenticated.
+ *
+ * Return value: TRUE if the greeter is authenticated for login.
+ **/
 gboolean
 ldm_greeter_get_is_authenticated (LdmGreeter *greeter)
 {
     return greeter->priv->is_authenticated;
 }
 
+/**
+ * ldm_greeter_login:
+ * @greeter: A #LdmGreeter
+ * 
+ * Login with the currently authenticated user.
+ **/
+void
+ldm_greeter_login (LdmGreeter *greeter)
+{
+    /* Quitting the greeter will cause the login to occur */
+    g_signal_emit (G_OBJECT (greeter), signals[QUIT], 0);
+}
+
 /**
  * ldm_greeter_get_can_suspend:
  * @greeter: A #LdmGreeter
+ * 
+ * Checks if the greeter is authorized to do a system suspend.
  *
- * Return value: TRUE if the greeter can suspend the machine
+ * Return value: TRUE if the greeter can suspend the system
  **/
 gboolean
 ldm_greeter_get_can_suspend (LdmGreeter *greeter)
@@ -416,6 +508,12 @@ ldm_greeter_get_can_suspend (LdmGreeter *greeter)
     return result;
 }
 
+/**
+ * ldm_greeter_suspend:
+ * @greeter: A #LdmGreeter
+ * 
+ * Triggers a system suspend.
+ **/
 void
 ldm_greeter_suspend (LdmGreeter *greeter)
 {
@@ -433,6 +531,14 @@ ldm_greeter_suspend (LdmGreeter *greeter)
     g_object_unref (proxy);
 }
 
+/**
+ * ldm_greeter_get_can_hibernate:
+ * @greeter: A #LdmGreeter
+ * 
+ * Checks if the greeter is authorized to do a system hibernate.
+ *
+ * Return value: TRUE if the greeter can hibernate the system
+ **/
 gboolean
 ldm_greeter_get_can_hibernate (LdmGreeter *greeter)
 {
@@ -453,6 +559,12 @@ ldm_greeter_get_can_hibernate (LdmGreeter *greeter)
     return result;
 }
 
+/**
+ * ldm_greeter_hibernate:
+ * @greeter: A #LdmGreeter
+ * 
+ * Triggers a system hibernate.
+ **/
 void
 ldm_greeter_hibernate (LdmGreeter *greeter)
 {
@@ -470,6 +582,14 @@ ldm_greeter_hibernate (LdmGreeter *greeter)
     g_object_unref (proxy);
 }
 
+/**
+ * ldm_greeter_get_can_restart:
+ * @greeter: A #LdmGreeter
+ * 
+ * Checks if the greeter is authorized to do a system restart.
+ *
+ * Return value: TRUE if the greeter can restart the system
+ **/
 gboolean
 ldm_greeter_get_can_restart (LdmGreeter *greeter)
 {
@@ -490,6 +610,12 @@ ldm_greeter_get_can_restart (LdmGreeter *greeter)
     return result; 
 }
 
+/**
+ * ldm_greeter_restart:
+ * @greeter: A #LdmGreeter
+ * 
+ * Triggers a system restart.
+ **/
 void
 ldm_greeter_restart (LdmGreeter *greeter)
 {
@@ -507,6 +633,14 @@ ldm_greeter_restart (LdmGreeter *greeter)
     g_object_unref (proxy);
 }
 
+/**
+ * ldm_greeter_get_can_shutdown:
+ * @greeter: A #LdmGreeter
+ * 
+ * Checks if the greeter is authorized to do a system shutdown.
+ *
+ * Return value: TRUE if the greeter can shutdown the system
+ **/
 gboolean
 ldm_greeter_get_can_shutdown (LdmGreeter *greeter)
 {
@@ -527,6 +661,12 @@ ldm_greeter_get_can_shutdown (LdmGreeter *greeter)
     return result; 
 }
 
+/**
+ * ldm_greeter_shutdown:
+ * @greeter: A #LdmGreeter
+ * 
+ * Triggers a system shutdown.
+ **/
 void
 ldm_greeter_shutdown (LdmGreeter *greeter)
 {
@@ -713,38 +853,42 @@ ldm_greeter_class_init (LdmGreeterClass *klass)
                                     PROP_CAN_SUSPEND,
                                     g_param_spec_boolean("can-suspend",
                                                          "can-suspend",
-                                                         "TRUE if allowed to suspend the machine",
+                                                         "TRUE if allowed to suspend the system",
                                                          FALSE,
                                                          G_PARAM_READABLE));
     g_object_class_install_property(object_class,
                                     PROP_CAN_HIBERNATE,
                                     g_param_spec_boolean("can-hibernate",
                                                          "can-hibernate",
-                                                         "TRUE if allowed to hibernate the machine",
+                                                         "TRUE if allowed to hibernate the system",
                                                          FALSE,
                                                          G_PARAM_READABLE));
     g_object_class_install_property(object_class,
                                     PROP_CAN_RESTART,
                                     g_param_spec_boolean("can-restart",
                                                          "can-restart",
-                                                         "TRUE if allowed to restart the machine",
+                                                         "TRUE if allowed to restart the system",
                                                          FALSE,
                                                          G_PARAM_READABLE));
     g_object_class_install_property(object_class,
                                     PROP_CAN_SHUTDOWN,
                                     g_param_spec_boolean("can-shutdown",
                                                          "can-shutdown",
-                                                         "TRUE if allowed to shutdown the machine",
+                                                         "TRUE if allowed to shutdown the system",
                                                          FALSE,
                                                          G_PARAM_READABLE));
 
     /**
      * LdmGreeter::show-prompt:
-     * @greeter: The greeter on which the signal is emitted
-     * @text: The text to show in the prompt
+     * @greeter: A #LdmGreeter
+     * @text: Prompt text
      * 
-     * The ::show-prompt signal gets emitted when the greeter
-     * should show a prompt to the user.
+     * The ::show-prompt signal gets emitted when the greeter should show a
+     * prompt to the user.  The given text should be displayed and an input
+     * field for the user to provide a response.
+     * 
+     * Call ldm_greeter_provide_secret() with the resultant input or
+     * ldm_greeter_cancel_authentication() to abort the authentication.
      **/
     signals[SHOW_PROMPT] =
         g_signal_new ("show-prompt",
@@ -754,6 +898,15 @@ ldm_greeter_class_init (LdmGreeterClass *klass)
                       NULL, NULL,
                       g_cclosure_marshal_VOID__STRING,
                       G_TYPE_NONE, 1, G_TYPE_STRING);
+
+    /**
+     * LdmGreeter::show-message:
+     * @greeter: A #LdmGreeter
+     * @text: Message text
+     *
+     * The ::show-message signal gets emitted when the greeter
+     * should show an informational message to the user.
+     **/
     signals[SHOW_MESSAGE] =
         g_signal_new ("show-message",
                       G_TYPE_FROM_CLASS (klass),
@@ -762,6 +915,15 @@ ldm_greeter_class_init (LdmGreeterClass *klass)
                       NULL, NULL,
                       g_cclosure_marshal_VOID__STRING,
                       G_TYPE_NONE, 1, G_TYPE_STRING);
+
+    /**
+     * LdmGreeter::show-error:
+     * @greeter: A #LdmGreeter
+     * @text: Message text
+     *
+     * The ::show-error signal gets emitted when the greeter
+     * should show an error message to the user.
+     **/
     signals[SHOW_ERROR] =
         g_signal_new ("show-error",
                       G_TYPE_FROM_CLASS (klass),
@@ -770,6 +932,17 @@ ldm_greeter_class_init (LdmGreeterClass *klass)
                       NULL, NULL,
                       g_cclosure_marshal_VOID__STRING,
                       G_TYPE_NONE, 1, G_TYPE_STRING);
+
+    /**
+     * LdmGreeter::authentication-complete:
+     * @greeter: A #LdmGreeter
+     *
+     * The ::authentication-complete signal gets emitted when the greeter
+     * has completed authentication.
+     * 
+     * Call ldm_greeter_get_is_authenticated() to check if the authentication
+     * was successful.
+     **/
     signals[AUTHENTICATION_COMPLETE] =
         g_signal_new ("authentication-complete",
                       G_TYPE_FROM_CLASS (klass),
@@ -778,6 +951,15 @@ ldm_greeter_class_init (LdmGreeterClass *klass)
                       NULL, NULL,
                       g_cclosure_marshal_VOID__VOID,
                       G_TYPE_NONE, 0);
+
+    /**
+     * LdmGreeter::timed-login:
+     * @greeter: A #LdmGreeter
+     * @username: A username
+     *
+     * The ::timed-login signal gets emitted when the default user timer
+     * has expired.
+     **/
     signals[TIMED_LOGIN] =
         g_signal_new ("timed-login",
                       G_TYPE_FROM_CLASS (klass),
@@ -786,4 +968,19 @@ ldm_greeter_class_init (LdmGreeterClass *klass)
                       NULL, NULL,
                       g_cclosure_marshal_VOID__STRING,
                       G_TYPE_NONE, 1, G_TYPE_STRING);
+
+    /**
+     * LdmGreeter::quit:
+     * @greeter: A #LdmGreeter
+     *
+     * The ::quit signal gets emitted when the greeter should exit.
+     **/
+    signals[TIMED_LOGIN] =
+        g_signal_new ("timed-login",
+                      G_TYPE_FROM_CLASS (klass),
+                      G_SIGNAL_RUN_LAST,
+                      G_STRUCT_OFFSET (LdmGreeterClass, quit),
+                      NULL, NULL,
+                      g_cclosure_marshal_VOID__VOID,
+                      G_TYPE_NONE, 0);
 }
index 73627c31b86c62df18402e91b3a1001a7fe46e92..3fad01d8e267bd46b92e3233da91c8a11c054f95 100644 (file)
@@ -26,28 +26,27 @@ G_BEGIN_DECLS
 #define LDM_IS_GREETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LDM_TYPE_GREETER))
 #define LDM_GREETER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), LDM_TYPE_GREETER, LdmGreeterClass))
 
+typedef struct _LdmGreeter        LdmGreeter;
+typedef struct _LdmGreeterClass   LdmGreeterClass;
+typedef struct _LdmGreeterPrivate LdmGreeterPrivate;
 
-/*<private>*/
-typedef struct LdmGreeterPrivate LdmGreeterPrivate;
-
-typedef struct
+struct _LdmGreeter
 {
     GObject            parent_instance;
     LdmGreeterPrivate *priv;
-} LdmGreeter;
+};
 
-typedef struct
+struct _LdmGreeterClass
 {
     GObjectClass parent_class;
 
-    /*< private >*/
-
     void (*show_prompt)(LdmGreeter *greeter, const gchar *text);
     void (*show_message)(LdmGreeter *greeter, const gchar *text);
     void (*show_error)(LdmGreeter *greeter, const gchar *text);
     void (*authentication_complete)(LdmGreeter *greeter);
     void (*timed_login)(LdmGreeter *greeter, const gchar *username);
-} LdmGreeterClass;
+    void (*quit)(LdmGreeter *greeter);
+};
 
 GType ldm_greeter_get_type (void);
 
@@ -79,6 +78,8 @@ void ldm_greeter_cancel_authentication (LdmGreeter *greeter);
 
 gboolean ldm_greeter_get_is_authenticated (LdmGreeter *greeter);
 
+void ldm_greeter_login (LdmGreeter *greeter);
+
 gboolean ldm_greeter_get_can_suspend (LdmGreeter *greeter);
 
 void ldm_greeter_suspend (LdmGreeter *greeter);
index 4c87374c421a712fde6e753e67e400752d417309..43933e6c2a18ecc0dc91a65da6ba91dfd7f8d4c5 100644 (file)
@@ -18,7 +18,7 @@ enum {
     PROP_COMMENT
 };
 
-struct LdmSessionPrivate
+struct _LdmSessionPrivate
 {
     gchar *key;
     gchar *name;
@@ -27,34 +27,68 @@ struct LdmSessionPrivate
 
 G_DEFINE_TYPE (LdmSession, ldm_session, G_TYPE_OBJECT);
 
+/**
+ * ldm_session_new:
+ * 
+ * Create a new session.
+ * @key: The unique key for this session
+ * @name: The name of this session
+ * @comment: The comment for this session
+ * 
+ * Return value: the new #LdmSession
+ **/
 LdmSession *
 ldm_session_new (const gchar *key, const gchar *name, const gchar *comment)
 {
     return g_object_new (LDM_TYPE_SESSION, "key", key, "name", name, "comment", comment, NULL);
 }
 
+/**
+ * ldm_session_get_key
+ * @session: A #LdmSession
+ * 
+ * Get the key for a session
+ * 
+ * Return value: The session key
+ **/
 const gchar *
-ldm_session_get_key (LdmSession *user)
+ldm_session_get_key (LdmSession *session)
 {
-    return user->priv->key;
+    return session->priv->key;
 }
 
+/**
+ * ldm_session_get_name
+ * @session: A #LdmSession
+ * 
+ * Get the name for a session
+ * 
+ * Return value: The session name
+ **/
 const gchar *
-ldm_session_get_name (LdmSession *user)
+ldm_session_get_name (LdmSession *session)
 {
-    return user->priv->name;
+    return session->priv->name;
 }
 
+/**
+ * ldm_session_get_comment
+ * @session: A #LdmSession
+ * 
+ * Get the comment for a session
+ * 
+ * Return value: The session comment
+ **/
 const gchar *
-ldm_session_get_comment (LdmSession *user)
+ldm_session_get_comment (LdmSession *session)
 {
-    return user->priv->comment;
+    return session->priv->comment;
 }
 
 static void
-ldm_session_init (LdmSession *user)
+ldm_session_init (LdmSession *session)
 {
-    user->priv = G_TYPE_INSTANCE_GET_PRIVATE (user, LDM_TYPE_SESSION, LdmSessionPrivate);
+    session->priv = G_TYPE_INSTANCE_GET_PRIVATE (session, LDM_TYPE_SESSION, LdmSessionPrivate);
 }
 
 static void
index d97a0c1fd350cdb11307c6a4882da4e371324d1a..0118def3bd27ed2113e3aa9ef408aab812b8b59e 100644 (file)
@@ -23,28 +23,30 @@ G_BEGIN_DECLS
 #define LDM_IS_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LDM_TYPE_SESSION))
 #define LDM_SESSION_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), LDM_TYPE_SESSION, LdmSessionClass))
 
-typedef struct LdmSessionPrivate LdmSessionPrivate;
+typedef struct _LdmSession        LdmSession;
+typedef struct _LdmSessionClass   LdmSessionClass;
+typedef struct _LdmSessionPrivate LdmSessionPrivate;
 
-typedef struct
+struct _LdmSession
 {
     GObject            parent_instance;
     LdmSessionPrivate *priv;
-} LdmSession;
+};
 
-typedef struct
+struct _LdmSessionClass
 {
     GObjectClass parent_class;
-} LdmSessionClass;
+};
 
 GType ldm_session_get_type (void);
 
 LdmSession *ldm_session_new (const gchar *key, const gchar *name, const gchar *comment);
 
-const gchar *ldm_session_get_key (LdmSession *user);
+const gchar *ldm_session_get_key (LdmSession *session);
 
-const gchar *ldm_session_get_name (LdmSession *user);
+const gchar *ldm_session_get_name (LdmSession *session);
 
-const gchar *ldm_session_get_comment (LdmSession *user);
+const gchar *ldm_session_get_comment (LdmSession *session);
 
 G_END_DECLS
 
index 16bb94477eb2d0220a67c88eb71287c4a7f71431..f69ea856ee098cc8b80ba174c42be9d715778468 100644 (file)
@@ -20,7 +20,7 @@ enum {
     PROP_LOGGED_IN
 };
 
-struct LdmUserPrivate
+struct _LdmUserPrivate
 {
     gchar *name;
     gchar *real_name;
@@ -30,24 +30,59 @@ struct LdmUserPrivate
 
 G_DEFINE_TYPE (LdmUser, ldm_user, G_TYPE_OBJECT);
 
+/**
+ * ldm_user_new:
+ * 
+ * Create a new user.
+ * @name: The username
+ * @real_name: The real name of the user
+ * @image: The image URI
+ * @logged_in: TRUE if this user is currently logged in
+ * 
+ * Return value: the new #LdmUser
+ **/
 LdmUser *
 ldm_user_new (const gchar *name, const gchar *real_name, const gchar *image, gboolean logged_in)
 {
     return g_object_new (LDM_TYPE_USER, "name", name, "real-name", real_name, "image", image, "logged-in", logged_in, NULL);
 }
 
+/**
+ * ldm_user_get_name:
+ * @user: A #LdmUser
+ * 
+ * Get the name of a user.
+ * 
+ * Return value: The name of the given user
+ **/
 const gchar *
 ldm_user_get_name (LdmUser *user)
 {
     return user->priv->name;
 }
 
+/**
+ * ldm_user_get_real_name:
+ * @user: A #LdmUser
+ * 
+ * Get the real name of a user.
+ *
+ * Return value: The real name of the given user (may be blank)
+ **/
 const gchar *
 ldm_user_get_real_name (LdmUser *user)
 {
     return user->priv->real_name;
 }
 
+/**
+ * ldm_user_get_display_name:
+ * @user: A #LdmUser
+ * 
+ * Get the display name of a user.
+ * 
+ * Return value: The display name of the given user
+ **/
 const gchar *
 ldm_user_get_display_name (LdmUser *user)
 {
@@ -57,12 +92,28 @@ ldm_user_get_display_name (LdmUser *user)
         return user->priv->name;
 }
 
+/**
+ * ldm_user_get_image:
+ * @user: A #LdmUser
+ * 
+ * Get the image URI for a user.
+ * 
+ * Return value: The image URI for the given user or NULL if no URI
+ **/
 const gchar *
 ldm_user_get_image (LdmUser *user)
 {
     return user->priv->image;
 }
 
+/**
+ * ldm_user_get_logged_in:
+ * @user: A #LdmUser
+ * 
+ * Check if a user is logged in.
+ * 
+ * Return value: TRUE if the user is currently logged in.
+ **/
 gboolean
 ldm_user_get_logged_in (LdmUser *user)
 {
index 4ba2d5939d31c620123070b0c363df984da88f3c..d6ea8fe7af95b4d2f9349e6407e6d1b6bd8f4d90 100644 (file)
@@ -23,18 +23,20 @@ G_BEGIN_DECLS
 #define LDM_IS_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LDM_TYPE_USER))
 #define LDM_USER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), LDM_TYPE_USER, LdmUserClass))
 
-typedef struct LdmUserPrivate LdmUserPrivate;
+typedef struct _LdmUser        LdmUser;
+typedef struct _LdmUserClass   LdmUserClass;
+typedef struct _LdmUserPrivate LdmUserPrivate;
 
-typedef struct
+struct _LdmUser
 {
     GObject         parent_instance;
     LdmUserPrivate *priv;
-} LdmUser;
+};
 
-typedef struct
+struct _LdmUserClass
 {
     GObjectClass parent_class;
-} LdmUserClass;
+};
 
 GType ldm_user_get_type (void);
 
index f6c553ccde8ae40fa1951a0debcb62f5772d7b69..ac503e6810790658297ab0b2ce4842a4452139ce 100644 (file)
@@ -49,7 +49,7 @@ function authentication_complete()
 {
    if (lightdm.is_authenticated)
    {
-       lightdm.close();
+       lightdm.login();
        return;
    }