aboutsummaryrefslogtreecommitdiffstats
path: root/modules/settings/e-settings-web-view-gtkhtml.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-03-10 21:53:12 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-03-17 20:49:12 +0800
commit2e87aa81fc94f5d9564421e036adae7b48e7380a (patch)
tree9576f15a49a6101c9246c6ce0f82e5c7bd4575c2 /modules/settings/e-settings-web-view-gtkhtml.c
parent95a0ae4afb72b534c991fbcd774733a93f256514 (diff)
downloadgsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.gz
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.bz2
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.lz
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.xz
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.tar.zst
gsoc2013-evolution-2e87aa81fc94f5d9564421e036adae7b48e7380a.zip
Remove EMailShellSettings.
EShellSettings predates GSettings and is no longer necessary. GSettings allows binding GObject properties to GSettings keys, with optional mapping functions. That fulfills the purpose of EShellSettings.
Diffstat (limited to 'modules/settings/e-settings-web-view-gtkhtml.c')
-rw-r--r--modules/settings/e-settings-web-view-gtkhtml.c146
1 files changed, 71 insertions, 75 deletions
diff --git a/modules/settings/e-settings-web-view-gtkhtml.c b/modules/settings/e-settings-web-view-gtkhtml.c
index 49e8112601..297e88f508 100644
--- a/modules/settings/e-settings-web-view-gtkhtml.c
+++ b/modules/settings/e-settings-web-view-gtkhtml.c
@@ -25,7 +25,7 @@
#include "e-settings-web-view-gtkhtml.h"
-#include <shell/e-shell.h>
+#include <e-util/e-util.h>
#define E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
@@ -33,7 +33,7 @@
struct _ESettingsWebViewGtkHTMLPrivate {
GtkCssProvider *css_provider;
- EShellSettings *shell_settings;
+ GSettings *settings;
};
G_DEFINE_DYNAMIC_TYPE (
@@ -74,33 +74,28 @@ settings_web_view_gtkhtml_load_style (ESettingsWebViewGtkHTML *extension)
gboolean custom_fonts;
gboolean mark_citations;
EExtensible *extensible;
- EShellSettings *shell_settings;
GtkStyleContext *style_context;
+ GSettings *settings;
GError *error = NULL;
/* Some of our mail and composer preferences are passed down to
* GtkHtml through style properties, unfortunately. This builds
* a style sheet for the EWebView using values from GSettings. */
- shell_settings = extension->priv->shell_settings;
-
- custom_fonts = e_shell_settings_get_boolean (
- shell_settings, "mail-use-custom-fonts");
-
- monospace_font = e_shell_settings_get_string (
- shell_settings, "mail-font-monospace");
-
- variable_font = e_shell_settings_get_string (
- shell_settings, "mail-font-variable");
-
- mark_citations = e_shell_settings_get_boolean (
- shell_settings, "mail-mark-citations");
-
- citation_color = e_shell_settings_get_string (
- shell_settings, "mail-citation-color");
-
- spell_color = e_shell_settings_get_string (
- shell_settings, "composer-spell-color");
+ settings = extension->priv->settings;
+
+ custom_fonts =
+ g_settings_get_boolean (settings, "use-custom-font");
+ monospace_font =
+ g_settings_get_string (settings, "monospace-font");
+ variable_font =
+ g_settings_get_string (settings, "variable-width-font");
+ mark_citations =
+ g_settings_get_boolean (settings, "mark-citations");
+ citation_color =
+ g_settings_get_string (settings, "citation-color");
+ spell_color =
+ g_settings_get_string (settings, "composer-spell-color");
buffer = g_string_new ("EWebViewGtkHTML {\n");
@@ -150,27 +145,35 @@ settings_web_view_gtkhtml_load_style (ESettingsWebViewGtkHTML *extension)
}
static void
+settings_web_view_gtkhtml_changed_cb (GSettings *settings,
+ const gchar *key,
+ ESettingsWebViewGtkHTML *extension)
+{
+ settings_web_view_gtkhtml_load_style (extension);
+}
+
+static void
settings_web_view_gtkhtml_realize (GtkWidget *widget,
ESettingsWebViewGtkHTML *extension)
{
- EShellSettings *shell_settings;
+ GSettings *settings;
- shell_settings = extension->priv->shell_settings;
+ settings = extension->priv->settings;
- g_object_bind_property (
- shell_settings, "composer-inline-spelling",
+ g_settings_bind (
+ settings, "composer-inline-spelling",
widget, "inline-spelling",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "composer-magic-links",
+ g_settings_bind (
+ settings, "composer-magic-links",
widget, "magic-links",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
- g_object_bind_property (
- shell_settings, "composer-magic-smileys",
+ g_settings_bind (
+ settings, "composer-magic-smileys",
widget, "magic-smileys",
- G_BINDING_SYNC_CREATE);
+ G_SETTINGS_BIND_GET);
gtk_style_context_add_provider (
gtk_widget_get_style_context (widget),
@@ -181,34 +184,34 @@ settings_web_view_gtkhtml_realize (GtkWidget *widget,
/* Reload the style sheet when certain settings change. */
- g_signal_connect_swapped (
- shell_settings, "notify::mail-use-custom-fonts",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::use-custom-font",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::mail-font-monospace",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::monospace-font",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::mail-font-variable",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::variable-width-font",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::mail-mark-citations",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::mark-citations",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::mail-citation-color",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::citation-color",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
- g_signal_connect_swapped (
- shell_settings, "notify::composer-spell-color",
- G_CALLBACK (settings_web_view_gtkhtml_load_style),
+ g_signal_connect (
+ settings, "changed::composer-spell-color",
+ G_CALLBACK (settings_web_view_gtkhtml_changed_cb),
extension);
}
@@ -219,19 +222,15 @@ settings_web_view_gtkhtml_dispose (GObject *object)
priv = E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE (object);
- if (priv->css_provider != NULL) {
- g_object_unref (priv->css_provider);
- priv->css_provider = NULL;
- }
-
- if (priv->shell_settings != NULL) {
+ if (priv->settings != NULL) {
g_signal_handlers_disconnect_by_func (
- priv->shell_settings,
- settings_web_view_gtkhtml_load_style, object);
- g_object_unref (priv->shell_settings);
- priv->shell_settings = NULL;
+ priv->settings,
+ settings_web_view_gtkhtml_changed_cb, object);
}
+ g_clear_object (&priv->css_provider);
+ g_clear_object (&priv->settings);
+
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_settings_web_view_gtkhtml_parent_class)->
dispose (object);
@@ -240,27 +239,17 @@ settings_web_view_gtkhtml_dispose (GObject *object)
static void
settings_web_view_gtkhtml_constructed (GObject *object)
{
- EShell *shell;
- EShellSettings *shell_settings;
- ESettingsWebViewGtkHTML *extension;
EExtensible *extensible;
- shell = e_shell_get_default ();
- shell_settings = e_shell_get_shell_settings (shell);
-
- extension = (ESettingsWebViewGtkHTML *) object;
- extensible = e_extension_get_extensible (E_EXTENSION (extension));
-
- extension->priv->css_provider = gtk_css_provider_new ();
- extension->priv->shell_settings = g_object_ref (shell_settings);
+ extensible = e_extension_get_extensible (E_EXTENSION (object));
- /* Wait to bind shell settings until the EWebView is realized
- * so GtkhtmlEditor has a chance to install a GtkHTMLEditorAPI.
+ /* Wait to bind settings until the EWebView is realized so
+ * GtkhtmlEditor has a chance to install a GtkHTMLEditorAPI.
* Otherwise our settings will have no effect. */
g_signal_connect (
extensible, "realize",
- G_CALLBACK (settings_web_view_gtkhtml_realize), extension);
+ G_CALLBACK (settings_web_view_gtkhtml_realize), object);
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (e_settings_web_view_gtkhtml_parent_class)->
@@ -292,8 +281,15 @@ e_settings_web_view_gtkhtml_class_finalize (ESettingsWebViewGtkHTMLClass *class)
static void
e_settings_web_view_gtkhtml_init (ESettingsWebViewGtkHTML *extension)
{
+ GSettings *settings;
+
extension->priv =
E_SETTINGS_WEB_VIEW_GTKHTML_GET_PRIVATE (extension);
+
+ extension->priv->css_provider = gtk_css_provider_new ();
+
+ settings = g_settings_new ("org.gnome.evolution.mail");
+ extension->priv->settings = settings;
}
void