[gnome-initial-setup] local account page: Add a confirm signal



commit 9d2b8882e18c3d7ead3a0e4cc7e62e722c41bf0a
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Sep 7 11:10:25 2014 -0400

    local account page: Add a confirm signal
    
    Add a confirm signal, and emit it when one of the entries is
    activated in a valid page. Also, add a function to forward the
    'shown' signal from the main account page.

 .../pages/account/gis-account-page-local.c         |   23 +++++++++++++++++++-
 .../pages/account/gis-account-page-local.h         |    1 +
 2 files changed, 23 insertions(+), 1 deletions(-)
---
diff --git a/gnome-initial-setup/pages/account/gis-account-page-local.c 
b/gnome-initial-setup/pages/account/gis-account-page-local.c
index e1d49cc..54dbf81 100644
--- a/gnome-initial-setup/pages/account/gis-account-page-local.c
+++ b/gnome-initial-setup/pages/account/gis-account-page-local.c
@@ -72,6 +72,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (GisAccountPageLocal, gis_account_page_local, GTK_TYP
 enum {
   VALIDATION_CHANGED,
   USER_CREATED,
+  CONFIRM,
   LAST_SIGNAL,
 };
 
@@ -363,6 +364,13 @@ avatar_callback (GdkPixbuf   *pixbuf,
 }
 
 static void
+confirm (GisAccountPageLocal *page)
+{
+  if (gis_account_page_local_validate (page))
+    g_signal_emit (page, signals[CONFIRM], 0);
+}
+
+static void
 gis_account_page_local_constructed (GObject *object)
 {
   GisAccountPageLocal *page = GIS_ACCOUNT_PAGE_LOCAL (object);
@@ -383,7 +391,9 @@ gis_account_page_local_constructed (GObject *object)
   g_signal_connect_swapped (priv->username_combo, "focus-out-event",
                             G_CALLBACK (on_focusout), page);
   g_signal_connect_swapped (gtk_bin_get_child (GTK_BIN (priv->username_combo)),
-                            "activate", G_CALLBACK (validate), page);
+                            "activate", G_CALLBACK (confirm), page);
+  g_signal_connect_swapped (priv->fullname_entry, "activate",
+                            G_CALLBACK (confirm), page);
 
   priv->valid_name = FALSE;
   priv->valid_username = FALSE;
@@ -520,6 +530,10 @@ gis_account_page_local_class_init (GisAccountPageLocalClass *klass)
   signals[USER_CREATED] = g_signal_new ("user-created", GIS_TYPE_ACCOUNT_PAGE_LOCAL,
                                         G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
                                         G_TYPE_NONE, 2, ACT_TYPE_USER, G_TYPE_STRING);
+
+  signals[CONFIRM] = g_signal_new ("confirm", GIS_TYPE_ACCOUNT_PAGE_LOCAL,
+                                   G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
+                                   G_TYPE_NONE, 0);
 }
 
 static void
@@ -553,3 +567,10 @@ gis_account_page_local_apply (GisAccountPageLocal *local, GisPage *page)
 
   return FALSE;
 }
+
+void
+gis_account_page_local_shown (GisAccountPageLocal *local)
+{
+  GisAccountPageLocalPrivate *priv = gis_account_page_local_get_instance_private (local);
+  gtk_widget_grab_focus (priv->fullname_entry); 
+}
diff --git a/gnome-initial-setup/pages/account/gis-account-page-local.h 
b/gnome-initial-setup/pages/account/gis-account-page-local.h
index 0a7a29d..bb70fd3 100644
--- a/gnome-initial-setup/pages/account/gis-account-page-local.h
+++ b/gnome-initial-setup/pages/account/gis-account-page-local.h
@@ -51,6 +51,7 @@ GType gis_account_page_local_get_type (void);
 gboolean gis_account_page_local_validate (GisAccountPageLocal *local);
 gboolean gis_account_page_local_apply (GisAccountPageLocal *local, GisPage *page);
 void gis_account_page_local_create_user (GisAccountPageLocal *local);
+void gis_account_page_local_shown (GisAccountPageLocal *local);
 
 G_END_DECLS
 


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