aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-03-10 21:53:12 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-03-17 20:49:12 +0800
commit2e87aa81fc94f5d9564421e036adae7b48e7380a (patch)
tree9576f15a49a6101c9246c6ce0f82e5c7bd4575c2 /modules
parent95a0ae4afb72b534c991fbcd774733a93f256514 (diff)
downloadgsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.gz
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.bz2
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.lz
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.xz
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.zst
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.zip
Remove EMailShellSettings.
EShellSettings predates GSettings and is no longer necessary. GSettings allows binding GObject properties to GSettings keys, with optional mapping functions. That fulfills the purpose of EShellSettings.
Diffstat (limited to 'modules')
-rw-r--r--modules/mail/Makefile.am2
-rw-r--r--modules/mail/e-mail-attachment-handler.c18
-rw-r--r--modules/mail/e-mail-shell-backend.c86
-rw-r--r--modules/mail/e-mail-shell-settings.c386
-rw-r--r--modules/mail/e-mail-shell-settings.h33
-rw-r--r--modules/mail/e-mail-shell-sidebar.c24
-rw-r--r--modules/mail/e-mail-shell-view-actions.c24
-rw-r--r--modules/mail/em-composer-prefs.c264
-rw-r--r--modules/mail/em-mailer-prefs.c407
-rw-r--r--modules/mail/em-mailer-prefs.h5
-rw-r--r--modules/mailto-handler/evolution-mailto-handler.c39
-rw-r--r--modules/settings/e-settings-mail-formatter.c77
-rw-r--r--modules/settings/e-settings-mail-reader.c23
-rw-r--r--modules/settings/e-settings-web-view-gtkhtml.c146
-rw-r--r--modules/settings/e-settings-web-view.c30
-rw-r--r--modules/text-highlight/e-mail-formatter-text-highlight.c61
16 files changed, 592 insertions, 1033 deletions
diff --git a/modules/mail/Makefile.am b/modules/mail/Makefile.am
index bbf8366cfb..a488ba292e 100644
--- a/modules/mail/Makefile.am
+++ b/modules/mail/Makefile.am
@@ -23,8 +23,6 @@ module_mail_la_SOURCES = \
e-mail-shell-backend.h \
e-mail-shell-content.c \
e-mail-shell-content.h \
- e-mail-shell-settings.c \
- e-mail-shell-settings.h \
e-mail-shell-sidebar.c \
e-mail-shell-sidebar.h \
e-mail-shell-view.c \
diff --git a/modules/mail/e-mail-attachment-handler.c b/modules/mail/e-mail-attachment-handler.c
index 98680f8299..d6caecf556 100644
--- a/modules/mail/e-mail-attachment-handler.c
+++ b/modules/mail/e-mail-attachment-handler.c
@@ -121,19 +121,18 @@ mail_attachment_handler_forward (GtkAction *action,
EAttachmentHandler *handler)
{
EMailAttachmentHandlerPrivate *priv;
- EShellSettings *shell_settings;
+ GSettings *settings;
EMailForwardStyle style;
CamelMimeMessage *message;
- const gchar *property_name;
priv = E_MAIL_ATTACHMENT_HANDLER_GET_PRIVATE (handler);
message = mail_attachment_handler_get_selected_message (handler);
g_return_if_fail (message != NULL);
- property_name = "mail-forward-style";
- shell_settings = e_shell_get_shell_settings (priv->shell);
- style = e_shell_settings_get_int (shell_settings, property_name);
+ settings = g_settings_new ("org.gnome.evolution.mail");
+ style = g_settings_get_enum (settings, "forward-style-name");
+ g_object_unref (settings);
em_utils_forward_message (
priv->shell, CAMEL_SESSION (priv->session),
@@ -147,19 +146,18 @@ mail_attachment_handler_reply (EAttachmentHandler *handler,
EMailReplyType reply_type)
{
EMailAttachmentHandlerPrivate *priv;
- EShellSettings *shell_settings;
+ GSettings *settings;
EMailReplyStyle style;
CamelMimeMessage *message;
- const gchar *property_name;
priv = E_MAIL_ATTACHMENT_HANDLER_GET_PRIVATE (handler);
message = mail_attachment_handler_get_selected_message (handler);
g_return_if_fail (message != NULL);
- property_name = "mail-reply-style";
- shell_settings = e_shell_get_shell_settings (priv->shell);
- style = e_shell_settings_get_int (shell_settings, property_name);
+ settings = g_settings_new ("org.gnome.evolution.mail");
+ style = g_settings_get_enum (settings, "reply-style-name");
+ g_object_unref (settings);
em_utils_reply_to_message (
priv->shell, message,
diff --git a/modules/mail/e-mail-shell-backend.c b/modules/mail/e-mail-shell-backend.c
index 1abcb8a136..ecb295ea10 100644
--- a/modules/mail/e-mail-shell-backend.c
+++ b/modules/mail/e-mail-shell-backend.c
@@ -53,7 +53,6 @@
#include <em-format/e-mail-formatter.h>
#include <em-format/e-mail-part-utils.h>
-#include "e-mail-shell-settings.h"
#include "e-mail-shell-sidebar.h"
#include "e-mail-shell-view.h"
#include "em-account-prefs.h"
@@ -369,7 +368,7 @@ mail_shell_backend_window_added_cb (GtkApplication *application,
/* This applies to both the composer and signature editor. */
if (GTKHTML_IS_EDITOR (window)) {
- EShellSettings *shell_settings;
+ GSettings *settings;
GList *spell_languages;
gboolean active = TRUE;
@@ -378,12 +377,14 @@ mail_shell_backend_window_added_cb (GtkApplication *application,
GTKHTML_EDITOR (window), spell_languages);
g_list_free (spell_languages);
- shell_settings = e_shell_get_shell_settings (shell);
+ settings = g_settings_new ("org.gnome.evolution.mail");
/* Express mode does not honor this setting. */
if (!e_shell_get_express_mode (shell))
- active = e_shell_settings_get_boolean (
- shell_settings, "composer-format-html");
+ active = g_settings_get_boolean (
+ settings, "composer-send-html");
+
+ g_object_unref (settings);
gtkhtml_editor_set_html_mode (GTKHTML_EDITOR (window), active);
}
@@ -513,15 +514,14 @@ static void
mail_shell_backend_constructed (GObject *object)
{
EShell *shell;
- EShellSettings *shell_settings;
EShellBackend *shell_backend;
EMailSession *mail_session;
CamelService *vstore;
GtkWidget *preferences_window;
+ GSettings *settings;
shell_backend = E_SHELL_BACKEND (object);
shell = e_shell_backend_get_shell (shell_backend);
- shell_settings = e_shell_get_shell_settings (shell);
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (e_mail_shell_backend_parent_class)->constructed (object);
@@ -543,8 +543,6 @@ mail_shell_backend_constructed (GObject *object)
G_CALLBACK (mail_shell_backend_window_added_cb),
shell_backend);
- e_mail_shell_settings_init (shell_backend);
-
/* Setup preference widget factories */
preferences_window = e_shell_get_preferences_window (shell);
@@ -589,10 +587,14 @@ mail_shell_backend_constructed (GObject *object)
CAMEL_SESSION (mail_session), E_MAIL_SESSION_VFOLDER_UID);
g_return_if_fail (vstore != NULL);
- g_object_bind_property (
- shell_settings, "mail-enable-unmatched-search-folder",
+ settings = g_settings_new ("org.gnome.evolution.mail");
+
+ g_settings_bind (
+ settings, "enable-unmatched",
vstore, "unmatched-enabled",
- G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
+ G_SETTINGS_BIND_DEFAULT);
+
+ g_object_unref (settings);
g_object_unref (vstore);
}
@@ -630,38 +632,31 @@ mail_shell_backend_start (EShellBackend *shell_backend)
static gboolean
mail_shell_backend_delete_junk_policy_decision (EMailBackend *backend)
{
- EShell *shell;
- EShellSettings *shell_settings;
GSettings *settings;
gboolean delete_junk;
- gint empty_date;
- gint empty_days;
+ gint empty_date = 0;
+ gint empty_days = 0;
gint now;
- shell = e_shell_backend_get_shell (E_SHELL_BACKEND (backend));
-
settings = g_settings_new ("org.gnome.evolution.mail");
- shell_settings = e_shell_get_shell_settings (shell);
now = time (NULL) / 60 / 60 / 24;
- delete_junk = e_shell_settings_get_boolean (
- shell_settings, "mail-empty-junk-on-exit");
-
- /* XXX No EShellSettings properties for these keys. */
-
- empty_date = empty_days = 0;
+ delete_junk = g_settings_get_boolean (settings, "junk-empty-on-exit");
if (delete_junk) {
- empty_days = g_settings_get_int (settings, "junk-empty-on-exit-days");
- empty_date = g_settings_get_int (settings, "junk-empty-date");
+ empty_days = g_settings_get_int (
+ settings, "junk-empty-on-exit-days");
+ empty_date = g_settings_get_int (
+ settings, "junk-empty-date");
}
- delete_junk = delete_junk && ((empty_days == 0) || (empty_days > 0 && empty_date + empty_days <= now));
+ delete_junk = delete_junk && (
+ (empty_days == 0) ||
+ (empty_days > 0 && empty_date + empty_days <= now));
- if (delete_junk) {
+ if (delete_junk)
g_settings_set_int (settings, "junk-empty-date", now);
- }
g_object_unref (settings);
@@ -671,38 +666,31 @@ mail_shell_backend_delete_junk_policy_decision (EMailBackend *backend)
static gboolean
mail_shell_backend_empty_trash_policy_decision (EMailBackend *backend)
{
- EShell *shell;
- EShellSettings *shell_settings;
GSettings *settings;
gboolean empty_trash;
- gint empty_date;
- gint empty_days;
+ gint empty_date = 0;
+ gint empty_days = 0;
gint now;
- shell = e_shell_backend_get_shell (E_SHELL_BACKEND (backend));
-
settings = g_settings_new ("org.gnome.evolution.mail");
- shell_settings = e_shell_get_shell_settings (shell);
now = time (NULL) / 60 / 60 / 24;
- empty_trash = e_shell_settings_get_boolean (
- shell_settings, "mail-empty-trash-on-exit");
-
- /* XXX No EShellSettings properties for these keys. */
-
- empty_date = empty_days = 0;
+ empty_trash = g_settings_get_boolean (settings, "trash-empty-on-exit");
if (empty_trash) {
- empty_days = g_settings_get_int (settings, "trash-empty-on-exit-days");
- empty_date = g_settings_get_int (settings, "trash-empty-date");
+ empty_days = g_settings_get_int (
+ settings, "trash-empty-on-exit-days");
+ empty_date = g_settings_get_int (
+ settings, "trash-empty-date");
}
- empty_trash = empty_trash && ((empty_days == 0) || (empty_days > 0 && empty_date + empty_days <= now));
+ empty_trash = empty_trash && (
+ (empty_days == 0) ||
+ (empty_days > 0 && empty_date + empty_days <= now));
- if (empty_trash) {
+ if (empty_trash)
g_settings_set_int (settings, "trash-empty-date", now);
- }
g_object_unref (settings);
@@ -852,8 +840,6 @@ e_mail_shell_backend_edit_account (EMailShellBackend *mail_shell_backend,
/******************* Code below here belongs elsewhere. *******************/
-#include "shell/e-shell-settings.h"
-
static GSList *
mail_labels_get_filter_options (gboolean include_none)
{
diff --git a/modules/mail/e-mail-shell-settings.c b/modules/mail/e-mail-shell-settings.c
deleted file mode 100644
index 6982345b88..0000000000
--- a/modules/mail/e-mail-shell-settings.c
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- * e-mail-shell-settings.c
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "e-mail-shell-settings.h"
-
-#include <mail/e-mail-backend.h>
-
-#include <shell/e-shell.h>
-
-#define MAIL_SCHEMA "org.gnome.evolution.mail"
-
-static gboolean
-transform_no_folder_dots_to_ellipsize (GBinding *binding,
- const GValue *source_value,
- GValue *target_value,
- gpointer user_data)
-{
- PangoEllipsizeMode ellipsize;
-
- if (g_value_get_boolean (source_value))
- ellipsize = PANGO_ELLIPSIZE_NONE;
- else
- ellipsize = PANGO_ELLIPSIZE_END;
-
- g_value_set_enum (target_value, ellipsize);
-
- return TRUE;
-}
-
-void
-e_mail_shell_settings_init (EShellBackend *shell_backend)
-{
- EShell *shell;
- EShellSettings *shell_settings;
- EMailBackend *backend;
- EMailSession *session;
-
- shell = e_shell_backend_get_shell (shell_backend);
- shell_settings = e_shell_get_shell_settings (shell);
-
- backend = E_MAIL_BACKEND (shell_backend);
- session = e_mail_backend_get_session (backend);
-
- /*** Global Objects ***/
-
- e_shell_settings_install_property (
- g_param_spec_pointer (
- "mail-session",
- NULL,
- NULL,
- G_PARAM_READWRITE));
-
- e_shell_settings_set_pointer (
- shell_settings, "mail-session",
- g_object_ref (session));
-
- /*** Mail Preferences ***/
-
- e_shell_settings_install_property_for_key (
- "mail-address-compress",
- MAIL_SCHEMA,
- "address-compress");
-
- e_shell_settings_install_property_for_key (
- "mail-address-count",
- MAIL_SCHEMA,
- "address-count");
-
- e_shell_settings_install_property_for_key (
- "mail-charset",
- MAIL_SCHEMA,
- "charset");
-
- e_shell_settings_install_property_for_key (
- "mail-check-for-junk",
- MAIL_SCHEMA,
- "junk-check-incoming");
-
- e_shell_settings_install_property_for_key (
- "mail-check-on-start",
- MAIL_SCHEMA,
- "send-recv-on-start");
-
- e_shell_settings_install_property_for_key (
- "mail-check-all-on-start",
- MAIL_SCHEMA,
- "send-recv-all-on-start");
-
- e_shell_settings_install_property_for_key (
- "mail-citation-color",
- MAIL_SCHEMA,
- "citation-color");
-
- e_shell_settings_install_property_for_key (
- "mail-confirm-expunge",
- MAIL_SCHEMA,
- "prompt-on-expunge");
-
- e_shell_settings_install_property_for_key (
- "mail-confirm-unwanted-html",
- MAIL_SCHEMA,
- "prompt-on-unwanted-html");
-
- e_shell_settings_install_property_for_key (
- "mail-empty-junk-on-exit",
- MAIL_SCHEMA,
- "junk-empty-on-exit");
-
- e_shell_settings_install_property_for_key (
- "mail-empty-trash-on-exit",
- MAIL_SCHEMA,
- "trash-empty-on-exit");
-
- e_shell_settings_install_property_for_key (
- "mail-enable-unmatched-search-folder",
- MAIL_SCHEMA,
- "enable-unmatched");
-
- e_shell_settings_install_property_for_key (
- "mail-font-monospace",
- MAIL_SCHEMA,
- "monospace-font");
-
- e_shell_settings_install_property_for_key (
- "mail-font-variable",
- MAIL_SCHEMA,
- "variable-width-font");
-
- /* This value corresponds to the EMailForwardStyle enum. */
- e_shell_settings_install_property_for_key (
- "mail-forward-style",
- MAIL_SCHEMA,
- "forward-style");
-
- /* This value corresponds to MailConfigHTTPMode enum. */
- e_shell_settings_install_property_for_key (
- "mail-image-loading-policy",
- MAIL_SCHEMA,
- "load-http-images");
-
- e_shell_settings_install_property_for_key (
- "mail-magic-spacebar",
- MAIL_SCHEMA,
- "magic-spacebar");
-
- e_shell_settings_install_property_for_key (
- "mail-global-view-setting",
- MAIL_SCHEMA,
- "global-view-setting");
-
- e_shell_settings_install_property_for_key (
- "mail-mark-citations",
- MAIL_SCHEMA,
- "mark-citations");
-
- e_shell_settings_install_property_for_key (
- "mail-mark-seen",
- MAIL_SCHEMA,
- "mark-seen");
-
- e_shell_settings_install_property_for_key (
- "mail-mark-seen-timeout",
- MAIL_SCHEMA,
- "mark-seen-timeout");
-
- /* Do not bind to this. Use "mail-sidebar-ellipsize" instead. */
- e_shell_settings_install_property_for_key (
- "mail-no-folder-dots",
- MAIL_SCHEMA,
- "no-folder-dots");
-
- e_shell_settings_install_property_for_key (
- "mail-only-local-photos",
- MAIL_SCHEMA,
- "photo-local");
-
- e_shell_settings_install_property_for_key (
- "mail-show-real-date",
- MAIL_SCHEMA,
- "show-real-date");
-
- e_shell_settings_install_property_for_key (
- "mail-sort-accounts-alpha",
- MAIL_SCHEMA,
- "sort-accounts-alpha");
-
- e_shell_settings_install_property_for_key (
- "mail-prompt-delete-in-vfolder",
- MAIL_SCHEMA,
- "prompt-on-delete-in-vfolder");
-
- /* This value corresponds to the EMailReplyStyle enum,
- * but the ordering of the combo box items in preferences
- * has changed. We use transformation functions there. */
- e_shell_settings_install_property_for_key (
- "mail-reply-style",
- MAIL_SCHEMA,
- "reply-style");
-
- e_shell_settings_install_property_for_key (
- "mail-safe-list",
- MAIL_SCHEMA,
- "safe-list");
-
- e_shell_settings_install_property_for_key (
- "mail-show-animated-images",
- MAIL_SCHEMA,
- "show-animated-images");
-
- e_shell_settings_install_property_for_key (
- "mail-show-sender-photo",
- MAIL_SCHEMA,
- "show-sender-photo");
-
- e_shell_settings_install_property_for_key (
- "mail-sidebar-search",
- MAIL_SCHEMA,
- "side-bar-search");
-
- e_shell_settings_install_property_for_key (
- "mail-thread-by-subject",
- MAIL_SCHEMA,
- "thread-subject");
-
- e_shell_settings_install_property_for_key (
- "mail-use-custom-fonts",
- MAIL_SCHEMA,
- "use-custom-font");
-
- /*** Composer Preferences ***/
-
- e_shell_settings_install_property_for_key (
- "composer-charset",
- MAIL_SCHEMA,
- "composer-charset");
-
- e_shell_settings_install_property_for_key (
- "composer-format-html",
- MAIL_SCHEMA,
- "composer-send-html");
-
- e_shell_settings_install_property_for_key (
- "composer-inline-spelling",
- MAIL_SCHEMA,
- "composer-inline-spelling");
-
- e_shell_settings_install_property_for_key (
- "composer-magic-links",
- MAIL_SCHEMA,
- "composer-magic-links");
-
- e_shell_settings_install_property_for_key (
- "composer-magic-smileys",
- MAIL_SCHEMA,
- "composer-magic-smileys");
-
- e_shell_settings_install_property_for_key (
- "composer-outlook-filenames",
- MAIL_SCHEMA,
- "composer-outlook-filenames");
-
- e_shell_settings_install_property_for_key (
- "composer-localized-re",
- MAIL_SCHEMA,
- "composer-localized-re");
-
- e_shell_settings_install_property_for_key (
- "composer-ignore-list-reply-to",
- MAIL_SCHEMA,
- "composer-ignore-list-reply-to");
-
- e_shell_settings_install_property_for_key (
- "composer-group-reply-to-list",
- MAIL_SCHEMA,
- "composer-group-reply-to-list");
-
- e_shell_settings_install_property_for_key (
- "composer-sign-reply-if-signed",
- MAIL_SCHEMA,
- "composer-sign-reply-if-signed");
-
- e_shell_settings_install_property_for_key (
- "composer-prompt-only-bcc",
- MAIL_SCHEMA,
- "prompt-on-only-bcc");
-
- e_shell_settings_install_property_for_key (
- "composer-prompt-private-list-reply",
- MAIL_SCHEMA,
- "prompt-on-private-list-reply");
-
- e_shell_settings_install_property_for_key (
- "composer-prompt-reply-many-recips",
- MAIL_SCHEMA,
- "prompt-on-reply-many-recips");
-
- e_shell_settings_install_property_for_key (
- "composer-prompt-list-reply-to",
- MAIL_SCHEMA,
- "prompt-on-list-reply-to");
-
- e_shell_settings_install_property_for_key (
- "composer-prompt-empty-subject",
- MAIL_SCHEMA,
- "prompt-on-empty-subject");
-
- e_shell_settings_install_property_for_key (
- "composer-prompt-send-invalid-recip",
- MAIL_SCHEMA,
- "prompt-on-invalid-recip");
-
- e_shell_settings_install_property_for_key (
- "composer-reply-start-bottom",
- MAIL_SCHEMA,
- "composer-reply-start-bottom");
-
- e_shell_settings_install_property_for_key (
- "composer-request-receipt",
- MAIL_SCHEMA,
- "composer-request-receipt");
-
- e_shell_settings_install_property_for_key (
- "composer-spell-color",
- MAIL_SCHEMA,
- "composer-spell-color");
-
- e_shell_settings_install_property_for_key (
- "composer-top-signature",
- MAIL_SCHEMA,
- "composer-top-signature");
-
- e_shell_settings_install_property_for_key (
- "composer-no-signature-delim",
- MAIL_SCHEMA,
- "composer-no-signature-delim");
-
- e_shell_settings_install_property_for_key (
- "composer-gallery-path",
- MAIL_SCHEMA,
- "composer-gallery-path");
-
- e_shell_settings_install_property_for_key (
- "mail-headers-collapsed",
- MAIL_SCHEMA,
- "headers-collapsed");
-
- e_shell_settings_install_property (
- g_param_spec_enum (
- "mail-sidebar-ellipsize",
- NULL,
- NULL,
- PANGO_TYPE_ELLIPSIZE_MODE,
- PANGO_ELLIPSIZE_NONE,
- G_PARAM_READWRITE));
-
- g_object_bind_property_full (
- shell_settings, "mail-no-folder-dots",
- shell_settings, "mail-sidebar-ellipsize",
- G_BINDING_SYNC_CREATE,
- transform_no_folder_dots_to_ellipsize,
- NULL,
- g_object_ref (shell_settings),
- (GDestroyNotify) g_object_unref);
-}
diff --git a/modules/mail/e-mail-shell-settings.h b/modules/mail/e-mail-shell-settings.h
deleted file mode 100644
index 1faf6c6faf..0000000000
--- a/modules/mail/e-mail-shell-settings.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * e-mail-shell-settings.h
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) version 3.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with the program; if not, see <http://www.gnu.org/licenses/>
- *
- *
- * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
- *
- */
-
-#ifndef E_MAIL_SHELL_SETTINGS_H
-#define E_MAIL_SHELL_SETTINGS_H
-
-#include <shell/e-shell-backend.h>
-
-G_BEGIN_DECLS
-
-void e_mail_shell_settings_init (EShellBackend *shell_backend);
-
-G_END_DECLS
-
-#endif /* E_MAIL_SHELL_SETTINGS_H */
diff --git a/modules/mail/e-mail-shell-sidebar.c b/modules/mail/e-mail-shell-sidebar.c
index 2c2cdfb4d5..7f3c569288 100644
--- a/modules/mail/e-mail-shell-sidebar.c
+++ b/modules/mail/e-mail-shell-sidebar.c
@@ -122,12 +122,9 @@ static void
mail_shell_sidebar_constructed (GObject *object)
{
EMailShellSidebar *mail_shell_sidebar;
- EShellSettings *shell_settings;
EShellBackend *shell_backend;
EShellSidebar *shell_sidebar;
- EShellWindow *shell_window;
EShellView *shell_view;
- EShell *shell;
EMailBackend *backend;
EMailSession *session;
EAlertSink *alert_sink;
@@ -135,6 +132,7 @@ mail_shell_sidebar_constructed (GObject *object)
GtkTreeView *tree_view;
GtkWidget *container;
GtkWidget *widget;
+ GSettings *settings;
/* Chain up to parent's constructed method. */
G_OBJECT_CLASS (e_mail_shell_sidebar_parent_class)->constructed (object);
@@ -142,10 +140,6 @@ mail_shell_sidebar_constructed (GObject *object)
shell_sidebar = E_SHELL_SIDEBAR (object);
shell_view = e_shell_sidebar_get_shell_view (shell_sidebar);
shell_backend = e_shell_view_get_shell_backend (shell_view);
- shell_window = e_shell_view_get_shell_window (shell_view);
-
- shell = e_shell_window_get_shell (shell_window);
- shell_settings = e_shell_get_shell_settings (shell);
backend = E_MAIL_BACKEND (shell_backend);
session = e_mail_backend_get_session (backend);
@@ -179,15 +173,19 @@ mail_shell_sidebar_constructed (GObject *object)
widget, "key-file",
G_BINDING_SYNC_CREATE);
- g_object_bind_property (
- shell_settings, "mail-sidebar-ellipsize",
+ settings = g_settings_new ("org.gnome.evolution.mail");
+
+ g_settings_bind (
+ settings, "side-bar-ellipsize-mode",
widget, "ellipsize",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "mail-sidebar-search",
+ g_settings_bind (
+ settings, "side-bar-search",
widget, "enable-search",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
+
+ g_object_unref (settings);
g_signal_connect_swapped (
widget, "key-file-changed",
diff --git a/modules/mail/e-mail-shell-view-actions.c b/modules/mail/e-mail-shell-view-actions.c
index 92cb0d5814..ed5b30702c 100644
--- a/modules/mail/e-mail-shell-view-actions.c
+++ b/modules/mail/e-mail-shell-view-actions.c
@@ -953,10 +953,8 @@ static void
action_mail_smart_backward_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
- EShell *shell;
EShellView *shell_view;
EShellWindow *shell_window;
- EShellSettings *shell_settings;
EMailShellContent *mail_shell_content;
EMailShellSidebar *mail_shell_sidebar;
EMFolderTree *folder_tree;
@@ -967,6 +965,7 @@ action_mail_smart_backward_cb (GtkAction *action,
GtkWidget *window;
GtkAdjustment *adj;
EMailDisplay *display;
+ GSettings *settings;
gboolean caret_mode;
gboolean magic_spacebar;
gdouble value;
@@ -975,8 +974,6 @@ action_mail_smart_backward_cb (GtkAction *action,
shell_view = E_SHELL_VIEW (mail_shell_view);
shell_window = e_shell_view_get_shell_window (shell_view);
- shell = e_shell_window_get_shell (shell_window);
- shell_settings = e_shell_get_shell_settings (shell);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
@@ -988,8 +985,9 @@ action_mail_smart_backward_cb (GtkAction *action,
display = e_mail_reader_get_mail_display (reader);
message_list = e_mail_reader_get_message_list (reader);
- magic_spacebar = e_shell_settings_get_boolean (
- shell_settings, "mail-magic-spacebar");
+ settings = g_settings_new ("org.gnome.evolution.mail");
+ magic_spacebar = g_settings_get_boolean (settings, "magic-spacebar");
+ g_object_unref (settings);
toggle_action = GTK_TOGGLE_ACTION (ACTION (MAIL_CARET_MODE));
caret_mode = gtk_toggle_action_get_active (toggle_action);
@@ -1005,7 +1003,7 @@ action_mail_smart_backward_cb (GtkAction *action,
if (caret_mode || !magic_spacebar)
return;
- /* XXX Are two separate calls really necessary? */
+ /* XXX Are two separate calls really necessary? */
if (message_list_select (
MESSAGE_LIST (message_list),
@@ -1038,10 +1036,8 @@ static void
action_mail_smart_forward_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
- EShell *shell;
EShellView *shell_view;
EShellWindow *shell_window;
- EShellSettings *shell_settings;
EMailShellContent *mail_shell_content;
EMailShellSidebar *mail_shell_sidebar;
EMFolderTree *folder_tree;
@@ -1052,6 +1048,7 @@ action_mail_smart_forward_cb (GtkAction *action,
GtkAdjustment *adj;
GtkToggleAction *toggle_action;
EMailDisplay *display;
+ GSettings *settings;
gboolean caret_mode;
gboolean magic_spacebar;
gdouble value;
@@ -1061,8 +1058,6 @@ action_mail_smart_forward_cb (GtkAction *action,
shell_view = E_SHELL_VIEW (mail_shell_view);
shell_window = e_shell_view_get_shell_window (shell_view);
- shell = e_shell_window_get_shell (shell_window);
- shell_settings = e_shell_get_shell_settings (shell);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
@@ -1074,8 +1069,9 @@ action_mail_smart_forward_cb (GtkAction *action,
display = e_mail_reader_get_mail_display (reader);
message_list = e_mail_reader_get_message_list (reader);
- magic_spacebar = e_shell_settings_get_boolean (
- shell_settings, "mail-magic-spacebar");
+ settings = g_settings_new ("org.gnome.evolution.mail");
+ magic_spacebar = g_settings_get_boolean (settings, "magic-spacebar");
+ g_object_unref (settings);
toggle_action = GTK_TOGGLE_ACTION (ACTION (MAIL_CARET_MODE));
caret_mode = gtk_toggle_action_get_active (toggle_action);
@@ -1092,7 +1088,7 @@ action_mail_smart_forward_cb (GtkAction *action,
if (caret_mode || !magic_spacebar)
return;
- /* XXX Are two separate calls really necessary? */
+ /* XXX Are two separate calls really necessary? */
if (message_list_select (
MESSAGE_LIST (message_list),
diff --git a/modules/mail/em-composer-prefs.c b/modules/mail/em-composer-prefs.c
index 58066e0f0b..7d80bbcb1c 100644
--- a/modules/mail/em-composer-prefs.c
+++ b/modules/mail/em-composer-prefs.c
@@ -52,75 +52,50 @@ G_DEFINE_TYPE (
GTK_TYPE_VBOX)
static gboolean
-transform_old_to_new_reply_style (GBinding *binding,
- const GValue *source_value,
- GValue *target_value,
- gpointer user_data)
+composer_prefs_map_string_to_color (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
{
- gboolean success = TRUE;
-
- /* XXX This is the kind of legacy crap we wind up
- * with when we don't migrate things properly. */
-
- switch (g_value_get_int (source_value)) {
- case 0: /* Quoted: 0 -> 2 */
- g_value_set_int (target_value, 2);
- break;
-
- case 1: /* Do Not Quote: 1 -> 3 */
- g_value_set_int (target_value, 3);
- break;
-
- case 2: /* Attach: 2 -> 0 */
- g_value_set_int (target_value, 0);
- break;
-
- case 3: /* Outlook: 3 -> 1 */
- g_value_set_int (target_value, 1);
- break;
-
- default:
- success = FALSE;
- break;
+ GdkColor color;
+ const gchar *string;
+ gboolean success = FALSE;
+
+ string = g_variant_get_string (variant, NULL);
+ if (gdk_color_parse (string, &color)) {
+ g_value_set_boxed (value, &color);
+ success = TRUE;
}
return success;
}
-static gboolean
-transform_new_to_old_reply_style (GBinding *binding,
- const GValue *source_value,
- GValue *target_value,
- gpointer user_data)
+static GVariant *
+composer_prefs_map_color_to_string (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
{
- gboolean success = TRUE;
-
- /* XXX This is the kind of legacy crap we wind up
- * with when we don't migrate things properly. */
-
- switch (g_value_get_int (source_value)) {
- case 0: /* Attach: 0 -> 2 */
- g_value_set_int (target_value, 2);
- break;
-
- case 1: /* Outlook: 1 -> 3 */
- g_value_set_int (target_value, 3);
- break;
-
- case 2: /* Quoted: 2 -> 0 */
- g_value_set_int (target_value, 0);
- break;
-
- case 3: /* Do Not Quote: 3 -> 1 */
- g_value_set_int (target_value, 1);
- break;
-
- default:
- success = FALSE;
- break;
+ GVariant *variant;
+ const GdkColor *color;
+
+ color = g_value_get_boxed (value);
+ if (color == NULL) {
+ variant = g_variant_new_string ("");
+ } else {
+ gchar *string;
+
+ /* Encode the color manually because CSS styles expect
+ * color codes as #rrggbb, whereas gdk_color_to_string()
+ * returns color codes as #rrrrggggbbbb. */
+ string = g_strdup_printf (
+ "#%02x%02x%02x",
+ (gint) color->red * 256 / 65536,
+ (gint) color->green * 256 / 65536,
+ (gint) color->blue * 256 / 65536);
+ variant = g_variant_new_string (string);
+ g_free (string);
}
- return success;
+ return variant;
}
static void
@@ -302,7 +277,7 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
{
GtkWidget *toplevel, *widget, *info_pixmap;
GtkWidget *container;
- EShellSettings *shell_settings;
+ GSettings *settings;
ESourceRegistry *registry;
GtkTreeView *view;
GtkListStore *store;
@@ -314,7 +289,8 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
gint i;
registry = e_shell_get_registry (shell);
- shell_settings = e_shell_get_shell_settings (shell);
+
+ settings = g_settings_new ("org.gnome.evolution.mail");
/* Make sure our custom widget classes are registered with
* GType before we load the GtkBuilder definition file. */
@@ -343,129 +319,113 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
/* Express mode does not honor this setting. */
widget = e_builder_get_widget (prefs->builder, "chkSendHTML");
- if (e_shell_get_express_mode (shell))
+ if (e_shell_get_express_mode (shell)) {
gtk_widget_hide (widget);
- else
- g_object_bind_property (
- shell_settings, "composer-format-html",
+ } else {
+ g_settings_bind (
+ settings, "composer-send-html",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
+ }
widget = e_builder_get_widget (prefs->builder, "chkPromptEmptySubject");
- g_object_bind_property (
- shell_settings, "composer-prompt-empty-subject",
+ g_settings_bind (
+ settings, "prompt-on-empty-subject",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkPromptBccOnly");
- g_object_bind_property (
- shell_settings, "composer-prompt-only-bcc",
+ g_settings_bind (
+ settings, "prompt-on-only-bcc",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkPromptPrivateListReply");
- g_object_bind_property (
- shell_settings, "composer-prompt-private-list-reply",
+ g_settings_bind (
+ settings, "prompt-on-private-list-reply",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkPromptReplyManyRecips");
- g_object_bind_property (
- shell_settings, "composer-prompt-reply-many-recips",
+ g_settings_bind (
+ settings, "prompt-on-reply-many-recips",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkPromptListReplyTo");
- g_object_bind_property (
- shell_settings, "composer-prompt-list-reply-to",
+ g_settings_bind (
+ settings, "prompt-on-list-reply-to",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkPromptSendInvalidRecip");
- g_object_bind_property (
- shell_settings, "composer-prompt-send-invalid-recip",
+ g_settings_bind (
+ settings, "prompt-on-invalid-recip",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkAutoSmileys");
- g_object_bind_property (
- shell_settings, "composer-magic-smileys",
+ g_settings_bind (
+ settings, "composer-magic-smileys",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkRequestReceipt");
- g_object_bind_property (
- shell_settings, "composer-request-receipt",
+ g_settings_bind (
+ settings, "composer-request-receipt",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkReplyStartBottom");
- g_object_bind_property (
- shell_settings, "composer-reply-start-bottom",
+ g_settings_bind (
+ settings, "composer-reply-start-bottom",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkOutlookFilenames");
- g_object_bind_property (
- shell_settings, "composer-outlook-filenames",
+ g_settings_bind (
+ settings, "composer-outlook-filenames",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkIgnoreListReplyTo");
- g_object_bind_property (
- shell_settings, "composer-ignore-list-reply-to",
+ g_settings_bind (
+ settings, "composer-ignore-list-reply-to",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkGroupReplyToList");
- g_object_bind_property (
- shell_settings, "composer-group-reply-to-list",
+ g_settings_bind (
+ settings, "composer-group-reply-to-list",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkSignReplyIfSigned");
- g_object_bind_property (
- shell_settings, "composer-sign-reply-if-signed",
+ g_settings_bind (
+ settings, "composer-sign-reply-if-signed",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkTopSignature");
- g_object_bind_property (
- shell_settings, "composer-top-signature",
+ g_settings_bind (
+ settings, "composer-top-signature",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkEnableSpellChecking");
- g_object_bind_property (
- shell_settings, "composer-inline-spelling",
+ g_settings_bind (
+ settings, "composer-inline-spelling",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_charset_combo_box_new ();
container = e_builder_get_widget (prefs->builder, "hboxComposerCharset");
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
gtk_widget_show (widget);
- g_object_bind_property (
- shell_settings, "composer-charset",
+ g_settings_bind (
+ settings, "composer-charset",
widget, "charset",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
container = e_builder_get_widget (prefs->builder, "lblCharset");
gtk_label_set_mnemonic_widget (GTK_LABEL (container), widget);
@@ -500,34 +460,28 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_BUTTON);
widget = e_builder_get_widget (prefs->builder, "colorButtonSpellCheckColor");
- g_object_bind_property_full (
- shell_settings, "composer-spell-color",
+ g_settings_bind_with_mapping (
+ settings, "composer-spell-color",
widget, "color",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE,
- e_binding_transform_string_to_color,
- e_binding_transform_color_to_string,
+ G_SETTINGS_BIND_DEFAULT,
+ composer_prefs_map_string_to_color,
+ composer_prefs_map_color_to_string,
NULL, (GDestroyNotify) NULL);
spell_setup (prefs);
/* Forwards and Replies */
widget = e_builder_get_widget (prefs->builder, "comboboxForwardStyle");
- g_object_bind_property (
- shell_settings, "mail-forward-style",
- widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ g_settings_bind (
+ settings, "forward-style-name",
+ widget, "active-id",
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "comboboxReplyStyle");
- g_object_bind_property_full (
- shell_settings, "mail-reply-style",
- widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE,
- transform_old_to_new_reply_style,
- transform_new_to_old_reply_style,
- NULL, (GDestroyNotify) NULL);
+ g_settings_bind (
+ settings, "reply-style-name",
+ widget, "active-id",
+ G_SETTINGS_BIND_DEFAULT);
/* Signatures */
container = e_builder_get_widget (
@@ -544,10 +498,10 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
/* Express mode does not honor this setting. */
if (!e_shell_get_express_mode (shell))
- g_object_bind_property (
- shell_settings, "composer-format-html",
+ g_settings_bind (
+ settings, "composer-send-html",
widget, "prefer-html",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
/* Sanitize the dialog for Express mode */
e_shell_hide_widgets_for_express_mode (
@@ -561,6 +515,8 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
e_config_set_target ((EConfig *) ec, (EConfigTarget *) target);
toplevel = e_config_create_widget ((EConfig *) ec);
gtk_container_add (GTK_CONTAINER (prefs), toplevel);
+
+ g_object_unref (settings);
}
GtkWidget *
diff --git a/modules/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c
index 83a23ef735..469425ff41 100644
--- a/modules/mail/em-mailer-prefs.c
+++ b/modules/mail/em-mailer-prefs.c
@@ -117,35 +117,79 @@ em_mailer_prefs_init (EMMailerPrefs *preferences)
}
static gboolean
-mark_seen_milliseconds_to_seconds (GBinding *binding,
- const GValue *source_value,
- GValue *target_value,
- gpointer user_data)
+mailer_prefs_map_milliseconds_to_seconds (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
{
- gint milliseconds;
+ gint32 milliseconds;
gdouble seconds;
- milliseconds = g_value_get_int (source_value);
+ milliseconds = g_variant_get_int32 (variant);
seconds = milliseconds / 1000.0;
- g_value_set_double (target_value, seconds);
+ g_value_set_double (value, seconds);
return TRUE;
}
-static gboolean
-mark_seen_seconds_to_milliseconds (GBinding *binding,
- const GValue *source_value,
- GValue *target_value,
- gpointer user_data)
+static GVariant *
+mailer_prefs_map_seconds_to_milliseconds (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
{
- gint milliseconds;
+ gint32 milliseconds;
gdouble seconds;
- seconds = g_value_get_double (source_value);
+ seconds = g_value_get_double (value);
milliseconds = seconds * 1000;
- g_value_set_int (target_value, milliseconds);
- return TRUE;
+ return g_variant_new_int32 (milliseconds);
+}
+
+static gboolean
+mailer_prefs_map_string_to_color (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ GdkColor color;
+ const gchar *string;
+ gboolean success = FALSE;
+
+ string = g_variant_get_string (variant, NULL);
+ if (gdk_color_parse (string, &color)) {
+ g_value_set_boxed (value, &color);
+ success = TRUE;
+ }
+
+ return success;
+}
+
+static GVariant *
+mailer_prefs_map_color_to_string (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
+{
+ GVariant *variant;
+ const GdkColor *color;
+
+ color = g_value_get_boxed (value);
+ if (color == NULL) {
+ variant = g_variant_new_string ("");
+ } else {
+ gchar *string;
+
+ /* Encode the color manually because CSS styles expect
+ * color codes as #rrggbb, whereas gdk_color_to_string()
+ * returns color codes as #rrrrggggbbbb. */
+ string = g_strdup_printf (
+ "#%02x%02x%02x",
+ (gint) color->red * 256 / 65536,
+ (gint) color->green * 256 / 65536,
+ (gint) color->blue * 256 / 65536);
+ variant = g_variant_new_string (string);
+ g_free (string);
+ }
+
+ return variant;
}
enum {
@@ -687,19 +731,51 @@ emmp_empty_junk_init (EMMailerPrefs *prefs,
}
static void
-http_images_changed (GtkWidget *widget,
- EMMailerPrefs *prefs)
+image_loading_policy_always_cb (GtkToggleButton *toggle_button)
+{
+ if (gtk_toggle_button_get_active (toggle_button)) {
+ GSettings *settings;
+
+ settings = g_settings_new ("org.gnome.evolution.mail");
+
+ g_settings_set_enum (
+ settings, "image-loading-policy",
+ E_MAIL_IMAGE_LOADING_POLICY_ALWAYS);
+
+ g_object_unref (settings);
+ }
+}
+
+static void
+image_loading_policy_sometimes_cb (GtkToggleButton *toggle_button)
{
- EMailImageLoadingPolicy policy;
+ if (gtk_toggle_button_get_active (toggle_button)) {
+ GSettings *settings;
+
+ settings = g_settings_new ("org.gnome.evolution.mail");
- if (gtk_toggle_button_get_active (prefs->images_always))
- policy = E_MAIL_IMAGE_LOADING_POLICY_ALWAYS;
- else if (gtk_toggle_button_get_active (prefs->images_sometimes))
- policy = E_MAIL_IMAGE_LOADING_POLICY_SOMETIMES;
- else
- policy = E_MAIL_IMAGE_LOADING_POLICY_NEVER;
+ g_settings_set_enum (
+ settings, "image-loading-policy",
+ E_MAIL_IMAGE_LOADING_POLICY_SOMETIMES);
- g_settings_set_int (prefs->settings, "load-http-images", policy);
+ g_object_unref (settings);
+ }
+}
+
+static void
+image_loading_policy_never_cb (GtkToggleButton *toggle_button)
+{
+ if (gtk_toggle_button_get_active (toggle_button)) {
+ GSettings *settings;
+
+ settings = g_settings_new ("org.gnome.evolution.mail");
+
+ g_settings_set_enum (
+ settings, "image-loading-policy",
+ E_MAIL_IMAGE_LOADING_POLICY_NEVER);
+
+ g_object_unref (settings);
+ }
}
static GtkWidget *
@@ -750,7 +826,7 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
{
GSList *header_add_list, *p;
gchar **headers_config;
- EShellSettings *shell_settings;
+ GSettings *settings;
GHashTable *default_header_hash;
GtkWidget *toplevel;
GtkWidget *container;
@@ -760,12 +836,13 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
GtkCellRenderer *renderer;
GtkTreeIter iter;
gboolean locked;
+ gboolean writable;
gint val, i;
EMConfig *ec;
EMConfigTargetPrefs *target;
GSList *l;
- shell_settings = e_shell_get_shell_settings (shell);
+ settings = g_settings_new ("org.gnome.evolution.mail");
/* Make sure our custom widget classes are registered with
* GType before we load the GtkBuilder definition file. */
@@ -791,197 +868,187 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
/* General tab */
widget = e_builder_get_widget (prefs->builder, "chkCheckMailOnStart");
- g_object_bind_property (
- shell_settings, "mail-check-on-start",
+ g_settings_bind (
+ settings, "send-recv-on-start",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkCheckMailInAllOnStart");
- g_object_bind_property (
- shell_settings, "mail-check-all-on-start",
+ g_settings_bind (
+ settings, "send-recv-all-on-start",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
- g_object_bind_property (
- shell_settings, "mail-check-on-start",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (
+ settings, "send-recv-on-start",
widget, "sensitive",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
/* Message Display */
widget = e_builder_get_widget (prefs->builder, "chkMarkTimeout");
- g_object_bind_property (
- shell_settings, "mail-mark-seen",
+ g_settings_bind (
+ settings, "mark-seen",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
/* The "mark seen" timeout requires special transform functions
* because we display the timeout value to the user in seconds
* but store the settings value in milliseconds. */
widget = e_builder_get_widget (prefs->builder, "spinMarkTimeout");
- g_object_bind_property (
- shell_settings, "mail-mark-seen",
- widget, "sensitive",
- G_BINDING_SYNC_CREATE);
- g_object_bind_property_full (
- shell_settings, "mail-mark-seen-timeout",
+ g_settings_bind_with_mapping (
+ settings, "mark-seen-timeout",
widget, "value",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE,
- mark_seen_milliseconds_to_seconds,
- mark_seen_seconds_to_milliseconds,
+ G_SETTINGS_BIND_DEFAULT,
+ mailer_prefs_map_milliseconds_to_seconds,
+ mailer_prefs_map_seconds_to_milliseconds,
NULL, (GDestroyNotify) NULL);
+ g_settings_bind (
+ settings, "mark-seen",
+ widget, "sensitive",
+ G_SETTINGS_BIND_GET);
widget = e_builder_get_widget (prefs->builder, "view-check");
- g_object_bind_property (
- shell_settings, "mail-global-view-setting",
+ g_settings_bind (
+ settings, "global-view-setting",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_charset_combo_box_new ();
container = e_builder_get_widget (prefs->builder, "hboxDefaultCharset");
- gtk_label_set_mnemonic_widget (GTK_LABEL (e_builder_get_widget (prefs->builder, "lblDefaultCharset")), widget);
+ gtk_label_set_mnemonic_widget (
+ GTK_LABEL (e_builder_get_widget (
+ prefs->builder, "lblDefaultCharset")), widget);
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0);
gtk_widget_show (widget);
- g_object_bind_property (
- shell_settings, "mail-charset",
+ g_settings_bind (
+ settings, "charset",
widget, "charset",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkHighlightCitations");
- g_object_bind_property (
- shell_settings, "mail-mark-citations",
+ g_settings_bind (
+ settings, "mark-citations",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "colorButtonHighlightCitations");
- g_object_bind_property (
- shell_settings, "mail-mark-citations",
- widget, "sensitive",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
- g_object_bind_property_full (
- shell_settings, "mail-citation-color",
+ g_settings_bind_with_mapping (
+ settings, "citation-color",
widget, "color",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE,
- e_binding_transform_string_to_color,
- e_binding_transform_color_to_string,
+ G_SETTINGS_BIND_DEFAULT,
+ mailer_prefs_map_string_to_color,
+ mailer_prefs_map_color_to_string,
NULL, (GDestroyNotify) NULL);
+ g_settings_bind (
+ settings, "mark-citations",
+ widget, "sensitive",
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "thread-by-subject");
- g_object_bind_property (
- shell_settings, "mail-thread-by-subject",
+ g_settings_bind (
+ settings, "thread-subject",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
/* Deleting Mail */
widget = e_builder_get_widget (prefs->builder, "chkEmptyTrashOnExit");
- g_object_bind_property (
- shell_settings, "mail-empty-trash-on-exit",
+ g_settings_bind (
+ settings, "trash-empty-on-exit",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "comboboxEmptyTrashDays");
- g_object_bind_property (
- shell_settings, "mail-empty-trash-on-exit",
+ g_settings_bind (
+ settings, "trash-empty-on-exit",
widget, "sensitive",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
emmp_empty_trash_init (prefs, GTK_COMBO_BOX (widget));
widget = e_builder_get_widget (prefs->builder, "chkConfirmExpunge");
- g_object_bind_property (
- shell_settings, "mail-confirm-expunge",
+ g_settings_bind (
+ settings, "prompt-on-expunge",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
/* Mail Fonts */
widget = e_builder_get_widget (prefs->builder, "radFontUseSame");
- g_object_bind_property (
- shell_settings, "mail-use-custom-fonts",
+ g_settings_bind (
+ settings, "use-custom-font",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE |
- G_BINDING_INVERT_BOOLEAN);
+ G_SETTINGS_BIND_DEFAULT |
+ G_SETTINGS_BIND_INVERT_BOOLEAN);
widget = e_builder_get_widget (prefs->builder, "FontFixed");
- g_object_bind_property (
- shell_settings, "mail-font-monospace",
+ g_settings_bind (
+ settings, "monospace-font",
widget, "font-name",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
- g_object_bind_property (
- shell_settings, "mail-use-custom-fonts",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (
+ settings, "use-custom-font",
widget, "sensitive",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
widget = e_builder_get_widget (prefs->builder, "FontVariable");
- g_object_bind_property (
- shell_settings, "mail-font-variable",
+ g_settings_bind (
+ settings, "variable-width-font",
widget, "font-name",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
- g_object_bind_property (
- shell_settings, "mail-use-custom-fonts",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (
+ settings, "use-custom-font",
widget, "sensitive",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
/* HTML Mail tab */
/* Loading Images */
- locked = !g_settings_is_writable (prefs->settings, "load-http-images");
+ writable = g_settings_is_writable (
+ prefs->settings, "image-loading-policy");
- val = g_settings_get_int (prefs->settings, "load-http-images");
- prefs->images_never = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "radImagesNever"));
- gtk_toggle_button_set_active (prefs->images_never, val == E_MAIL_IMAGE_LOADING_POLICY_NEVER);
- if (locked)
- gtk_widget_set_sensitive ((GtkWidget *) prefs->images_never, FALSE);
+ val = g_settings_get_enum (prefs->settings, "image-loading-policy");
+ widget = e_builder_get_widget (
+ prefs->builder, "radImagesNever");
+ gtk_toggle_button_set_active (
+ GTK_TOGGLE_BUTTON (widget),
+ val == E_MAIL_IMAGE_LOADING_POLICY_NEVER);
+ gtk_widget_set_sensitive (widget, writable);
- prefs->images_sometimes = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "radImagesSometimes"));
- gtk_toggle_button_set_active (prefs->images_sometimes, val == E_MAIL_IMAGE_LOADING_POLICY_SOMETIMES);
- if (locked)
- gtk_widget_set_sensitive ((GtkWidget *) prefs->images_sometimes, FALSE);
+ g_signal_connect (
+ widget, "toggled",
+ G_CALLBACK (image_loading_policy_never_cb), NULL);
- prefs->images_always = GTK_TOGGLE_BUTTON (e_builder_get_widget (prefs->builder, "radImagesAlways"));
- gtk_toggle_button_set_active (prefs->images_always, val == E_MAIL_IMAGE_LOADING_POLICY_ALWAYS);
- if (locked)
- gtk_widget_set_sensitive ((GtkWidget *) prefs->images_always, FALSE);
+ widget = e_builder_get_widget (
+ prefs->builder, "radImagesSometimes");
+ gtk_toggle_button_set_active (
+ GTK_TOGGLE_BUTTON (widget),
+ val == E_MAIL_IMAGE_LOADING_POLICY_SOMETIMES);
+ gtk_widget_set_sensitive (widget, writable);
g_signal_connect (
- prefs->images_never, "toggled",
- G_CALLBACK (http_images_changed), prefs);
- g_signal_connect (
- prefs->images_sometimes, "toggled",
- G_CALLBACK (http_images_changed), prefs);
+ widget, "toggled",
+ G_CALLBACK (image_loading_policy_sometimes_cb), NULL);
+
+ widget = e_builder_get_widget (
+ prefs->builder, "radImagesAlways");
+ gtk_toggle_button_set_active (
+ GTK_TOGGLE_BUTTON (widget),
+ val == E_MAIL_IMAGE_LOADING_POLICY_ALWAYS);
+ gtk_widget_set_sensitive (widget, FALSE);
+
g_signal_connect (
- prefs->images_always, "toggled",
- G_CALLBACK (http_images_changed), prefs);
+ widget, "toggled",
+ G_CALLBACK (image_loading_policy_always_cb), NULL);
widget = e_builder_get_widget (prefs->builder, "chkShowAnimatedImages");
- g_object_bind_property (
- shell_settings, "mail-show-animated-images",
+ g_settings_bind (
+ settings, "show-animated-images",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "chkPromptWantHTML");
- g_object_bind_property (
- shell_settings, "mail-confirm-unwanted-html",
+ g_settings_bind (
+ settings, "prompt-on-unwanted-html",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
container = e_builder_get_widget (prefs->builder, "labels-alignment");
widget = e_mail_label_manager_new ();
@@ -997,23 +1064,20 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
locked = !g_settings_is_writable (prefs->settings, "headers");
widget = e_builder_get_widget (prefs->builder, "photo_show");
- g_object_bind_property (
- shell_settings, "mail-show-sender-photo",
+ g_settings_bind (
+ settings, "show-sender-photo",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "photo_local");
- g_object_bind_property (
- shell_settings, "mail-show-sender-photo",
- widget, "sensitive",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
- g_object_bind_property (
- shell_settings, "mail-only-local-photos",
+ g_settings_bind (
+ settings, "photo-local",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (
+ settings, "show-sender-photo",
+ widget, "sensitive",
+ G_SETTINGS_BIND_GET);
/* always de-sensitised until the user types something in the entry */
prefs->add_header = GTK_BUTTON (e_builder_get_widget (prefs->builder, "cmdHeadersAdd"));
@@ -1142,33 +1206,30 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
widget = gtk_check_button_new_with_mnemonic (_("Show _original header value"));
gtk_widget_show (widget);
gtk_table_attach ((GtkTable *) table, widget, 0, 3, 2, 3, GTK_EXPAND | GTK_FILL, 0, 12, 0);
- g_object_bind_property (
- shell_settings, "mail-show-real-date",
+ g_settings_bind (
+ settings, "show-real-date",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
/* Junk prefs */
widget = e_builder_get_widget (prefs->builder, "chkCheckIncomingMail");
- g_object_bind_property (
- shell_settings, "mail-check-for-junk",
+ g_settings_bind (
+ settings, "junk-check-incoming",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "junk_empty_check");
- g_object_bind_property (
- shell_settings, "mail-empty-junk-on-exit",
+ g_settings_bind (
+ settings, "junk-empty-on-exit",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_DEFAULT);
widget = e_builder_get_widget (prefs->builder, "junk_empty_combobox");
emmp_empty_junk_init (prefs, GTK_COMBO_BOX (widget));
- g_object_bind_property (
- shell_settings, "mail-empty-junk-on-exit",
+ g_settings_bind (
+ settings, "junk-empty-on-exit",
widget, "sensitive",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
widget = e_builder_get_widget (prefs->builder, "junk-module-options");
e_mail_junk_options_set_session (E_MAIL_JUNK_OPTIONS (widget), session);
@@ -1211,6 +1272,8 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
e_config_set_target ((EConfig *) ec, (EConfigTarget *) target);
toplevel = e_config_create_widget ((EConfig *) ec);
gtk_container_add (GTK_CONTAINER (prefs), toplevel);
+
+ g_object_unref (settings);
}
GtkWidget *
diff --git a/modules/mail/em-mailer-prefs.h b/modules/mail/em-mailer-prefs.h
index afd88afb1f..67cd1f64cb 100644
--- a/modules/mail/em-mailer-prefs.h
+++ b/modules/mail/em-mailer-prefs.h
@@ -67,11 +67,6 @@ struct _EMMailerPrefs {
GtkFontButton *font_fixed;
GtkToggleButton *font_share;
- /* Loading Images */
- GtkToggleButton *images_always;
- GtkToggleButton *images_sometimes;
- GtkToggleButton *images_never;
-
GtkToggleButton *autodetect_links;
/* Labels and Colours tab */
diff --git a/modules/mailto-handler/evolution-mailto-handler.c b/modules/mailto-handler/evolution-mailto-handler.c
index b6f3656863..f985562487 100644
--- a/modules/mailto-handler/evolution-mailto-handler.c
+++ b/modules/mailto-handler/evolution-mailto-handler.c
@@ -102,8 +102,7 @@ mailto_handler_is_evolution (GAppInfo *app_info)
static gboolean
mailto_handler_prompt (EMailtoHandler *extension)
{
- EShell *shell;
- EShellSettings *shell_settings;
+ GSettings *settings;
GtkWidget *container;
GtkWidget *dialog;
GtkWidget *widget;
@@ -111,9 +110,6 @@ mailto_handler_prompt (EMailtoHandler *extension)
gchar *markup;
gint response;
- shell = mailto_handler_get_shell (extension);
- shell_settings = e_shell_get_shell_settings (shell);
-
dialog = gtk_dialog_new_with_buttons (
"", NULL, 0,
GTK_STOCK_NO, GTK_RESPONSE_NO,
@@ -156,12 +152,16 @@ mailto_handler_prompt (EMailtoHandler *extension)
gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 12);
gtk_widget_show (widget);
- g_object_bind_property (
- shell_settings, "mailto-handler-check",
+ settings = g_settings_new ("org.gnome.evolution.mail");
+
+ g_settings_bind (
+ settings, "prompt-check-if-default-mailer",
widget, "active",
- G_BINDING_BIDIRECTIONAL |
- G_BINDING_SYNC_CREATE |
- G_BINDING_INVERT_BOOLEAN);
+ G_SETTINGS_BIND_GET |
+ G_SETTINGS_BIND_SET |
+ G_SETTINGS_BIND_INVERT_BOOLEAN);
+
+ g_object_unref (settings);
/* Direct input focus away from the checkbox. */
widget = gtk_dialog_get_widget_for_response (
@@ -178,19 +178,17 @@ mailto_handler_prompt (EMailtoHandler *extension)
static void
mailto_handler_check (EMailtoHandler *extension)
{
- EShell *shell;
- EShellSettings *shell_settings;
+ GSettings *settings;
gboolean check_mailto_handler = TRUE;
GAppInfo *app_info = NULL;
GError *error = NULL;
- shell = mailto_handler_get_shell (extension);
- shell_settings = e_shell_get_shell_settings (shell);
+ settings = g_settings_new ("org.gnome.evolution.mail");
- g_object_get (
- shell_settings,
- "mailto-handler-check", &check_mailto_handler,
- NULL);
+ check_mailto_handler = g_settings_get_boolean (
+ settings, "prompt-check-if-default-mailer");
+
+ g_object_unref (settings);
/* Should we check the "mailto" URI handler? */
if (!check_mailto_handler)
@@ -245,11 +243,6 @@ mailto_handler_constructed (GObject *object)
shell = mailto_handler_get_shell (extension);
- e_shell_settings_install_property_for_key (
- "mailto-handler-check",
- "org.gnome.evolution.mail",
- "prompt-check-if-default-mailer");
-
g_signal_connect_swapped (
shell, "event::ready-to-start",
G_CALLBACK (mailto_handler_check), extension);
diff --git a/modules/settings/e-settings-mail-formatter.c b/modules/settings/e-settings-mail-formatter.c
index 1efd290690..7733c02c74 100644
--- a/modules/settings/e-settings-mail-formatter.c
+++ b/modules/settings/e-settings-mail-formatter.c
@@ -22,7 +22,6 @@
#include "e-settings-mail-formatter.h"
-#include <shell/e-shell.h>
#include <e-util/e-util.h>
#include <em-format/e-mail-formatter.h>
#include <mail/e-mail-reader-utils.h>
@@ -51,6 +50,24 @@ settings_mail_formatter_get_extensible (ESettingsMailFormatter *extension)
return E_MAIL_FORMATTER (extensible);
}
+static gboolean
+settings_mail_formatter_map_string_to_color (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ GdkColor color;
+ const gchar *string;
+ gboolean success = FALSE;
+
+ string = g_variant_get_string (variant, NULL);
+ if (gdk_color_parse (string, &color)) {
+ g_value_set_boxed (value, &color);
+ success = TRUE;
+ }
+
+ return success;
+}
+
static void
settings_mail_formatter_headers_changed_cb (GSettings *settings,
const gchar *key,
@@ -91,14 +108,15 @@ settings_mail_formatter_dispose (GObject *object)
priv = E_SETTINGS_MAIL_FORMATTER_GET_PRIVATE (object);
- if (priv->settings != NULL) {
+ if (priv->headers_changed_id > 0) {
g_signal_handler_disconnect (
priv->settings,
priv->headers_changed_id);
- g_object_unref (priv->settings);
- priv->settings = NULL;
+ priv->headers_changed_id = 0;
}
+ g_clear_object (&priv->settings);
+
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_settings_mail_formatter_parent_class)->
dispose (object);
@@ -109,46 +127,45 @@ settings_mail_formatter_constructed (GObject *object)
{
ESettingsMailFormatter *extension;
EMailFormatter *formatter;
- EShellSettings *shell_settings;
- EShell *shell;
+ GSettings *settings;
extension = E_SETTINGS_MAIL_FORMATTER (object);
formatter = settings_mail_formatter_get_extensible (extension);
- shell = e_shell_get_default ();
- shell_settings = e_shell_get_shell_settings (shell);
+ settings = extension->priv->settings;
- g_object_bind_property_full (
- shell_settings, "mail-citation-color",
+ g_settings_bind_with_mapping (
+ settings, "citation-color",
formatter, "citation-color",
- G_BINDING_SYNC_CREATE,
- e_binding_transform_string_to_color,
- NULL, NULL, (GDestroyNotify) NULL);
+ G_SETTINGS_BIND_GET,
+ settings_mail_formatter_map_string_to_color,
+ (GSettingsBindSetMapping) NULL,
+ NULL, (GDestroyNotify) NULL);
- g_object_bind_property (
- shell_settings, "mail-mark-citations",
+ g_settings_bind (
+ settings, "mark-citations",
formatter, "mark-citations",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "mail-image-loading-policy",
+ g_settings_bind (
+ settings, "image-loading-policy",
formatter, "image-loading-policy",
G_BINDING_SYNC_CREATE);
- g_object_bind_property (
- shell_settings, "mail-show-sender-photo",
+ g_settings_bind (
+ settings, "show-sender-photo",
formatter, "show-sender-photo",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "mail-show-real-date",
+ g_settings_bind (
+ settings, "show-real-date",
formatter, "show-real-date",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "mail-show-animated-images",
+ g_settings_bind (
+ settings, "show-animated-images",
formatter, "animate-images",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
extension->priv->headers_changed_id = g_signal_connect (
extension->priv->settings, "changed::headers",
@@ -189,10 +206,12 @@ e_settings_mail_formatter_class_finalize (ESettingsMailFormatterClass *class)
static void
e_settings_mail_formatter_init (ESettingsMailFormatter *extension)
{
+ GSettings *settings;
+
extension->priv = E_SETTINGS_MAIL_FORMATTER_GET_PRIVATE (extension);
- extension->priv->settings =
- g_settings_new ("org.gnome.evolution.mail");
+ settings = g_settings_new ("org.gnome.evolution.mail");
+ extension->priv->settings = settings;
}
void
diff --git a/modules/settings/e-settings-mail-reader.c b/modules/settings/e-settings-mail-reader.c
index 17ab57b3b8..d333c81bf0 100644
--- a/modules/settings/e-settings-mail-reader.c
+++ b/modules/settings/e-settings-mail-reader.c
@@ -43,31 +43,34 @@ settings_mail_reader_idle_cb (EExtension *extension)
{
EExtensible *extensible;
GtkActionGroup *action_group;
- EShellSettings *shell_settings;
ESourceRegistry *registry;
+ GSettings *settings;
ESource *source;
EShell *shell;
extensible = e_extension_get_extensible (extension);
- shell = e_shell_get_default ();
- registry = e_shell_get_registry (shell);
- shell_settings = e_shell_get_shell_settings (shell);
+ settings = g_settings_new ("org.gnome.evolution.mail");
- g_object_bind_property (
- shell_settings, "mail-forward-style",
+ g_settings_bind (
+ settings, "forward-style-name",
extensible, "forward-style",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "mail-reply-style",
+ g_settings_bind (
+ settings, "reply-style-name",
extensible, "reply-style",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
+
+ g_object_unref (settings);
action_group = e_mail_reader_get_action_group (
E_MAIL_READER (extensible),
E_MAIL_READER_ACTION_GROUP_SEARCH_FOLDERS);
+ shell = e_shell_get_default ();
+ registry = e_shell_get_registry (shell);
+
source = e_source_registry_ref_source (registry, "vfolder");
g_object_bind_property (
diff --git a/modules/settings/e-settings-web-view-gtkhtml.c b/modules/settings/e-settings-web-view-gtkhtml.c
index 49e8112601..297e88f508 100644
--- a/modules/settings/e-settings-web-view-gtkhtml.c
+++ b/modules/settings/e-settings-web-view-gtkhtml.c
@@ -25,7 +25,7 @@
#include "e-settings-web-view-gtkhtml.h"
-#include <shell/e-shell.h>
+#include <e-util/e-util.h>
#define E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
@@ -33,7 +33,7 @@
struct _ESettingsWebViewGtkHTMLPrivate {
GtkCssProvider *css_provider;
- EShellSettings *shell_settings;
+ GSettings *settings;
};
G_DEFINE_DYNAMIC_TYPE (
@@ -74,33 +74,28 @@ settings_web_view_gtkhtml_load_style (ESettingsWebViewGtkHTML *extension)
gboolean custom_fonts;
gboolean mark_citations;
EExtensible *extensible;
- EShellSettings *shell_settings;
GtkStyleContext *style_context;
+ GSettings *settings;
GError *error = NULL;
/* Some of our mail and composer preferences are passed down to
* GtkHtml through style properties, unfortunately. This builds
* a style sheet for the EWebView using values from GSettings. */
- shell_settings = extension->priv->shell_settings;
-
- custom_fonts = e_shell_settings_get_boolean (
- shell_settings, "mail-use-custom-fonts");
-
- monospace_font = e_shell_settings_get_string (
- shell_settings, "mail-font-monospace");
-
- variable_font = e_shell_settings_get_string (
- shell_settings, "mail-font-variable");
-
- mark_citations = e_shell_settings_get_boolean (
- shell_settings, "mail-mark-citations");
-
- citation_color = e_shell_settings_get_string (
- shell_settings, "mail-citation-color");
-
- spell_color = e_shell_settings_get_string (
- shell_settings, "composer-spell-color");
+ settings = extension->priv->settings;
+
+ custom_fonts =
+ g_settings_get_boolean (settings, "use-custom-font");
+ monospace_font =
+ g_settings_get_string (settings, "monospace-font");
+ variable_font =
+ g_settings_get_string (settings, "variable-width-font");
+ mark_citations =
+ g_settings_get_boolean (settings, "mark-citations");
+ citation_color =
+ g_settings_get_string (settings, "citation-color");
+ spell_color =
+ g_settings_get_string (settings, "composer-spell-color");
buffer = g_string_new ("EWebViewGtkHTML {\n");
@@ -150,27 +145,35 @@ settings_web_view_gtkhtml_load_style (ESettingsWebViewGtkHTML *extension)
}
static void
+settings_web_view_gtkhtml_changed_cb (GSettings *settings,
+ const gchar *key,
+ ESettingsWebViewGtkHTML *extension)
+{
+ settings_web_view_gtkhtml_load_style (extension);
+}
+
+static void
settings_web_view_gtkhtml_realize (GtkWidget *widget,
ESettingsWebViewGtkHTML *extension)
{
- EShellSettings *shell_settings;
+ GSettings *settings;
- shell_settings = extension->priv->shell_settings;
+ settings = extension->priv->settings;
- g_object_bind_property (
- shell_settings, "composer-inline-spelling",
+ g_settings_bind (
+ settings, "composer-inline-spelling",
widget, "inline-spelling",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "composer-magic-links",
+ g_settings_bind (
+ settings, "composer-magic-links",
widget, "magic-links",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "composer-magic-smileys",
+ g_settings_bind (
+ settings, "composer-magic-smileys",
widget, "magic-smileys",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
gtk_style_context_add_provider (
gtk_widget_get_style_context (widget),
@@ -181,34 +184,34 @@ settings_web_view_gtkhtml_realize (GtkWidget *widget,
/* Reload the style sheet when certain settings change. */
- g_signal_connect_swapped (
- shell_settings, "notify::mail-use-custom-fonts",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::use-custom-font",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::mail-font-monospace",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::monospace-font",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::mail-font-variable",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::variable-width-font",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::mail-mark-citations",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::mark-citations",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::mail-citation-color",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::citation-color",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::composer-spell-color",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::composer-spell-color",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
}
@@ -219,19 +222,15 @@ settings_web_view_gtkhtml_dispose (GObject *object)
priv = E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE (object);
- if (priv->css_provider != NULL) {
- g_object_unref (priv->css_provider);
- priv->css_provider = NULL;
- }
-
- if (priv->shell_settings != NULL) {
+ if (priv->settings != NULL) {
g_signal_handlers_disconnect_by_func (
- priv->shell_settings,
- settings_web_view_gtkhtml_load_style, object);
- g_object_unref (priv->shell_settings);
- priv->shell_settings = NULL;
+ priv->settings,
+ settings_web_view_gtkhtml_changed_cb, object);
}
+ g_clear_object (&priv->css_provider);
+ g_clear_object (&priv->settings);
+
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_settings_web_view_gtkhtml_parent_class)->
dispose (object);
@@ -240,27 +239,17 @@ settings_web_view_gtkhtml_dispose (GObject *object)
static void
settings_web_view_gtkhtml_constructed (GObject *object)
{
- EShell *shell;
- EShellSettings *shell_settings;
- ESettingsWebViewGtkHTML *extension;
EExtensible *extensible;
- shell = e_shell_get_default ();
- shell_settings = e_shell_get_shell_settings (shell);
-
- extension = (ESettingsWebViewGtkHTML *) object;
- extensible = e_extension_get_extensible (E_EXTENSION (extension));
-
- extension->priv->css_provider = gtk_css_provider_new ();
- extension->priv->shell_settings = g_object_ref (shell_settings);
+ extensible = e_extension_get_extensible (E_EXTENSION (object));
- /* Wait to bind shell settings until the EWebView is realized
- * so GtkhtmlEditor has a chance to install a GtkHTMLEditorAPI.
+ /* Wait to bind settings until the EWebView is realized so
+ * GtkhtmlEditor has a chance to install a GtkHTMLEditorAPI.
* Otherwise our settings will have no effect. */
g_signal_connect (
extensible, "realize",
- G_CALLBACK (settings_web_view_gtkhtml_realize), extension);
+ G_CALLBACK (settings_web_view_gtkhtml_realize), object);
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (e_settings_web_view_gtkhtml_parent_class)->
@@ -292,8 +281,15 @@ e_settings_web_view_gtkhtml_class_finalize (ESettingsWebViewGtkHTMLClass *class)
static void
e_settings_web_view_gtkhtml_init (ESettingsWebViewGtkHTML *extension)
{
+ GSettings *settings;
+
extension->priv =
E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE (extension);
+
+ extension->priv->css_provider = gtk_css_provider_new ();
+
+ settings = g_settings_new ("org.gnome.evolution.mail");
+ extension->priv->settings = settings;
}
void
diff --git a/modules/settings/e-settings-web-view.c b/modules/settings/e-settings-web-view.c
index c8da19f377..843a75070c 100644
--- a/modules/settings/e-settings-web-view.c
+++ b/modules/settings/e-settings-web-view.c
@@ -25,7 +25,7 @@
#include "e-settings-web-view.h"
-#include <shell/e-shell.h>
+#include <e-util/e-util.h>
#define E_SETTINGS_WEB_VIEW_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
@@ -43,29 +43,29 @@ G_DEFINE_DYNAMIC_TYPE (
static void
settings_web_view_constructed (GObject *object)
{
- EShell *shell;
- EShellSettings *shell_settings;
+ GSettings *settings;
EExtensible *extensible;
- shell = e_shell_get_default ();
- shell_settings = e_shell_get_shell_settings (shell);
-
extensible = e_extension_get_extensible (E_EXTENSION (object));
- g_object_bind_property (
- shell_settings, "composer-inline-spelling",
+ settings = g_settings_new ("org.gnome.evolution.mail");
+
+ g_settings_bind (
+ settings, "composer-inline-spelling",
extensible, "inline-spelling",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "composer-magic-links",
+ g_settings_bind (
+ settings, "composer-magic-links",
extensible, "magic-links",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "composer-magic-smileys",
+ g_settings_bind (
+ settings, "composer-magic-smileys",
extensible, "magic-smileys",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
+
+ g_object_unref (settings);
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (e_settings_web_view_parent_class)->
diff --git a/modules/text-highlight/e-mail-formatter-text-highlight.c b/modules/text-highlight/e-mail-formatter-text-highlight.c
index aec403c29c..f1a97b34a9 100644
--- a/modules/text-highlight/e-mail-formatter-text-highlight.c
+++ b/modules/text-highlight/e-mail-formatter-text-highlight.c
@@ -28,9 +28,6 @@
#include <em-format/e-mail-part-utils.h>
#include <e-util/e-util.h>
-#include <shell/e-shell-settings.h>
-#include <shell/e-shell.h>
-
#include <libebackend/libebackend.h>
#include <libedataserver/libedataserver.h>
@@ -52,21 +49,6 @@ G_DEFINE_DYNAMIC_TYPE (
E_TYPE_MAIL_FORMATTER_EXTENSION)
static gchar *
-get_default_font (void)
-{
- gchar *font;
- GSettings *settings;
-
- settings = g_settings_new ("org.gnome.desktop.interface");
-
- font = g_settings_get_string (settings, "monospace-font-name");
-
- g_object_unref (settings);
-
- return font ? font : g_strdup ("monospace 10");
-}
-
-static gchar *
get_syntax (EMailPart *part,
const gchar *uri)
{
@@ -177,10 +159,9 @@ emfe_text_highlight_format (EMailFormatterExtension *extension,
GPid pid;
CamelDataWrapper *dw;
gchar *font_family, *font_size, *syntax;
- gboolean use_custom_font;
- EShell *shell;
- EShellSettings *settings;
PangoFontDescription *fd;
+ GSettings *settings;
+ gchar *font = NULL;
gboolean success;
const gchar *argv[] = { HIGHLIGHT_COMMAND,
@@ -207,30 +188,26 @@ emfe_text_highlight_format (EMailFormatterExtension *extension,
return FALSE;
}
- shell = e_shell_get_default ();
- settings = e_shell_get_shell_settings (shell);
-
- fd = NULL;
- use_custom_font = e_shell_settings_get_boolean (
- settings, "mail-use-custom-fonts");
- if (!use_custom_font) {
- gchar *font;
-
- font = get_default_font ();
- fd = pango_font_description_from_string (font);
- g_free (font);
+ settings = g_settings_new ("org.gnome.evolution.mail");
+ if (g_settings_get_boolean (settings, "use-custom-font"))
+ font = g_settings_get_string (
+ settings, "monospace-font");
+ g_object_unref (settings);
+
+ if (font == NULL) {
+ settings = g_settings_new (
+ "org.gnome.desktop.interface");
+ font = g_settings_get_string (
+ settings, "monospace-font-name");
+ g_object_unref (settings);
+ }
- } else {
- gchar *font;
+ if (font == NULL)
+ font = g_strdup ("monospace 10");
- font = e_shell_settings_get_string (
- settings, "mail-font-monospace");
- if (!font)
- font = get_default_font ();
+ fd = pango_font_description_from_string (font);
- fd = pango_font_description_from_string (font);
- g_free (font);
- }
+ g_free (font);
font_family = g_strdup_printf (
"--font='%s'",