[evolution] Remove some obsolete GConf keys.



commit 60e6ecbb42bf19c23638cd4b7643b2ec19320b57
Author: Matthew Barnes <mbarnes redhat com>
Date:   Sat Dec 19 00:46:19 2009 -0500

    Remove some obsolete GConf keys.
    
    /apps/evolution/mail/display/show_preview
    /apps/evolution/mail/display/thread_list
    
    These keys are no longer needed since we're storing the settings by
    folder now in ~/.evolution/mail/config/state.  To simplify things we use
    hard-coded defaults: TRUE for PreviewVisible, FALSE for GroupByThreads.

 mail/e-mail-migrate.c                    |    2 -
 mail/evolution-mail.schemas.in           |   28 ------
 modules/mail/e-mail-shell-content.c      |  133 ++++++++++++++++++++++++++++++
 modules/mail/e-mail-shell-content.h      |    8 +-
 modules/mail/e-mail-shell-view-actions.c |   71 ++---------------
 modules/mail/e-mail-shell-view-private.c |   70 ----------------
 shell/main.c                             |    1 -
 7 files changed, 144 insertions(+), 169 deletions(-)
---
diff --git a/mail/e-mail-migrate.c b/mail/e-mail-migrate.c
index 65dff61..0480532 100644
--- a/mail/e-mail-migrate.c
+++ b/mail/e-mail-migrate.c
@@ -836,10 +836,8 @@ static e_gconf_map_t mail_accounts_map[] = {
 static e_gconf_map_t mail_display_map[] = {
 	/* /Mail/Display */
 	{ "side_bar_search", "mail/display/side_bar_search", E_GCONF_MAP_BOOL },
-	{ "thread_list", "mail/display/thread_list", E_GCONF_MAP_BOOL },
 	{ "thread_subject", "mail/display/thread_subject", E_GCONF_MAP_BOOL },
 	{ "hide_deleted", "mail/display/show_deleted", E_GCONF_MAP_BOOLNOT },
-	{ "preview_pane", "mail/display/show_preview", E_GCONF_MAP_BOOL },
 	{ "paned_size", "mail/display/paned_size", E_GCONF_MAP_INT },
 	{ "seen_timeout", "mail/display/mark_seen_timeout", E_GCONF_MAP_INT },
 	{ "do_seen_timeout", "mail/display/mark_seen", E_GCONF_MAP_BOOL },
diff --git a/mail/evolution-mail.schemas.in b/mail/evolution-mail.schemas.in
index 1af394f..09d875a 100644
--- a/mail/evolution-mail.schemas.in
+++ b/mail/evolution-mail.schemas.in
@@ -572,20 +572,6 @@
     </schema>
 
     <schema>
-      <key>/schemas/apps/evolution/mail/display/show_preview</key>
-      <applyto>/apps/evolution/mail/display/show_preview</applyto>
-      <owner>evolution-mail</owner>
-      <type>bool</type>
-      <default>true</default>
-      <locale name="C">
-         <short>Show the "Preview" pane</short>
-         <long>
-          Show the "Preview" pane.
-         </long>
-      </locale>
-    </schema>
-
-    <schema>
       <key>/schemas/apps/evolution/mail/display/enable_vfolders</key>
       <applyto>/apps/evolution/mail/display/enable_vfolders</applyto>
       <owner>evolution-mail</owner>
@@ -703,20 +689,6 @@
     </schema>
 
     <schema>
-      <key>/schemas/apps/evolution/mail/display/thread_list</key>
-      <applyto>/apps/evolution/mail/display/thread_list</applyto>
-      <owner>evolution-mail</owner>
-      <type>bool</type>
-      <default>false</default>
-      <locale name="C">
-         <short>Thread the message-list</short>
-         <long>
-         Thread the message list.
-         </long>
-      </locale>
-    </schema>
-
-    <schema>
       <key>/schemas/apps/evolution/mail/display/address_compress</key>
       <applyto>/apps/evolution/mail/display/address_compress</applyto>
       <owner>evolution-mail</owner>
diff --git a/modules/mail/e-mail-shell-content.c b/modules/mail/e-mail-shell-content.c
index a1d8a40..992660c 100644
--- a/modules/mail/e-mail-shell-content.c
+++ b/modules/mail/e-mail-shell-content.c
@@ -45,7 +45,9 @@
 	(G_TYPE_INSTANCE_GET_PRIVATE \
 	((obj), E_TYPE_MAIL_SHELL_CONTENT, EMailShellContentPrivate))
 
+#define STATE_KEY_GROUP_BY_THREADS	"GroupByThreads"
 #define STATE_KEY_SELECTED_MESSAGE	"SelectedMessage"
+#define STATE_KEY_PREVIEW_VISIBLE	"PreviewVisible"
 
 struct _EMailShellContentPrivate {
 	GtkWidget *paned;
@@ -65,6 +67,7 @@ struct _EMailShellContentPrivate {
 	/* Signal handler IDs */
 	guint message_list_built_id;
 
+	guint group_by_threads			: 1;
 	guint preview_visible			: 1;
 	guint suppress_message_selection	: 1;
 	guint show_deleted			: 1;
@@ -72,6 +75,7 @@ struct _EMailShellContentPrivate {
 
 enum {
 	PROP_0,
+	PROP_GROUP_BY_THREADS,
 	PROP_ORIENTATION,
 	PROP_PREVIEW_VISIBLE,
 	PROP_SHOW_DELETED
@@ -81,6 +85,35 @@ static gpointer parent_class;
 static GType mail_shell_content_type;
 
 static void
+mail_shell_content_save_boolean (EMailShellContent *mail_shell_content,
+                                 const gchar *key,
+                                 gboolean value)
+{
+	EShellView *shell_view;
+	EShellContent *shell_content;
+	EMailReader *reader;
+	GKeyFile *key_file;
+	const gchar *folder_uri;
+	gchar *group_name;
+
+	shell_content = E_SHELL_CONTENT (mail_shell_content);
+	shell_view = e_shell_content_get_shell_view (shell_content);
+	key_file = e_shell_view_get_state_key_file (shell_view);
+
+	reader = E_MAIL_READER (mail_shell_content);
+	folder_uri = e_mail_reader_get_folder_uri (reader);
+
+	if (folder_uri == NULL)
+		return;
+
+	group_name = g_strdup_printf ("Folder %s", folder_uri);
+	g_key_file_set_boolean (key_file, group_name, key, value);
+	g_free (group_name);
+
+	e_shell_view_set_state_dirty (shell_view);
+}
+
+static void
 mail_shell_content_message_list_built_cb (EMailShellContent *mail_shell_content,
                                           MessageList *message_list)
 {
@@ -218,6 +251,12 @@ mail_shell_content_set_property (GObject *object,
                                  GParamSpec *pspec)
 {
 	switch (property_id) {
+		case PROP_GROUP_BY_THREADS:
+			e_mail_shell_content_set_group_by_threads (
+				E_MAIL_SHELL_CONTENT (object),
+				g_value_get_boolean (value));
+			return;
+
 		case PROP_ORIENTATION:
 			mail_shell_content_set_orientation (
 				E_MAIL_SHELL_CONTENT (object),
@@ -247,6 +286,13 @@ mail_shell_content_get_property (GObject *object,
                                  GParamSpec *pspec)
 {
 	switch (property_id) {
+		case PROP_GROUP_BY_THREADS:
+			g_value_set_boolean (
+				value,
+				e_mail_shell_content_get_group_by_threads (
+				E_MAIL_SHELL_CONTENT (object)));
+			return;
+
 		case PROP_ORIENTATION:
 			g_value_set_enum (
 				value,
@@ -540,11 +586,18 @@ mail_shell_content_set_folder (EMailReader *reader,
                                CamelFolder *folder,
                                const gchar *folder_uri)
 {
+	EShellView *shell_view;
+	EShellContent *shell_content;
 	EMailShellContentPrivate *priv;
 	EMailReaderIface *default_iface;
 	GtkWidget *message_list;
 	CamelFolder *old_folder;
+	GKeyFile *key_file;
+	gchar *group_name;
+	const gchar *key;
 	gboolean different_folder;
+	gboolean value;
+	GError *error = NULL;
 
 	priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
 
@@ -579,6 +632,36 @@ mail_shell_content_set_folder (EMailReader *reader,
 			G_CALLBACK (mail_shell_content_message_list_built_cb),
 			reader);
 
+	/* Restore the folder's preview and threaded state. */
+
+	shell_content = E_SHELL_CONTENT (reader);
+	shell_view = e_shell_content_get_shell_view (shell_content);
+
+	key_file = e_shell_view_get_state_key_file (shell_view);
+	group_name = g_strdup_printf ("Folder %s", folder_uri);
+
+	key = STATE_KEY_GROUP_BY_THREADS;
+	value = g_key_file_get_boolean (key_file, group_name, key, &error);
+	if (error != NULL) {
+		value = FALSE;
+		g_clear_error (&error);
+	}
+
+	e_mail_shell_content_set_group_by_threads (
+		E_MAIL_SHELL_CONTENT (shell_content), value);
+
+	key = STATE_KEY_PREVIEW_VISIBLE;
+	value = g_key_file_get_boolean (key_file, group_name, key, &error);
+	if (error != NULL) {
+		value = TRUE;
+		g_clear_error (&error);
+	}
+
+	e_mail_shell_content_set_preview_visible (
+		E_MAIL_SHELL_CONTENT (shell_content), value);
+
+	g_free (group_name);
+
 exit:
 	message_list_thaw (MESSAGE_LIST (message_list));
 }
@@ -613,6 +696,16 @@ mail_shell_content_class_init (EMailShellContentClass *class)
 
 	g_object_class_install_property (
 		object_class,
+		PROP_GROUP_BY_THREADS,
+		g_param_spec_boolean (
+			"group-by-threads",
+			_("Group by Threads"),
+			_("Whether to group messages by threads"),
+			FALSE,
+			G_PARAM_READWRITE));
+
+	g_object_class_install_property (
+		object_class,
 		PROP_PREVIEW_VISIBLE,
 		g_param_spec_boolean (
 			"preview-visible",
@@ -718,6 +811,42 @@ e_mail_shell_content_new (EShellView *shell_view)
 }
 
 gboolean
+e_mail_shell_content_get_group_by_threads (EMailShellContent *mail_shell_content)
+{
+	g_return_val_if_fail (
+		E_IS_MAIL_SHELL_CONTENT (mail_shell_content), FALSE);
+
+	return mail_shell_content->priv->group_by_threads;
+}
+
+void
+e_mail_shell_content_set_group_by_threads (EMailShellContent *mail_shell_content,
+                                           gboolean group_by_threads)
+{
+	EMailReader *reader;
+	GtkWidget *message_list;
+
+	g_return_if_fail (E_IS_MAIL_SHELL_CONTENT (mail_shell_content));
+
+	if (group_by_threads == mail_shell_content->priv->group_by_threads)
+		return;
+
+	mail_shell_content->priv->group_by_threads = group_by_threads;
+
+	mail_shell_content_save_boolean (
+		mail_shell_content,
+		STATE_KEY_GROUP_BY_THREADS, group_by_threads);
+
+	/* XXX MessageList should define a property for this. */
+	reader = E_MAIL_READER (mail_shell_content);
+	message_list = e_mail_reader_get_message_list (reader);
+	message_list_set_threaded (
+		MESSAGE_LIST (message_list), group_by_threads);
+
+	g_object_notify (G_OBJECT (mail_shell_content), "group-by-threads");
+}
+
+gboolean
 e_mail_shell_content_get_preview_visible (EMailShellContent *mail_shell_content)
 {
 	g_return_val_if_fail (
@@ -753,6 +882,10 @@ e_mail_shell_content_set_preview_visible (EMailShellContent *mail_shell_content,
 
 	mail_shell_content->priv->preview_visible = preview_visible;
 
+	mail_shell_content_save_boolean (
+		mail_shell_content,
+		STATE_KEY_PREVIEW_VISIBLE, preview_visible);
+
 	g_object_notify (G_OBJECT (mail_shell_content), "preview-visible");
 }
 
diff --git a/modules/mail/e-mail-shell-content.h b/modules/mail/e-mail-shell-content.h
index 69a1fdc..4be7be2 100644
--- a/modules/mail/e-mail-shell-content.h
+++ b/modules/mail/e-mail-shell-content.h
@@ -47,9 +47,6 @@
 	(G_TYPE_INSTANCE_GET_CLASS \
 	((obj), E_TYPE_MAIL_SHELL_CONTENT, EMailShellContentClass))
 
-#define STATE_KEY_PREVIEW "Preview"
-#define STATE_KEY_THREAD_LIST "ThreadList"
-
 G_BEGIN_DECLS
 
 typedef struct _EMailShellContent EMailShellContent;
@@ -69,6 +66,11 @@ GType		e_mail_shell_content_get_type	(void);
 void		e_mail_shell_content_register_type
 					(GTypeModule *type_module);
 GtkWidget *	e_mail_shell_content_new(EShellView *shell_view);
+gboolean	e_mail_shell_content_get_group_by_threads
+					(EMailShellContent *mail_shell_content);
+void		e_mail_shell_content_set_group_by_threads
+					(EMailShellContent *mail_shell_content,
+					 gboolean group_by_threads);
 gboolean	e_mail_shell_content_get_preview_visible
 					(EMailShellContent *mail_shell_content);
 void		e_mail_shell_content_set_preview_visible
diff --git a/modules/mail/e-mail-shell-view-actions.c b/modules/mail/e-mail-shell-view-actions.c
index 103463b..2ab36d4 100644
--- a/modules/mail/e-mail-shell-view-actions.c
+++ b/modules/mail/e-mail-shell-view-actions.c
@@ -485,28 +485,6 @@ action_mail_hide_selected_cb (GtkAction *action,
 }
 
 static void
-action_mail_preview_cb (GtkToggleAction *action, EMailShellView *mail_shell_view)
-{
-	const gchar *folder_uri;
-	EMailReader *reader;
-
-	reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content);
-	folder_uri = e_mail_reader_get_folder_uri (reader);
-
-	if (folder_uri) {
-		GKeyFile *key_file;
-		const gchar *key;
-		gchar *group_name;
-
-		key_file = e_shell_view_get_state_key_file (E_SHELL_VIEW (mail_shell_view));
-		key = STATE_KEY_PREVIEW;
-		group_name = g_strdup_printf ("Folder %s", folder_uri);
-		g_key_file_set_boolean (key_file, group_name, key, gtk_toggle_action_get_active (action));
-		g_free (group_name);
-	}
-}
-
-static void
 action_mail_label_cb (GtkToggleAction *action,
                       EMailShellView *mail_shell_view)
 {
@@ -839,39 +817,6 @@ action_mail_threads_expand_all_cb (GtkAction *action,
 }
 
 static void
-action_mail_threads_group_by_cb (GtkToggleAction *action,
-                                 EMailShellView *mail_shell_view)
-{
-	EMailShellContent *mail_shell_content;
-	GtkWidget *message_list;
-	EMailReader *reader;
-	const gchar *folder_uri;
-	gboolean active;
-
-	mail_shell_content = mail_shell_view->priv->mail_shell_content;
-	active = gtk_toggle_action_get_active (action);
-
-	reader = E_MAIL_READER (mail_shell_content);
-	message_list = e_mail_reader_get_message_list (reader);
-
-	message_list_set_threaded (MESSAGE_LIST (message_list), active);
-
-	folder_uri = e_mail_reader_get_folder_uri (reader);
-
-	if (folder_uri) {
-		GKeyFile *key_file;
-		const gchar *key;
-		gchar *group_name;
-
-		key_file = e_shell_view_get_state_key_file (E_SHELL_VIEW (mail_shell_view));
-		key = STATE_KEY_THREAD_LIST;
-		group_name = g_strdup_printf ("Folder %s", folder_uri);
-		g_key_file_set_boolean (key_file, group_name, key, active);
-		g_free (group_name);
-	}
-}
-
-static void
 action_mail_tools_filters_cb (GtkAction *action,
                               EMailShellView *mail_shell_view)
 {
@@ -1320,7 +1265,7 @@ static GtkToggleActionEntry mail_toggle_entries[] = {
 	  N_("Show Message _Preview"),
 	  "<Control>m",
 	  N_("Show message preview pane"),
-	  G_CALLBACK (action_mail_preview_cb),  /* Also handled by property bindings */
+	  NULL,  /* Handled by property bindings */
 	  TRUE },
 
 	{ "mail-threads-group-by",
@@ -1328,7 +1273,7 @@ static GtkToggleActionEntry mail_toggle_entries[] = {
 	  N_("_Group By Threads"),
 	  "<Control>t",
 	  N_("Threaded message list"),
-	  G_CALLBACK (action_mail_threads_group_by_cb),
+	  NULL,  /* Handled by property bindings */
 	  FALSE }
 };
 
@@ -1566,14 +1511,6 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view)
 
 	bridge = gconf_bridge_get ();
 
-	object = G_OBJECT (ACTION (MAIL_PREVIEW));
-	key = "/apps/evolution/mail/display/show_preview";
-	gconf_bridge_bind_property (bridge, key, object, "active");
-
-	object = G_OBJECT (ACTION (MAIL_THREADS_GROUP_BY));
-	key = "/apps/evolution/mail/display/thread_list";
-	gconf_bridge_bind_property (bridge, key, object, "active");
-
 	object = G_OBJECT (ACTION (MAIL_VIEW_VERTICAL));
 	key = "/apps/evolution/mail/display/layout";
 	gconf_bridge_bind_property (bridge, key, object, "current-value");
@@ -1600,6 +1537,10 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view)
 		ACTION (MAIL_PREVIEW), "active",
 		mail_shell_content, "preview-visible");
 
+	e_mutual_binding_new (
+		ACTION (MAIL_THREADS_GROUP_BY), "active",
+		mail_shell_content, "group-by-threads");
+
 	e_binding_new (
 		ACTION (MAIL_PREVIEW), "active",
 		ACTION (MAIL_VIEW_CLASSIC), "sensitive");
diff --git a/modules/mail/e-mail-shell-view-private.c b/modules/mail/e-mail-shell-view-private.c
index f1e9805..b198b69 100644
--- a/modules/mail/e-mail-shell-view-private.c
+++ b/modules/mail/e-mail-shell-view-private.c
@@ -23,49 +23,6 @@
 
 #include "widgets/menus/gal-view-factory-etable.h"
 
-static gboolean
-restore_action_bool_state (gpointer view, GtkToggleAction *action, GKeyFile *key_file, const gchar *group_name, const gchar *key, const gchar *gconf_key)
-{
-	gboolean value;
-	GConfBridge *bridge;
-
-	g_return_val_if_fail (action != NULL, FALSE);
-	g_return_val_if_fail (GTK_IS_TOGGLE_ACTION (action), FALSE);
-	g_return_val_if_fail (key_file != NULL, FALSE);
-	g_return_val_if_fail (group_name != NULL, FALSE);
-	g_return_val_if_fail (key != NULL, FALSE);
-	g_return_val_if_fail (gconf_key != NULL, FALSE);
-
-	bridge = gconf_bridge_get ();
-
-	if (g_key_file_has_key (key_file, group_name, key, NULL)) {
-		value = g_key_file_get_boolean (key_file, group_name, key, NULL);
-	} else {
-		GError *error = NULL;
-
-		value = gconf_client_get_bool (gconf_bridge_get_client (bridge), gconf_key, &error);
-
-		if (error) {
-			g_error_free (error);
-			value = gtk_toggle_action_get_active (action);
-		}
-	}
-
-	if (value != gtk_toggle_action_get_active (action)) {
-		/* block bindings to not store this change to gconf */
-		gconf_bridge_block_property_bindings (bridge, gconf_key);
-		/* block action to not store to key file for the previous folder */
-		g_signal_handlers_block_matched (action, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, view);
-
-		gtk_toggle_action_set_active (action, value);
-
-		g_signal_handlers_unblock_matched (action, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, view);
-		gconf_bridge_unblock_property_bindings (bridge, gconf_key);
-	}
-
-	return value;
-}
-
 static void
 mail_shell_view_folder_tree_selected_cb (EMailShellView *mail_shell_view,
                                          const gchar *full_name,
@@ -90,33 +47,6 @@ mail_shell_view_folder_tree_selected_cb (EMailShellView *mail_shell_view,
 		e_mail_reader_set_folder (reader, NULL, NULL);
 
 	e_shell_view_update_actions (shell_view);
-
-	if (folder_selected && uri) {
-		EShellWindow *shell_window;
-		GtkToggleAction *action;
-		GKeyFile *key_file;
-		gchar *group_name;
-		gboolean value;
-
-		shell_window = e_shell_view_get_shell_window (shell_view);
-		key_file = e_shell_view_get_state_key_file (shell_view);
-		group_name = g_strdup_printf ("Folder %s", uri);
-
-		action = GTK_TOGGLE_ACTION (ACTION (MAIL_PREVIEW));
-		restore_action_bool_state (mail_shell_view, action,
-			key_file, group_name, STATE_KEY_PREVIEW,
-			"/apps/evolution/mail/display/show_preview");
-
-		action = GTK_TOGGLE_ACTION (ACTION (MAIL_THREADS_GROUP_BY));
-		value = restore_action_bool_state (mail_shell_view, action,
-			key_file, group_name, STATE_KEY_THREAD_LIST,
-			"/apps/evolution/mail/display/thread_list");
-
-		/* because the change is not propagated due to blocking the action signal */
-		message_list_set_threaded (MESSAGE_LIST (e_mail_reader_get_message_list (reader)), value);
-
-		g_free (group_name);
-	}
 }
 
 static gboolean
diff --git a/shell/main.c b/shell/main.c
index 2e8f07a..eb8e566 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -530,7 +530,6 @@ main (gint argc, gchar **argv)
 #endif
 
 	if (disable_preview) {
-		gconf_client_set_bool (client, "/apps/evolution/mail/display/show_preview", FALSE, NULL);
 		gconf_client_set_bool (client, "/apps/evolution/mail/display/safe_list", TRUE, NULL);
 		gconf_client_set_bool (client, "/apps/evolution/addressbook/display/show_preview", FALSE, NULL);
 		gconf_client_set_bool (client, "/apps/evolution/calendar/display/show_task_preview", FALSE, NULL);



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