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.
This commit is contained in:
Matthew Barnes
2009-12-19 00:46:19 -05:00
parent 668db99079
commit 60e6ecbb42
7 changed files with 144 additions and 169 deletions

View File

@ -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 },

View File

@ -571,20 +571,6 @@
</locale>
</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>
@ -702,20 +688,6 @@
</locale>
</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>

View File

@ -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
@ -80,6 +84,35 @@ enum {
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));
}
@ -611,6 +694,16 @@ mail_shell_content_class_init (EMailShellContentClass *class)
shell_content_class = E_SHELL_CONTENT_CLASS (class);
shell_content_class->check_state = mail_shell_content_check_state;
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,
@ -717,6 +810,42 @@ e_mail_shell_content_new (EShellView *shell_view)
"shell-view", shell_view, NULL);
}
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)
{
@ -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");
}

View File

@ -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

View File

@ -484,28 +484,6 @@ action_mail_hide_selected_cb (GtkAction *action,
em_utils_uids_free (uids);
}
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)
@ -838,39 +816,6 @@ action_mail_threads_expand_all_cb (GtkAction *action,
message_list_set_threaded_expand_all (MESSAGE_LIST (message_list));
}
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");

View File

@ -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

View File

@ -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);