From c91411fa7cdcbccbd276b5857043138d97d817d9 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 18 Oct 2012 19:43:28 +0200 Subject: [PATCH] Bug #268618 - Add: Save replies in the folder of the message being replied to --- configure.ac | 2 +- libedataserver/e-source-mail-submission.c | 73 ++++++++++++++++++++++++++++++- libedataserver/e-source-mail-submission.h | 5 +++ 3 files changed, 78 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 75adb87..20ce95c 100644 --- a/configure.ac +++ b/configure.ac @@ -87,7 +87,7 @@ AC_SUBST(SOURCES_DBUS_SERVICE_NAME) dnl ****************************** dnl Libtool versioning dnl ****************************** -LIBEDATASERVER_CURRENT=17 +LIBEDATASERVER_CURRENT=18 LIBEDATASERVER_REVISION=0 LIBEDATASERVER_AGE=0 diff --git a/libedataserver/e-source-mail-submission.c b/libedataserver/e-source-mail-submission.c index ae252fe..84f45a0 100644 --- a/libedataserver/e-source-mail-submission.c +++ b/libedataserver/e-source-mail-submission.c @@ -47,12 +47,14 @@ struct _ESourceMailSubmissionPrivate { GMutex *property_lock; gchar *sent_folder; gchar *transport_uid; + gboolean replies_to_origin_folder; }; enum { PROP_0, PROP_SENT_FOLDER, - PROP_TRANSPORT_UID + PROP_TRANSPORT_UID, + PROP_REPLIES_TO_ORIGIN_FOLDER }; G_DEFINE_TYPE ( @@ -78,6 +80,12 @@ source_mail_submission_set_property (GObject *object, E_SOURCE_MAIL_SUBMISSION (object), g_value_get_string (value)); return; + + case PROP_REPLIES_TO_ORIGIN_FOLDER: + e_source_mail_submission_set_replies_to_origin_folder ( + E_SOURCE_MAIL_SUBMISSION (object), + g_value_get_boolean (value)); + return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -103,6 +111,13 @@ source_mail_submission_get_property (GObject *object, e_source_mail_submission_dup_transport_uid ( E_SOURCE_MAIL_SUBMISSION (object))); return; + + case PROP_REPLIES_TO_ORIGIN_FOLDER: + g_value_set_boolean ( + value, + e_source_mail_submission_get_replies_to_origin_folder ( + E_SOURCE_MAIL_SUBMISSION (object))); + return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -167,6 +182,19 @@ e_source_mail_submission_class_init (ESourceMailSubmissionClass *class) G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS | E_SOURCE_PARAM_SETTING)); + + g_object_class_install_property ( + object_class, + PROP_REPLIES_TO_ORIGIN_FOLDER, + g_param_spec_boolean ( + "replies-to-origin-folder", + "Replies to origin folder", + "Whether to save replies to folder of the message being replied to, instead of the Sent folder", + FALSE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS | + E_SOURCE_PARAM_SETTING)); } static void @@ -342,3 +370,46 @@ e_source_mail_submission_set_transport_uid (ESourceMailSubmission *extension, g_object_notify (G_OBJECT (extension), "transport-uid"); } + +/** + * e_source_mail_submission_get_replies_to_origin_folder: + * @extension: an #ESourceMailSubmission + * + * Returns whether save replies in the folder of the message + * being replied to, instead of the Sent folder. + * + * Returns: whether save replies in the folder of the message being replied to + * + * Since: 3.8 + **/ +gboolean +e_source_mail_submission_get_replies_to_origin_folder (ESourceMailSubmission *extension) +{ + g_return_val_if_fail (E_IS_SOURCE_MAIL_SUBMISSION (extension), FALSE); + + return extension->priv->replies_to_origin_folder; +} + +/** + * e_source_mail_submission_set_replies_to_origin_folder: + * @extension: an #ESourceMailSubmission + * @replies_to_origin_folder: new value + * + * Sets whether save replies in the folder of the message + * being replied to, instead of the Sent folder. + * + * Since: 3.8 + **/ +void +e_source_mail_submission_set_replies_to_origin_folder (ESourceMailSubmission *extension, + gboolean replies_to_origin_folder) +{ + g_return_if_fail (E_IS_SOURCE_MAIL_SUBMISSION (extension)); + + if ((extension->priv->replies_to_origin_folder ? 1 : 0) == (replies_to_origin_folder ? 1 : 0)) + return; + + extension->priv->replies_to_origin_folder = replies_to_origin_folder; + + g_object_notify (G_OBJECT (extension), "replies-to-origin-folder"); +} diff --git a/libedataserver/e-source-mail-submission.h b/libedataserver/e-source-mail-submission.h index d23e541..4383f52 100644 --- a/libedataserver/e-source-mail-submission.h +++ b/libedataserver/e-source-mail-submission.h @@ -93,6 +93,11 @@ gchar * e_source_mail_submission_dup_transport_uid void e_source_mail_submission_set_transport_uid (ESourceMailSubmission *extension, const gchar *transport_uid); +gboolean e_source_mail_submission_get_replies_to_origin_folder + (ESourceMailSubmission *extension); +void e_source_mail_submission_set_replies_to_origin_folder + (ESourceMailSubmission *extension, + gboolean replies_to_origin_folder); G_END_DECLS -- 2.7.4