[evolution] EMailJunkOptions: Bind to "junk-filter" instead of "junk-filter-name".
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] EMailJunkOptions: Bind to "junk-filter" instead of "junk-filter-name".
- Date: Tue, 26 Nov 2013 15:40:58 +0000 (UTC)
commit 4899dc5ca6e6e0e7522e7afc672adebf96eb5b81
Author: Matthew Barnes <mbarnes redhat com>
Date: Tue Nov 26 08:46:32 2013 -0500
EMailJunkOptions: Bind to "junk-filter" instead of "junk-filter-name".
Use transformation functions to convert between EMailJunkFilter and the
junk filter name.
mail/e-mail-junk-options.c | 54 +++++++++++++++++++++++++++++++++++++++++--
1 files changed, 51 insertions(+), 3 deletions(-)
---
diff --git a/mail/e-mail-junk-options.c b/mail/e-mail-junk-options.c
index 7d93a86..6977e2a 100644
--- a/mail/e-mail-junk-options.c
+++ b/mail/e-mail-junk-options.c
@@ -51,6 +51,51 @@ enum {
COLUMN_DISPLAY_NAME
};
+static gboolean
+mail_junk_options_junk_filter_to_name (GBinding *binding,
+ const GValue *source_value,
+ GValue *target_value,
+ gpointer user_data)
+{
+ CamelJunkFilter *junk_filter;
+ gboolean success = FALSE;
+
+ junk_filter = g_value_get_object (source_value);
+
+ if (E_IS_MAIL_JUNK_FILTER (junk_filter)) {
+ EMailJunkFilterClass *class;
+
+ class = E_MAIL_JUNK_FILTER_GET_CLASS (junk_filter);
+ g_value_set_string (target_value, class->filter_name);
+ success = TRUE;
+ }
+
+ return success;
+}
+
+static gboolean
+mail_junk_options_name_to_junk_filter (GBinding *binding,
+ const GValue *source_value,
+ GValue *target_value,
+ gpointer user_data)
+{
+ const gchar *filter_name;
+ gboolean success = FALSE;
+
+ filter_name = g_value_get_string (source_value);
+
+ if (filter_name != NULL) {
+ EMailJunkFilter *junk_filter;
+
+ junk_filter = e_mail_session_get_junk_filter_by_name (
+ E_MAIL_SESSION (user_data), filter_name);
+ g_value_set_object (target_value, junk_filter);
+ success = (junk_filter != NULL);
+ }
+
+ return success;
+}
+
static void
mail_junk_options_combo_box_changed_cb (GtkComboBox *combo_box,
EMailJunkOptions *options)
@@ -137,11 +182,14 @@ mail_junk_options_rebuild (EMailJunkOptions *options)
if (session != NULL) {
GBinding *binding;
- binding = g_object_bind_property (
- session, "junk-filter-name",
+ binding = g_object_bind_property_full (
+ session, "junk-filter",
combo_box, "active-id",
G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_BINDING_SYNC_CREATE,
+ mail_junk_options_junk_filter_to_name,
+ mail_junk_options_name_to_junk_filter,
+ session, (GDestroyNotify) NULL);
options->priv->active_id_binding = binding;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]