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:
@ -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 },
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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");
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user