[gnome-initial-setup/shell/4765: 27/362] Hide Enterprise Login button



commit 9aa6f437203916339d41a4c2debe3e02aff7889e
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date:   Wed Apr 30 12:12:59 2014 +0200

    Hide Enterprise Login button
    
    Instead, use the secret combination Ctrl+Alt+e to switch to Enterprise
    Login.
    
    [endlessm/eos-shell#2397]

 gnome-initial-setup/gis-assistant.c                |   19 ++++++++++
 gnome-initial-setup/gis-page.c                     |    8 ++++
 gnome-initial-setup/gis-page.h                     |    2 +
 .../pages/account/gis-account-page.c               |   36 ++++++++++++++-----
 .../pages/account/gis-account-page.ui              |    2 +-
 5 files changed, 56 insertions(+), 11 deletions(-)
---
diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c
index a97b91e..b956a77 100644
--- a/gnome-initial-setup/gis-assistant.c
+++ b/gnome-initial-setup/gis-assistant.c
@@ -162,6 +162,24 @@ gis_assistant_previous_page (GisAssistant *assistant)
 }
 
 static void
+update_accel_group (GisAssistant *assistant)
+{
+  GisAssistantPrivate *priv = gis_assistant_get_instance_private (assistant);
+  GtkWindow *window;
+  static GtkAccelGroup *accel_group = NULL;
+
+  window = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (assistant)));
+
+  /* Remove previous accel group */
+  if (accel_group)
+    gtk_window_remove_accel_group (window, accel_group);
+
+  accel_group = gis_page_get_accel_group (priv->current_page);
+  if (accel_group)
+    gtk_window_add_accel_group (window, accel_group);
+}
+
+static void
 remove_from_progress_indicator (GtkWidget *widget,
                                 gpointer   user_data)
 {
@@ -372,6 +390,7 @@ update_current_page (GisAssistant *assistant,
   update_applying_state (assistant);
   update_navigation_buttons (assistant);
   update_progress_indicator (assistant);
+  update_accel_group (assistant);
   gis_page_shown (page);
 }
 
diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c
index 997ebbb..a578470 100644
--- a/gnome-initial-setup/gis-page.c
+++ b/gnome-initial-setup/gis-page.c
@@ -259,6 +259,14 @@ gis_page_set_complete (GisPage *page, gboolean complete)
   g_object_notify_by_pspec (G_OBJECT (page), obj_props[PROP_COMPLETE]);
 }
 
+GtkAccelGroup *
+gis_page_get_accel_group (GisPage *page)
+{
+  if (GIS_PAGE_GET_CLASS (page)->get_accel_group)
+    return GIS_PAGE_GET_CLASS (page)->get_accel_group (page);
+  return NULL;
+}
+
 void
 gis_page_locale_changed (GisPage *page)
 {
diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h
index 77e427c..7c25c98 100644
--- a/gnome-initial-setup/gis-page.h
+++ b/gnome-initial-setup/gis-page.h
@@ -60,6 +60,7 @@ struct _GisPageClass
 
   GtkBuilder * (*get_builder) (GisPage *page);
   void         (*locale_changed) (GisPage *page);
+  GtkAccelGroup * (*get_accel_group) (GisPage *page);
   gboolean     (*apply) (GisPage *page,
                          GCancellable *cancellable);
   void         (*save_data) (GisPage *page);
@@ -73,6 +74,7 @@ void         gis_page_set_title (GisPage *page, char *title);
 gboolean     gis_page_get_complete (GisPage *page);
 void         gis_page_set_complete (GisPage *page, gboolean complete);
 GtkWidget *  gis_page_get_action_widget (GisPage *page);
+GtkAccelGroup *  gis_page_get_accel_group (GisPage *page);
 void         gis_page_locale_changed (GisPage *page);
 void         gis_page_apply_begin (GisPage *page, GisPageApplyCallback callback, gpointer user_data);
 void         gis_page_apply_cancel (GisPage *page);
diff --git a/gnome-initial-setup/pages/account/gis-account-page.c 
b/gnome-initial-setup/pages/account/gis-account-page.c
index 2489d91..51025e4 100644
--- a/gnome-initial-setup/pages/account/gis-account-page.c
+++ b/gnome-initial-setup/pages/account/gis-account-page.c
@@ -86,7 +86,7 @@ struct _GisAccountPagePrivate
   GCancellable *cancellable;
   gboolean join_prompted;
 
-  GtkWidget *action;
+  GtkAccelGroup *accel_group;
 };
 typedef struct _GisAccountPagePrivate GisAccountPagePrivate;
 
