[evolution/express2] Don't use gconf to store the names of widgets to hide



commit 0b07840e26f7c793939ec8226695ffca19aa1bfb
Author: Federico Mena Quintero <federico novell com>
Date:   Mon Apr 26 18:13:24 2010 -0500

    Don't use gconf to store the names of widgets to hide
    
    That was just for development.  Now we hardcode the lists of widgets.
    
    Signed-off-by: Federico Mena Quintero <federico novell com>

 calendar/gui/apps_evolution_calendar.schemas.in |   20 ------------
 calendar/gui/dialogs/cal-prefs-dialog.c         |   11 ++++++-
 mail/evolution-mail.schemas.in                  |   38 -----------------------
 modules/mail/em-composer-prefs.c                |    7 +++-
 modules/mail/em-mailer-prefs.c                  |    8 ++++-
 shell/e-shell-utils.c                           |   38 ++++++++++------------
 shell/e-shell-utils.h                           |    3 +-
 7 files changed, 42 insertions(+), 83 deletions(-)
---
diff --git a/calendar/gui/apps_evolution_calendar.schemas.in b/calendar/gui/apps_evolution_calendar.schemas.in
index 66c2467..70590ee 100644
--- a/calendar/gui/apps_evolution_calendar.schemas.in
+++ b/calendar/gui/apps_evolution_calendar.schemas.in
@@ -802,25 +802,5 @@
          </long>
       </locale>
     </schema>
-
-    <!-- Widgets to hide in Express mode -->
-
-    <schema>
-      <key>/schemas/apps/evolution/calendar/express_preferences_hidden</key>
-      <applyto>/apps/evolution/calendar/express_preferences_hidden</applyto>
-      <owner>evolution-calendar</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <default>[label_second_zone,hbox_second_zone,timezone,timezone_label,hbox_use_system_timezone,hbox_time_divisions,show_end_times,month_scroll_by_week]</default>
-      <locale name="C">
-         <short>List of controls to hide when in Express mode</short>
-         <long>
-	   List of names for the controls in the user interface,
-	   which should be hidden when Evolution is running in Express
-	   mode.
-	   This pertains to the calendar preferences in cal-prefs-dialog.ui.
-         </long>
-      </locale>
-    </schema>
   </schemalist>
 </gconfschemafile>
diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c
index e778b6c..21675b4 100644
--- a/calendar/gui/dialogs/cal-prefs-dialog.c
+++ b/calendar/gui/dialogs/cal-prefs-dialog.c
@@ -778,7 +778,16 @@ calendar_prefs_dialog_construct (CalendarPrefsDialog *prefs,
 	e_datetime_format_add_setup_widget (table, 1, "calendar", "table",  DTFormatKindDate, _("Date only:"));
 
 	/* Hide senseless preferences when running in Express mode */
-	e_shell_hide_widgets_for_express_mode (shell, prefs->builder, "/apps/evolution/calendar/express_preferences_hidden");
+	e_shell_hide_widgets_for_express_mode (shell, prefs->builder,
+					       "label_second_zone",
+					       "hbox_second_zone",
+					       "timezone",
+					       "timezone_label",
+					       "hbox_use_system_timezone",
+					       "hbox_time_divisions",
+					       "show_end_times",
+					       "month_scroll_by_week",
+					       NULL);
 
 	/* HACK:  GTK+ 2.18 and 2.20 has a GtkTable which includes row/column spacing even for empty rows/columns.
 	 * When Evo runs in Express mode, we hide all the rows in the Time section of the calendar's General
diff --git a/mail/evolution-mail.schemas.in b/mail/evolution-mail.schemas.in
index 3bc4e35..09d875a 100644
--- a/mail/evolution-mail.schemas.in
+++ b/mail/evolution-mail.schemas.in
@@ -1528,43 +1528,5 @@
       </locale>
     </schema>
 
-    <!-- Widgets to hide in Express mode -->
-
-    <schema>
-      <key>/schemas/apps/evolution/mail/express_preferences_hidden</key>
-      <applyto>/apps/evolution/mail/express_preferences_hidden</applyto>
-      <owner>evolution-mail</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <default>[hboxReadTimeout,hboxMailSizeLimit,hboxShrinkAddresses,magic_spacebar_checkbox,hboxEnableSearchFolders]</default>
-      <locale name="C">
-         <short>List of controls to hide when in Express mode</short>
-         <long>
-	   List of names for the controls in the user interface,
-	   which should be hidden when Evolution is running in Express
-	   mode.
-	   This pertains to the mailer preferences in mail-config.ui.
-         </long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/evolution/mail/composer/express_preferences_hidden</key>
-      <applyto>/apps/evolution/mail/composer/express_preferences_hidden</applyto>
-      <owner>evolution-mail</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <default>[chkOutlookFilenames,vboxTopPosting,labelAlerts,chkPromptEmptySubject]</default>
-      <locale name="C">
-         <short>List of controls to hide when in Express mode</short>
-         <long>
-	   List of names for the controls in the user interface,
-	   which should be hidden when Evolution is running in Express
-	   mode.
-	   This pertains to the mailer preferences in mail-config.ui.
-         </long>
-      </locale>
-    </schema>
-    
   </schemalist>
 </gconfschemafile>
diff --git a/modules/mail/em-composer-prefs.c b/modules/mail/em-composer-prefs.c
index 72c5d18..49f2fda 100644
--- a/modules/mail/em-composer-prefs.c
+++ b/modules/mail/em-composer-prefs.c
@@ -554,7 +554,12 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
 		widget, "signature");
 
 	/* Sanitize the dialog for Express mode */
-	e_shell_hide_widgets_for_express_mode (shell, prefs->builder, "/apps/evolution/mail/composer/express_preferences_hidden");
+	e_shell_hide_widgets_for_express_mode (shell, prefs->builder,
+					       "chkOutlookFilenames",
+					       "vboxTopPosting",
+					       "labelAlerts",
+					       "chkPromptEmptySubject",
+					       NULL);
 
 	/* get our toplevel widget */
 	target = em_config_target_new_prefs (ec, client);
diff --git a/modules/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c
index e2605c8..ed5e82d 100644
--- a/modules/mail/em-mailer-prefs.c
+++ b/modules/mail/em-mailer-prefs.c
@@ -1208,7 +1208,13 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
 	g_signal_connect (G_OBJECT (prefs->junk_header_remove), "clicked", G_CALLBACK (jh_remove_cb), prefs);
 
 	/* Sanitize the dialog for Express mode */
-	e_shell_hide_widgets_for_express_mode (shell, prefs->builder, "/apps/evolution/mail/express_preferences_hidden");
+	e_shell_hide_widgets_for_express_mode (shell, prefs->builder,
+					       "hboxReadTimeout",
+					       "hboxMailSizeLimit",
+					       "hboxShrinkAddresses",
+					       "magic_spacebar_checkbox",
+					       "hboxEnableSearchFolders",
+					       NULL);
 
 	/* get our toplevel widget */
 	target = em_config_target_new_prefs(ec, prefs->gconf);
diff --git a/shell/e-shell-utils.c b/shell/e-shell-utils.c
index 12283b1..2a9f6f4 100644
--- a/shell/e-shell-utils.c
+++ b/shell/e-shell-utils.c
@@ -353,13 +353,13 @@ e_shell_utils_import_uris (EShell *shell, gchar **uris, gboolean preview)
  * e_shell_hide_widgets_for_express_mode:
  * @shell: an #EShell
  * @builder: a #GtkBuilder
- * @key_with_widget_names: The name of a GConf key; see below.
+ * @widget_name: NULL-terminated list of strings
  *
  * If Evolution is running in Express mode (i.e. if the specified @shell is in
- * Express mode), then this function will first read the specified GConf key.
- * This key must contain a string list, and each element of that list must be
- * the name of a widget present in @builder.  Those widgets will then get
- * hidden.
+ * Express mode), then this function will hide a list of widgets, based on their
+ * specified names.  The list of names must be NULL-terminated, and each element
+ * of that list must be the name of a widget present in @builder.  Those widgets
+ * will then get hidden.
  *
  * This can be used to simplify preference dialogs and such in an easy fashion, for use
  * in Express mode.
