[gdm/multi-stack: 27/31] Pull verification functions out into their own subroutines



commit 3122b474ebd0325e2cd6e45748f3a67e3436a5a6
Author: Ray Strode <rstrode redhat com>
Date:   Mon Mar 2 13:53:34 2009 -0500

    Pull verification functions out into their own subroutines
    
    This makes the function smaller and easier to read
---
 gui/simple-greeter/gdm-greeter-login-window.c |  110 ++++++++++++++++---------
 1 files changed, 70 insertions(+), 40 deletions(-)

diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
index 78e4644..ac3767a 100644
--- a/gui/simple-greeter/gdm-greeter-login-window.c
+++ b/gui/simple-greeter/gdm-greeter-login-window.c
@@ -1609,6 +1609,17 @@ begin_task_verification (GdmTaskList           *task_list,
         return FALSE;
 }
 
+static void
+begin_verification (GdmGreeterLoginWindow *login_window)
+{
+        gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list),
+                                    (GdmTaskListForeachFunc)
+                                    begin_task_verification,
+                                    login_window);
+
+        switch_mode (login_window, MODE_MULTIPLE_AUTHENTICATION);
+}
+
 static gboolean
 begin_task_verification_for_selected_user (GdmTaskList           *task_list,
                                            GdmTask               *task,
@@ -1634,6 +1645,15 @@ begin_task_verification_for_selected_user (GdmTaskList           *task_list,
 }
 
 static void
+begin_verification_for_selected_user (GdmGreeterLoginWindow *login_window)
+{
+        gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list),
+                                    (GdmTaskListForeachFunc)
+                                    begin_task_verification_for_selected_user,
+                                    login_window);
+}
+
+static void
 on_user_chosen (GdmGreeterLoginWindow *login_window,
                 const char            *user_name)
 {
@@ -1642,15 +1662,55 @@ on_user_chosen (GdmGreeterLoginWindow *login_window,
         g_signal_emit (G_OBJECT (login_window), signals[USER_SELECTED],
                        0, user_name);
 
-        gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list),
-                                    (GdmTaskListForeachFunc)
-                                    begin_task_verification_for_selected_user,
-                                    login_window);
+        begin_verification_for_selected_user (login_window);
 
         switch_mode (login_window, MODE_MULTIPLE_AUTHENTICATION);
 }
 
 static void
+begin_auto_login (GdmGreeterLoginWindow *login_window)
+{
+        g_signal_emit (login_window, signals[BEGIN_AUTO_LOGIN], 0,
+                       login_window->priv->timed_login_username);
+
+        login_window->priv->timed_login_enabled = TRUE;
+        restart_timed_login_timeout (login_window);
+
+        /* just wait for the user to select language and stuff */
+        set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN);
+        set_message (login_window, _("Select language and click Log In"));
+
+        switch_mode (login_window, MODE_SINGLE_AUTHENTICATION);
+}
+
+static void
+begin_single_service_verification (GdmGreeterLoginWindow *login_window,
+                                   const char            *service_name)
+{
+        GdmTask *task;
+
+        task = gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list),
+                                           (GdmTaskListForeachFunc)
+                                           task_has_service_name,
+                                           (gpointer) service_name);
+
+        if (task == NULL) {
+                g_debug ("GdmGreeterLoginWindow: %s has no task associated with it", service_name);
+                return;
+        }
+        g_debug ("GdmGreeterLoginWindow: Beginning auth conversation for item %s", service_name);
+        /* FIXME: we should probably give the plugin more say for
+         * what happens here.
+         */
+        g_signal_emit (login_window, signals[BEGIN_VERIFICATION], 0, service_name);
+
+        switch_mode (login_window, MODE_SINGLE_AUTHENTICATION);
+        gdm_task_list_set_active_task (GDM_TASK_LIST (login_window->priv->conversation_list), task);
+
+        g_object_unref (task);
+}
+
+static void
 on_user_chooser_activated (GdmUserChooserWidget  *user_chooser,
                            GdmGreeterLoginWindow *login_window)
 {
@@ -1669,53 +1729,23 @@ on_user_chooser_activated (GdmUserChooserWidget  *user_chooser,
         item_id = gdm_chooser_widget_get_active_item (GDM_CHOOSER_WIDGET (user_chooser));
         g_debug ("GdmGreeterLoginWindow: item chosen '%s'", item_id);
 
+        g_signal_emit (G_OBJECT (login_window), signals[USER_SELECTED],
+                       0, item_id);
+
         if (strcmp (item_id, GDM_USER_CHOOSER_USER_OTHER) == 0) {
                 g_debug ("GdmGreeterLoginWindow: Starting all auth conversations");
-                gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list),
-                                            (GdmTaskListForeachFunc)
-                                            begin_task_verification,
-                                            login_window);
                 g_free (item_id);
 
-                switch_mode (login_window, MODE_MULTIPLE_AUTHENTICATION);
+                begin_verification (login_window);
         } else if (strcmp (item_id, GDM_USER_CHOOSER_USER_AUTO) == 0) {
                 g_debug ("GdmGreeterLoginWindow: Starting auto login");
-                g_signal_emit (login_window, signals[BEGIN_AUTO_LOGIN], 0,
-                               login_window->priv->timed_login_username);
-
-                login_window->priv->timed_login_enabled = TRUE;
-                restart_timed_login_timeout (login_window);
-
-                /* just wait for the user to select language and stuff */
-                set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN);
-                set_message (login_window, _("Select language and click Log In"));
                 g_free (item_id);
 
-                switch_mode (login_window, MODE_SINGLE_AUTHENTICATION);
+                begin_auto_login (login_window);
         } else {
-                GdmTask *task;
-
-                task = gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list),
-                                                   (GdmTaskListForeachFunc)
-                                                   task_has_service_name,
-                                                   (gpointer) item_id);
 
-                if (task == NULL) {
-                        g_debug ("GdmGreeterLoginWindow: %s has no task associated with it", item_id);
-                        g_free (item_id);
-                        return;
-                }
-                g_debug ("GdmGreeterLoginWindow: Beginning auth conversation for item %s", item_id);
-                /* FIXME: we should probably give the plugin more say for
-                 * what happens here.
-                 */
-                g_signal_emit (login_window, signals[BEGIN_VERIFICATION], 0, item_id);
+                begin_single_service_verification (login_window, item_id);
                 g_free (item_id);
-
-                switch_mode (login_window, MODE_SINGLE_AUTHENTICATION);
-                gdm_task_list_set_active_task (GDM_TASK_LIST (login_window->priv->conversation_list), task);
-
-                g_object_unref (task);
         }
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]