@@ -233,8 +233,6 @@ set_has_enterprise (GisAccountPage *page,
 
   if (!has_enterprise)
     set_mode (page, UM_LOCAL);
-
-  gtk_widget_set_visible (priv->action, has_enterprise);
 }
 
 static void
@@ -1112,11 +1110,14 @@ on_entry_changed (GtkEditable *editable,
 }
 
 static void
-toggle_mode (GtkToggleButton *button,
-             gpointer         user_data)
+switch_login_mode (GisAccountPage *page)
 {
-  set_mode (GIS_ACCOUNT_PAGE (user_data),
-            gtk_toggle_button_get_active (button) ? UM_ENTERPRISE : UM_LOCAL);
+  GisAccountPagePrivate *priv = gis_account_page_get_instance_private (page);
+
+  if (priv->mode == UM_LOCAL)
+    set_mode (page, UM_ENTERPRISE);
+  else
+    set_mode (page, UM_LOCAL);
 }
 
 static gboolean
@@ -1206,9 +1207,13 @@ gis_account_page_constructed (GObject *object)
 
   priv->has_enterprise = FALSE;
 
-  priv->action = WID("page-toggle");
-  g_signal_connect (priv->action, "toggled", G_CALLBACK (toggle_mode), page);
-  g_object_bind_property (page, "applying", priv->action, "sensitive", G_BINDING_INVERT_BOOLEAN);
+  priv->accel_group = gtk_accel_group_new ();
+  GClosure *closure = g_cclosure_new_swap (G_CALLBACK (switch_login_mode), page, NULL);
+
+  /* Use Ctrl+Alt+e to activate the enterprise login mode */
+  gtk_accel_group_connect (priv->accel_group, GDK_KEY_e, GDK_CONTROL_MASK | GDK_MOD1_MASK, 0, closure);
+  g_closure_unref (closure);
+ 
 
   /* force a refresh by setting to an invalid value */
   priv->mode = NUM_MODES;
@@ -1233,10 +1238,20 @@ gis_account_page_dispose (GObject *object)
   g_clear_object (&priv->realm_manager);
   g_clear_object (&priv->realm);
   g_clear_object (&priv->cancellable);
+  g_clear_object (&priv->accel_group);
 
   G_OBJECT_CLASS (gis_account_page_parent_class)->dispose (object);
 }
 
+static GtkAccelGroup *
+gis_account_page_get_accel_group (GisPage *page)
+{
+  GisAccountPage *account_page = GIS_ACCOUNT_PAGE (page);
+  GisAccountPagePrivate *priv = gis_account_page_get_instance_private (account_page);
+
+  return priv->accel_group;
+}
+
 static void
 gis_account_page_locale_changed (GisPage *page)
 {
@@ -1251,6 +1266,7 @@ gis_account_page_class_init (GisAccountPageClass *klass)
 
   page_class->page_id = PAGE_ID;
   page_class->locale_changed = gis_account_page_locale_changed;
+  page_class->get_accel_group = gis_account_page_get_accel_group;
   page_class->apply = gis_account_page_apply;
   page_class->save_data = gis_account_page_save_data;
   object_class->constructed = gis_account_page_constructed;
diff --git a/gnome-initial-setup/pages/account/gis-account-page.ui 
b/gnome-initial-setup/pages/account/gis-account-page.ui
index bf50b8d..666d7b3 100644
--- a/gnome-initial-setup/pages/account/gis-account-page.ui
+++ b/gnome-initial-setup/pages/account/gis-account-page.ui
@@ -588,7 +588,7 @@
     </child>
     <child>
       <object class="GtkToggleButton" id="page-toggle">
-        <property name="visible">True</property>
+        <property name="visible">False</property>
         <property name="use_underline">True</property>
         <property name="label" translatable="true">_Use Enterprise Login</property>
         <property name="halign">start</property>


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