[evolution] MessageList: Add a "thread-latest" property.



commit 169c9aea03c1ba03d327af2a4f0fb8bb3aabd593
Author: Matthew Barnes <mbarnes redhat com>
Date:   Fri Jun 14 11:48:39 2013 -0400

    MessageList: Add a "thread-latest" property.
    
    Bind this to the "thread-latest" GSettings key.

 mail/message-list.c                        |   54 ++++++++++++++++++++++++---
 mail/message-list.h                        |    3 ++
 modules/settings/e-settings-message-list.c |    5 +++
 3 files changed, 56 insertions(+), 6 deletions(-)
---
diff --git a/mail/message-list.c b/mail/message-list.c
index bf04cd2..2619ebf 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 d4571e3..829e3c9 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 123085c..35c1274 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);


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