aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/message-list.c54
-rw-r--r--mail/message-list.h3
-rw-r--r--modules/settings/e-settings-message-list.c5
3 files changed, 56 insertions, 6 deletions
diff --git a/mail/message-list.c b/mail/message-list.c
index bf04cd2c37..2619ebf6de 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -152,6 +152,7 @@ enum {
PROP_COPY_TARGET_LIST,
PROP_PASTE_TARGET_LIST,
PROP_SESSION,
+ PROP_THREAD_LATEST,
PROP_THREAD_SUBJECT
};
@@ -2645,6 +2646,12 @@ message_list_set_property (GObject *object,
g_value_get_object (value));
return;
+ case PROP_THREAD_LATEST:
+ message_list_set_thread_latest (
+ MESSAGE_LIST (object),
+ g_value_get_boolean (value));
+ return;
+
case PROP_THREAD_SUBJECT:
message_list_set_thread_subject (
MESSAGE_LIST (object),
@@ -2683,6 +2690,13 @@ message_list_get_property (GObject *object,
MESSAGE_LIST (object)));
return;
+ case PROP_THREAD_LATEST:
+ g_value_set_boolean (
+ value,
+ message_list_get_thread_latest (
+ MESSAGE_LIST (object)));
+ return;
+
case PROP_THREAD_SUBJECT:
g_value_set_boolean (
value,
@@ -2862,6 +2876,18 @@ message_list_class_init (MessageListClass *class)
g_object_class_install_property (
object_class,
+ PROP_THREAD_LATEST,
+ g_param_spec_boolean (
+ "thread-latest",
+ "Thread Latest",
+ "Sort threads by latest message",
+ TRUE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (
+ object_class,
PROP_THREAD_SUBJECT,
g_param_spec_boolean (
"thread-subject",
@@ -2907,12 +2933,6 @@ message_list_construct (MessageList *message_list)
AtkObject *a11y;
gboolean constructed;
gchar *etspecfile;
- GSettings *settings;
-
- settings = g_settings_new ("org.gnome.evolution.mail");
- message_list->priv->thread_latest =
- g_settings_get_boolean (settings, "thread-latest");
- g_object_unref (settings);
/*
* The etree
@@ -3883,6 +3903,28 @@ message_list_get_paste_target_list (MessageList *message_list)
}
gboolean
+message_list_get_thread_latest (MessageList *message_list)
+{
+ g_return_val_if_fail (IS_MESSAGE_LIST (message_list), FALSE);
+
+ return message_list->priv->thread_latest;
+}
+
+void
+message_list_set_thread_latest (MessageList *message_list,
+ gboolean thread_latest)
+{
+ g_return_if_fail (IS_MESSAGE_LIST (message_list));
+
+ if (thread_latest == message_list->priv->thread_latest)
+ return;
+
+ message_list->priv->thread_latest = thread_latest;
+
+ g_object_notify (G_OBJECT (message_list), "thread-latest");
+}
+
+gboolean
message_list_get_thread_subject (MessageList *message_list)
{
g_return_val_if_fail (IS_MESSAGE_LIST (message_list), FALSE);
diff --git a/mail/message-list.h b/mail/message-list.h
index d4571e31d8..829e3c9c21 100644
--- a/mail/message-list.h
+++ b/mail/message-list.h
@@ -173,6 +173,9 @@ GtkTargetList * message_list_get_copy_target_list
(MessageList *message_list);
GtkTargetList * message_list_get_paste_target_list
(MessageList *message_list);
+gboolean message_list_get_thread_latest (MessageList *message_list);
+void message_list_set_thread_latest (MessageList *message_list,
+ gboolean thread_latest);
gboolean message_list_get_thread_subject (MessageList *message_list);
void message_list_set_thread_subject (MessageList *message_list,
gboolean thread_subject);
diff --git a/modules/settings/e-settings-message-list.c b/modules/settings/e-settings-message-list.c
index 123085c238..35c1274a9f 100644
--- a/modules/settings/e-settings-message-list.c
+++ b/modules/settings/e-settings-message-list.c
@@ -48,6 +48,11 @@ settings_message_list_constructed (GObject *object)
settings = g_settings_new ("org.gnome.evolution.mail");
g_settings_bind (
+ settings, "thread-latest",
+ message_list, "thread-latest",
+ G_SETTINGS_BIND_GET);
+
+ g_settings_bind (
settings, "thread-subject",
message_list, "thread-subject",
G_SETTINGS_BIND_GET);