@@ -369,30 +369,25 @@ e_shell_utils_import_uris (EShell *shell, gchar **uris, gboolean preview)
 void
 e_shell_hide_widgets_for_express_mode (EShell *shell,
 				       GtkBuilder *builder,
-				       const char *key_with_widget_names)
+				       const char *widget_name,
+				       ...)
 {
-	GConfClient *client;
-	GSList *names;
-	GSList *l;
+	va_list args;
+	const char *name;
 
 	g_return_if_fail (E_IS_SHELL (shell));
 	g_return_if_fail (GTK_IS_BUILDER (builder));
-	g_return_if_fail (key_with_widget_names != NULL);
-	
+	g_return_if_fail (widget_name != NULL);
+
 	if (!e_shell_get_express_mode (shell))
 		return;
 
-	client = e_shell_get_gconf_client (shell);
-
-	names = gconf_client_get_list (client, key_with_widget_names, GCONF_VALUE_STRING, NULL); /* NULL-GError */
-	if (!names)
-		return;
+	va_start (args, widget_name);
 
-	for (l = names; l; l = l->next) {
-		const char *name;
+	name = va_arg (args, const char *);
+	while (name) {
 		GObject *object;
 
-		name = l->data;
 		object = gtk_builder_get_object (builder, name);
 		if (!object || !GTK_IS_WIDGET (object)) {
 			g_error ("Object '%s' was not found in the builder file, or it is not a GtkWidget", name);
@@ -400,9 +395,10 @@ e_shell_hide_widgets_for_express_mode (EShell *shell,
 		}
 
 		gtk_widget_hide (GTK_WIDGET (object));
+
+		name = va_arg (args, const char *);
 	}
 
-	g_slist_foreach (names, (GFunc) g_free, NULL);
-	g_slist_free (names);
+	va_end (args);
 }
 
diff --git a/shell/e-shell-utils.h b/shell/e-shell-utils.h
index 6e8b83c..e552cc2 100644
--- a/shell/e-shell-utils.h
+++ b/shell/e-shell-utils.h
@@ -52,7 +52,8 @@ guint		e_shell_utils_import_uris	(EShell *shell,
 
 void		e_shell_hide_widgets_for_express_mode (EShell *shell,
 						       GtkBuilder *builder,
-						       const char *key_with_widget_names);
+						       const char *widget_name,
+						       ...) G_GNUC_NULL_TERMINATED;
 
 G_END_DECLS
 



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