From 2e87aa81fc94f5d9564421e036adae7b48e7380a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 10 Mar 2013 09:53:12 -0400 Subject: 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. --- composer/e-composer-private.c | 44 ++- composer/e-msg-composer.c | 39 +- em-format/e-mail-formatter.c | 12 +- mail/e-http-request.c | 7 +- mail/e-mail-browser.c | 1 - mail/e-mail-paned-view.c | 47 ++- mail/e-mail-reader-utils.c | 27 +- mail/e-mail-reader.c | 22 +- mail/em-composer-utils.c | 13 +- mail/em-utils.c | 8 +- mail/mail-config.ui | 68 +--- mail/message-list.c | 1 - modules/mail/Makefile.am | 2 - modules/mail/e-mail-attachment-handler.c | 18 +- modules/mail/e-mail-shell-backend.c | 86 ++--- modules/mail/e-mail-shell-settings.c | 386 ------------------- modules/mail/e-mail-shell-settings.h | 33 -- modules/mail/e-mail-shell-sidebar.c | 24 +- modules/mail/e-mail-shell-view-actions.c | 24 +- modules/mail/em-composer-prefs.c | 264 ++++++------- modules/mail/em-mailer-prefs.c | 407 ++++++++++++--------- modules/mail/em-mailer-prefs.h | 5 - modules/mailto-handler/evolution-mailto-handler.c | 39 +- modules/settings/e-settings-mail-formatter.c | 77 ++-- modules/settings/e-settings-mail-reader.c | 23 +- modules/settings/e-settings-web-view-gtkhtml.c | 146 ++++---- modules/settings/e-settings-web-view.c | 30 +- .../e-mail-formatter-text-highlight.c | 61 +-- shell/e-shell-window-actions.c | 24 +- 29 files changed, 734 insertions(+), 1204 deletions(-) delete mode 100644 modules/mail/e-mail-shell-settings.c delete mode 100644 modules/mail/e-mail-shell-settings.h diff --git a/composer/e-composer-private.c b/composer/e-composer-private.c index 09b9bf139c..0475996f23 100644 --- a/composer/e-composer-private.c +++ b/composer/e-composer-private.c @@ -140,7 +140,6 @@ e_composer_private_constructed (EMsgComposer *composer) EMsgComposerPrivate *priv = composer->priv; EFocusTracker *focus_tracker; EShell *shell; - EShellSettings *shell_settings; EWebViewGtkHTML *web_view; ESourceRegistry *registry; GtkhtmlEditor *editor; @@ -150,6 +149,7 @@ e_composer_private_constructed (EMsgComposer *composer) GtkWidget *widget; GtkWidget *send_widget; GtkWindow *window; + GSettings *settings; const gchar *path; gboolean small_screen_mode; gchar *filename, *gallery_path; @@ -159,9 +159,10 @@ e_composer_private_constructed (EMsgComposer *composer) editor = GTKHTML_EDITOR (composer); ui_manager = gtkhtml_editor_get_ui_manager (editor); + settings = g_settings_new ("org.gnome.evolution.mail"); + shell = e_msg_composer_get_shell (composer); registry = e_shell_get_registry (shell); - shell_settings = e_shell_get_shell_settings (shell); web_view = e_msg_composer_get_web_view (composer); small_screen_mode = e_shell_get_small_screen_mode (shell); @@ -385,8 +386,9 @@ e_composer_private_constructed (EMsgComposer *composer) container = priv->gallery_scrolled_window; - gallery_path = e_shell_settings_get_string ( - shell_settings, "composer-gallery-path"); + /* FIXME This should be an EMsgComposer property. */ + gallery_path = g_settings_get_string ( + settings, "composer-gallery-path"); widget = e_picture_gallery_new (gallery_path); gtk_container_add (GTK_CONTAINER (container), widget); priv->gallery_icon_view = g_object_ref (widget); @@ -457,6 +459,8 @@ e_composer_private_constructed (EMsgComposer *composer) g_signal_connect ( web_view, "url-requested", G_CALLBACK (msg_composer_url_requested_cb), composer); + + g_object_unref (settings); } void @@ -912,31 +916,31 @@ e_composer_selection_is_image_uris (EMsgComposer *composer, static gboolean add_signature_delimiter (EMsgComposer *composer) { - EShell *shell; - EShellSettings *shell_settings; - - /* FIXME This preference should be an EMsgComposer property. */ + GSettings *settings; + gboolean signature_delim; - shell = e_msg_composer_get_shell (composer); - shell_settings = e_shell_get_shell_settings (shell); + /* FIXME This should be an EMsgComposer property. */ + settings = g_settings_new ("org.gnome.evolution.mail"); + signature_delim = !g_settings_get_boolean ( + settings, "composer-no-signature-delim"); + g_object_unref (settings); - return !e_shell_settings_get_boolean ( - shell_settings, "composer-no-signature-delim"); + return signature_delim; } static gboolean use_top_signature (EMsgComposer *composer) { - EShell *shell; - EShellSettings *shell_settings; - - /* FIXME This preference should be an EMsgComposer property. */ + GSettings *settings; + gboolean top_signature; - shell = e_msg_composer_get_shell (composer); - shell_settings = e_shell_get_shell_settings (shell); + /* FIXME This should be an EMsgComposer property. */ + settings = g_settings_new ("org.gnome.evolution.mail"); + top_signature = g_settings_get_boolean ( + settings, "composer-top-signature"); + g_object_unref (settings); - return e_shell_settings_get_boolean ( - shell_settings, "composer-top-signature"); + return top_signature; } static void diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index 8d0252cc21..7ce38e85ff 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -1456,11 +1456,11 @@ composer_build_message_finish (EMsgComposer *composer, static gboolean use_top_signature (EMsgComposer *composer) { - EShell *shell; - EShellSettings *shell_settings; - EMsgComposerPrivate *priv = E_MSG_COMPOSER_GET_PRIVATE (composer); + EMsgComposerPrivate *priv; + GSettings *settings; + gboolean top_signature; - g_return_val_if_fail (priv != NULL, FALSE); + priv = E_MSG_COMPOSER_GET_PRIVATE (composer); /* The composer had been created from a stored message, thus the * signature placement is either there already, or pt it at the @@ -1469,11 +1469,13 @@ use_top_signature (EMsgComposer *composer) if (priv->is_from_message) return FALSE; - shell = e_msg_composer_get_shell (composer); - shell_settings = e_shell_get_shell_settings (shell); + /* FIXME This should be an EMsgComposer property. */ + settings = g_settings_new ("org.gnome.evolution.mail"); + top_signature = g_settings_get_boolean ( + settings, "composer-top-signature"); + g_object_unref (settings); - return e_shell_settings_get_boolean ( - shell_settings, "composer-top-signature"); + return top_signature; } #define NO_SIGNATURE_TEXT \ @@ -1928,7 +1930,6 @@ static void msg_composer_constructed (GObject *object) { EShell *shell; - EShellSettings *shell_settings; GtkhtmlEditor *editor; EMsgComposer *composer; EAttachmentView *view; @@ -1937,6 +1938,7 @@ msg_composer_constructed (GObject *object) EWebViewGtkHTML *web_view; GtkUIManager *ui_manager; GtkToggleAction *action; + GSettings *settings; const gchar *id; gboolean active; @@ -1944,7 +1946,6 @@ msg_composer_constructed (GObject *object) composer = E_MSG_COMPOSER (object); shell = e_msg_composer_get_shell (composer); - shell_settings = e_shell_get_shell_settings (shell); if (e_shell_get_express_mode (shell)) { GtkWindow *parent = e_shell_get_active_window (shell); @@ -1988,10 +1989,12 @@ msg_composer_constructed (GObject *object) /* Honor User Preferences */ + /* FIXME This should be an EMsgComposer property. */ + settings = g_settings_new ("org.gnome.evolution.mail"); action = GTK_TOGGLE_ACTION (ACTION (REQUEST_READ_RECEIPT)); - active = e_shell_settings_get_boolean ( - shell_settings, "composer-request-receipt"); + active = g_settings_get_boolean (settings, "composer-request-receipt"); gtk_toggle_action_set_active (action, active); + g_object_unref (settings); /* Clipboard Support */ @@ -3413,17 +3416,21 @@ CamelSession * e_msg_composer_get_session (EMsgComposer *composer) { EShell *shell; - EShellSettings *shell_settings; - CamelSession *session; + EShellBackend *shell_backend; + CamelSession *session = NULL; g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL); shell = e_msg_composer_get_shell (composer); - shell_settings = e_shell_get_shell_settings (shell); + shell_backend = e_shell_get_backend_by_name (shell, "mail"); - session = e_shell_settings_get_pointer (shell_settings, "mail-session"); + g_object_get (shell_backend, "session", &session, NULL); g_return_val_if_fail (CAMEL_IS_SESSION (session), NULL); + /* FIXME Drop the new reference for backward-compatibility. + * Rename this function to e_msg_composer_ref_session(). */ + g_object_unref (session); + return session; } diff --git a/em-format/e-mail-formatter.c b/em-format/e-mail-formatter.c index 2e89f698d5..ad62320eee 100644 --- a/em-format/e-mail-formatter.c +++ b/em-format/e-mail-formatter.c @@ -27,6 +27,8 @@ #include #include +#include "libemail-engine/e-mail-enumtypes.h" + #define d(x) /* internal formatter extensions */ @@ -165,7 +167,7 @@ e_mail_formatter_set_property (GObject *object, case PROP_IMAGE_LOADING_POLICY: e_mail_formatter_set_image_loading_policy ( E_MAIL_FORMATTER (object), - g_value_get_int (value)); + g_value_get_enum (value)); return; case PROP_MARK_CITATIONS: @@ -263,7 +265,7 @@ e_mail_formatter_get_property (GObject *object, return; case PROP_IMAGE_LOADING_POLICY: - g_value_set_int ( + g_value_set_enum ( value, e_mail_formatter_get_image_loading_policy ( E_MAIL_FORMATTER (object))); @@ -620,16 +622,14 @@ e_mail_formatter_class_init (EMailFormatterClass *class) GDK_TYPE_COLOR, G_PARAM_READWRITE)); - /* FIXME Make this a proper enum property. */ g_object_class_install_property ( object_class, PROP_IMAGE_LOADING_POLICY, - g_param_spec_int ( + g_param_spec_enum ( "image-loading-policy", "Image Loading Policy", NULL, - E_MAIL_IMAGE_LOADING_POLICY_NEVER, - E_MAIL_IMAGE_LOADING_POLICY_ALWAYS, + E_TYPE_MAIL_IMAGE_LOADING_POLICY, E_MAIL_IMAGE_LOADING_POLICY_NEVER, G_PARAM_READWRITE)); diff --git a/mail/e-http-request.c b/mail/e-http-request.c index 0d6ccc26a1..14bfdda181 100644 --- a/mail/e-http-request.c +++ b/mail/e-http-request.c @@ -157,7 +157,7 @@ handle_http_request (GSimpleAsyncResult *res, EMailImageLoadingPolicy image_policy; gchar *uri_md5; EShell *shell; - EShellSettings *shell_settings; + GSettings *settings; const gchar *user_cache_dir; CamelDataCache *cache; CamelStream *cache_stream; @@ -274,8 +274,9 @@ handle_http_request (GSimpleAsyncResult *res, goto cleanup; } - shell_settings = e_shell_get_shell_settings (shell); - image_policy = e_shell_settings_get_int (shell_settings, "mail-image-loading-policy"); + settings = g_settings_new ("org.gnome.evolution.mail"); + image_policy = g_settings_get_enum (settings, "image-loading-policy"); + g_object_unref (settings); /* Item not found in cache, but image loading policy allows us to fetch * it from the interwebs */ diff --git a/mail/e-mail-browser.c b/mail/e-mail-browser.c index bdebf269aa..36489fbcdf 100644 --- a/mail/e-mail-browser.c +++ b/mail/e-mail-browser.c @@ -30,7 +30,6 @@ #include "shell/e-shell.h" #include "shell/e-shell-utils.h" -#include "shell/e-shell-settings.h" #include "mail/e-mail-reader.h" #include "mail/e-mail-reader-utils.h" diff --git a/mail/e-mail-paned-view.c b/mail/e-mail-paned-view.c index bf7907031c..ea654aa4c5 100644 --- a/mail/e-mail-paned-view.c +++ b/mail/e-mail-paned-view.c @@ -496,14 +496,14 @@ mail_paned_view_set_folder (EMailReader *reader, EShell *shell; EShellView *shell_view; EShellWindow *shell_window; - EShellSettings *shell_settings; + GSettings *settings; EMailReaderInterface *default_interface; GtkWidget *message_list; GKeyFile *key_file; gchar *folder_uri; gchar *group_name; const gchar *key; - gboolean value, global_view_settings; + gboolean value, global_view_setting; GError *error = NULL; priv = E_MAIL_PANED_VIEW_GET_PRIVATE (reader); @@ -513,8 +513,12 @@ mail_paned_view_set_folder (EMailReader *reader, 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); - global_view_settings = e_shell_settings_get_boolean (shell_settings, "mail-global-view-setting"); + + settings = g_settings_new ("org.gnome.evolution.mail"); + + /* FIXME This should be an EMailReader property. */ + global_view_setting = g_settings_get_boolean ( + settings, "global-view-setting"); message_list = e_mail_reader_get_message_list (reader); @@ -547,11 +551,11 @@ mail_paned_view_set_folder (EMailReader *reader, g_free (folder_uri); key = STATE_KEY_GROUP_BY_THREADS; - value = g_key_file_get_boolean (key_file, global_view_settings ? STATE_GROUP_GLOBAL_FOLDER : group_name, key, &error); + value = g_key_file_get_boolean (key_file, global_view_setting ? STATE_GROUP_GLOBAL_FOLDER : group_name, key, &error); if (error != NULL) { g_clear_error (&error); - value = !global_view_settings || + value = !global_view_setting || g_key_file_get_boolean (key_file, STATE_GROUP_GLOBAL_FOLDER, key, &error); if (error != NULL) { g_clear_error (&error); @@ -562,11 +566,11 @@ mail_paned_view_set_folder (EMailReader *reader, e_mail_reader_set_group_by_threads (reader, value); key = STATE_KEY_PREVIEW_VISIBLE; - value = g_key_file_get_boolean (key_file, global_view_settings ? STATE_GROUP_GLOBAL_FOLDER : group_name, key, &error); + value = g_key_file_get_boolean (key_file, global_view_setting ? STATE_GROUP_GLOBAL_FOLDER : group_name, key, &error); if (error != NULL) { g_clear_error (&error); - value = !global_view_settings || + value = !global_view_setting || g_key_file_get_boolean (key_file, STATE_GROUP_GLOBAL_FOLDER, key, &error); if (error != NULL) { g_clear_error (&error); @@ -576,11 +580,10 @@ mail_paned_view_set_folder (EMailReader *reader, /* XXX This is a little confusing and needs rethought. The * EShellWindow:safe-mode property blocks automatic message - * selection, but the "mail-safe-list" shell setting blocks - * both the preview pane and automatic message selection. */ - if (e_shell_settings_get_boolean (shell_settings, "mail-safe-list")) { - e_shell_settings_set_boolean ( - shell_settings, "mail-safe-list", FALSE); + * selection, but the "safe-list" setting blocks both the + * preview pane and automatic message selection. */ + if (g_settings_get_boolean (settings, "safe-list")) { + g_settings_set_boolean (settings, "safe-list", FALSE); e_shell_window_set_safe_mode (shell_window, TRUE); value = FALSE; } @@ -591,6 +594,8 @@ mail_paned_view_set_folder (EMailReader *reader, exit: message_list_thaw (MESSAGE_LIST (message_list)); + + g_object_unref (settings); } static guint @@ -806,15 +811,16 @@ mail_paned_view_update_view_instance (EMailView *view) EShellView *shell_view; EShellWindow *shell_window; EShellViewClass *shell_view_class; - EShellSettings *shell_settings; ESourceRegistry *registry; GalViewCollection *view_collection; GalViewInstance *view_instance; CamelFolder *folder; GtkOrientable *orientable; GtkOrientation orientation; + GSettings *settings; gboolean outgoing_folder; gboolean show_vertical_view; + gboolean global_view_setting; gchar *view_id; priv = E_MAIL_PANED_VIEW_GET_PRIVATE (view); @@ -826,7 +832,6 @@ mail_paned_view_update_view_instance (EMailView *view) shell_window = e_shell_view_get_shell_window (shell_view); shell = e_shell_window_get_shell (shell_window); registry = e_shell_get_registry (shell); - shell_settings = e_shell_get_shell_settings (shell); reader = E_MAIL_READER (view); folder = e_mail_reader_get_folder (reader); @@ -848,7 +853,12 @@ mail_paned_view_update_view_instance (EMailView *view) em_utils_folder_is_outbox (registry, folder) || em_utils_folder_is_sent (registry, folder); - if (e_shell_settings_get_boolean (shell_settings, "mail-global-view-setting")) + settings = g_settings_new ("org.gnome.evolution.mail"); + global_view_setting = g_settings_get_boolean ( + settings, "global-view-setting"); + g_object_unref (settings); + + if (global_view_setting) view_instance = e_shell_view_new_view_instance ( shell_view, outgoing_folder ? "global_view_sent_setting" : "global_view_setting"); @@ -860,9 +870,8 @@ mail_paned_view_update_view_instance (EMailView *view) orientable = GTK_ORIENTABLE (view); orientation = gtk_orientable_get_orientation (orientable); show_vertical_view = - (orientation == GTK_ORIENTATION_HORIZONTAL) && - !e_shell_settings_get_boolean ( - shell_settings, "mail-global-view-setting"); + !global_view_setting && + (orientation == GTK_ORIENTATION_HORIZONTAL); if (show_vertical_view) { gchar *filename; diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c index dcb3383093..74369202ba 100644 --- a/mail/e-mail-reader-utils.c +++ b/mail/e-mail-reader-utils.c @@ -115,42 +115,36 @@ mail_reader_is_special_local_folder (const gchar *name) gboolean e_mail_reader_confirm_delete (EMailReader *reader) { - EShell *shell; - EMailBackend *backend; - EShellBackend *shell_backend; - EShellSettings *shell_settings; CamelFolder *folder; CamelStore *parent_store; GtkWidget *check_button; GtkWidget *container; GtkWidget *dialog; GtkWindow *window; + GSettings *settings; const gchar *label; gboolean prompt_delete_in_vfolder; - gint response; + gint response = GTK_RESPONSE_OK; /* Remind users what deleting from a search folder does. */ g_return_val_if_fail (E_IS_MAIL_READER (reader), FALSE); - backend = e_mail_reader_get_backend (reader); folder = e_mail_reader_get_folder (reader); window = e_mail_reader_get_window (reader); - shell_backend = E_SHELL_BACKEND (backend); - shell = e_shell_backend_get_shell (shell_backend); - shell_settings = e_shell_get_shell_settings (shell); + settings = g_settings_new ("org.gnome.evolution.mail"); - prompt_delete_in_vfolder = e_shell_settings_get_boolean ( - shell_settings, "mail-prompt-delete-in-vfolder"); + prompt_delete_in_vfolder = g_settings_get_boolean ( + settings, "prompt-on-delete-in-vfolder"); parent_store = camel_folder_get_parent_store (folder); if (!CAMEL_IS_VEE_STORE (parent_store)) - return TRUE; + goto exit; if (!prompt_delete_in_vfolder) - return TRUE; + goto exit; dialog = e_alert_dialog_new_for_args ( window, "mail:ask-delete-vfolder-msg", @@ -166,14 +160,15 @@ e_mail_reader_confirm_delete (EMailReader *reader) response = gtk_dialog_run (GTK_DIALOG (dialog)); if (response != GTK_RESPONSE_DELETE_EVENT) - e_shell_settings_set_boolean ( - shell_settings, - "mail-prompt-delete-in-vfolder", + g_settings_set_boolean ( + settings, + "prompt-on-delete-in-vfolder", !gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (check_button))); gtk_widget_destroy (dialog); +exit: return (response == GTK_RESPONSE_OK); } diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c index 64b8d78b40..69bb388d72 100644 --- a/mail/e-mail-reader.c +++ b/mail/e-mail-reader.c @@ -2732,32 +2732,28 @@ mail_reader_message_seen_cb (EMailReaderClosure *closure) static gboolean schedule_timeout_mark_seen (EMailReader *reader) { - EShell *shell; - EMailBackend *backend; - EShellBackend *shell_backend; - EShellSettings *shell_settings; MessageList *message_list; + GSettings *settings; gboolean schedule_timeout; gint timeout_interval; const gchar *message_uid; - backend = e_mail_reader_get_backend (reader); + message_list = MESSAGE_LIST (e_mail_reader_get_message_list (reader)); - shell_backend = E_SHELL_BACKEND (backend); - shell = e_shell_backend_get_shell (shell_backend); - shell_settings = e_shell_get_shell_settings (shell); message_uid = message_list->cursor_uid; if (message_uid == NULL || e_tree_is_dragging (E_TREE (message_list))) return FALSE; + settings = g_settings_new ("org.gnome.evolution.mail"); + + /* FIXME These should be EMailReader properties. */ schedule_timeout = (message_uid != NULL) && - e_shell_settings_get_boolean ( - shell_settings, "mail-mark-seen"); - timeout_interval = - e_shell_settings_get_int ( - shell_settings, "mail-mark-seen-timeout"); + g_settings_get_boolean (settings, "mark-seen"); + timeout_interval = g_settings_get_int (settings, "mark-seen-timeout"); + + g_object_unref (settings); if (message_list->seen_id > 0) { g_source_remove (message_list->seen_id); diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index d52d04c3fb..515f27885c 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1522,20 +1522,21 @@ static void emu_update_composers_security (EMsgComposer *composer, guint32 validity_found) { - EShell *shell; - EShellSettings *shell_settings; GtkAction *action; + GSettings *settings; gboolean sign_by_default; g_return_if_fail (composer != NULL); - shell = e_msg_composer_get_shell (composer); - shell_settings = e_shell_get_shell_settings (shell); + settings = g_settings_new ("org.gnome.evolution.mail"); sign_by_default = (validity_found & E_MAIL_PART_VALIDITY_SIGNED) != 0 && - e_shell_settings_get_boolean ( - shell_settings, "composer-sign-reply-if-signed"); + /* FIXME This should be an EMsgComposer property. */ + g_settings_get_boolean ( + settings, "composer-sign-reply-if-signed"); + + g_object_unref (settings); /* Pre-set only for encrypted messages, not for signed */ if (sign_by_default) { diff --git a/mail/em-utils.c b/mail/em-utils.c index 74a0eaca49..0da08fa324 100644 --- a/mail/em-utils.c +++ b/mail/em-utils.c @@ -1519,7 +1519,7 @@ em_utils_is_re_in_subject (EShell *shell, const gchar *subject, gint *skip_len) { - EShellSettings *shell_settings; + GSettings *settings; gchar *prefixes, **prefixes_strv; gboolean res; gint ii; @@ -1536,8 +1536,10 @@ em_utils_is_re_in_subject (EShell *shell, if (check_prefix (subject, "Re", skip_len)) return TRUE; - shell_settings = e_shell_get_shell_settings (shell); - prefixes = e_shell_settings_get_string (shell_settings, "composer-localized-re"); + settings = g_settings_new ("org.gnome.evolution.mail"); + prefixes = g_settings_get_string (settings, "composer-localized-re"); + g_object_unref (settings); + if (!prefixes || !*prefixes) { g_free (prefixes); return FALSE; diff --git a/mail/mail-config.ui b/mail/mail-config.ui index 162cdd4dd7..2b32acb683 100644 --- a/mail/mail-config.ui +++ b/mail/mail-config.ui @@ -481,16 +481,14 @@ 0 0 - + True - False - model3 - - - - 0 - - + + Attachment + Inline (Outlook style) + Quoted + Do Not Quote + @@ -506,16 +504,13 @@ 0 0 - + True - False - model4 - - - - 0 - - + + Attachment + Inline + Quoted + @@ -1065,43 +1060,6 @@ - - - - - - - - Attachment - - - Inline (Outlook style) - - - Quoted - - - Do not quote - - - - - - - - - - - Attachment - - - Inline - - - Quoted - - - True True diff --git a/mail/message-list.c b/mail/message-list.c index cc23f99621..dcae35ffd3 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -39,7 +39,6 @@ #include #include "shell/e-shell.h" -#include "shell/e-shell-settings.h" #include "libemail-engine/e-mail-utils.h" #include "libemail-engine/mail-config.h" 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 #include -#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 - * - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include "e-mail-shell-settings.h" - -#include - -#include - -#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 - * - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#ifndef E_MAIL_SHELL_SETTINGS_H -#define E_MAIL_SHELL_SETTINGS_H - -#include - -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 #include #include #include @@ -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 +#include #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"); @@ -149,28 +144,36 @@ settings_web_view_gtkhtml_load_style (ESettingsWebViewGtkHTML *extension) gtk_style_context_invalidate (style_context); } +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 +#include #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 #include -#include -#include - #include #include @@ -51,21 +48,6 @@ G_DEFINE_DYNAMIC_TYPE ( e_mail_formatter_text_highlight, 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'", diff --git a/shell/e-shell-window-actions.c b/shell/e-shell-window-actions.c index 335e939d84..2b70a5eea2 100644 --- a/shell/e-shell-window-actions.c +++ b/shell/e-shell-window-actions.c @@ -763,17 +763,17 @@ action_work_offline_cb (GtkAction *action, EShellWindow *shell_window) { EShell *shell; - EShellSettings *shell_settings; + GSettings *settings; shell = e_shell_window_get_shell (shell_window); - shell_settings = e_shell_get_shell_settings (shell); e_shell_set_online (shell, FALSE); - /* XXX The sense of the setting is reversed. Would be more - * intuitive and less error-prone as "start-online". */ - e_shell_settings_set_boolean ( - shell_settings, "start-offline", TRUE); + /* XXX The boolean sense of the setting is backwards. Would + * be more intuitive and less error-prone as "start-online". */ + settings = g_settings_new ("org.gnome.evolution.shell"); + g_settings_set_boolean (settings, "start-offline", TRUE); + g_object_unref (settings); } /** @@ -789,17 +789,17 @@ action_work_online_cb (GtkAction *action, EShellWindow *shell_window) { EShell *shell; - EShellSettings *shell_settings; + GSettings *settings; shell = e_shell_window_get_shell (shell_window); - shell_settings = e_shell_get_shell_settings (shell); e_shell_set_online (shell, TRUE); - /* XXX The sense of the setting is reversed. Would be more - * intuitive and less error-prone as "start-online". */ - e_shell_settings_set_boolean ( - shell_settings, "start-offline", FALSE); + /* XXX The boolean sense of the setting is backwards. Would + * be more intuitive and less error-prone as "start-online". */ + settings = g_settings_new ("org.gnome.evolution.shell"); + g_settings_set_boolean (settings, "start-offline", FALSE); + g_object_unref (settings); } /** -- cgit v1.2.3