aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2014-05-27 22:12:51 +0800
committerMilan Crha <mcrha@redhat.com>2014-05-27 22:12:51 +0800
commit82076f2fae7f20df1163da08e272be18c9dcdb60 (patch)
treeafc0a5b7f3729998cd440e9656bea52ff325ba7e /modules
parenta3db47909ec99d373949e67d6c64de06b398ae07 (diff)
downloadgsoc2013-evolution-82076f2fae7f20df1163da08e272be18c9dcdb60.tar
gsoc2013-evolution-82076f2fae7f20df1163da08e272be18c9dcdb60.tar.gz
gsoc2013-evolution-82076f2fae7f20df1163da08e272be18c9dcdb60.tar.bz2
gsoc2013-evolution-82076f2fae7f20df1163da08e272be18c9dcdb60.tar.lz
gsoc2013-evolution-82076f2fae7f20df1163da08e272be18c9dcdb60.tar.xz
gsoc2013-evolution-82076f2fae7f20df1163da08e272be18c9dcdb60.tar.zst
gsoc2013-evolution-82076f2fae7f20df1163da08e272be18c9dcdb60.zip
Bug 730743 - Add an option to disable sender's photo search at gravatar.com
Diffstat (limited to 'modules')
-rw-r--r--modules/gravatar/e-gravatar-photo-source.c100
-rw-r--r--modules/gravatar/e-gravatar-photo-source.h5
-rw-r--r--modules/mail/em-mailer-prefs.c10
3 files changed, 115 insertions, 0 deletions
diff --git a/modules/gravatar/e-gravatar-photo-source.c b/modules/gravatar/e-gravatar-photo-source.c
index 5ca4d2483e..6c01e522e3 100644
--- a/modules/gravatar/e-gravatar-photo-source.c
+++ b/modules/gravatar/e-gravatar-photo-source.c
@@ -26,6 +26,16 @@
#define AVATAR_BASE_URI "http://www.gravatar.com/avatar/"
+struct _EGravatarPhotoSourcePrivate
+{
+ gboolean enabled;
+};
+
+enum {
+ PROP_0,
+ PROP_ENABLED
+};
+
typedef struct _AsyncContext AsyncContext;
struct _AsyncContext {
@@ -68,6 +78,11 @@ gravatar_photo_source_get_photo_thread (GSimpleAsyncResult *simple,
gchar *uri;
GError *local_error = NULL;
+ g_return_if_fail (E_IS_GRAVATAR_PHOTO_SOURCE (source_object));
+
+ if (!e_gravatar_photo_source_get_enabled (E_GRAVATAR_PHOTO_SOURCE (source_object)))
+ return;
+
async_context = g_simple_async_result_get_op_res_gpointer (simple);
hash = e_gravatar_get_hash (async_context->email_address);
@@ -191,8 +206,61 @@ gravatar_photo_source_get_photo_finish (EPhotoSource *photo_source,
}
static void
+gravatar_photo_source_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_ENABLED:
+ e_gravatar_photo_source_set_enabled (
+ E_GRAVATAR_PHOTO_SOURCE (object),
+ g_value_get_boolean (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+gravatar_photo_source_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_ENABLED:
+ g_value_set_boolean (
+ value,
+ e_gravatar_photo_source_get_enabled (
+ E_GRAVATAR_PHOTO_SOURCE (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
e_gravatar_photo_source_class_init (EGravatarPhotoSourceClass *class)
{
+ GObjectClass *object_class;
+
+ g_type_class_add_private (class, sizeof (EGravatarPhotoSourcePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = gravatar_photo_source_set_property;
+ object_class->get_property = gravatar_photo_source_get_property;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_ENABLED,
+ g_param_spec_boolean (
+ "enabled",
+ "Enabled",
+ "Whether can search for contact photos",
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
}
static void
@@ -210,6 +278,17 @@ e_gravatar_photo_source_interface_init (EPhotoSourceInterface *iface)
static void
e_gravatar_photo_source_init (EGravatarPhotoSource *photo_source)
{
+ GSettings *settings;
+
+ photo_source->priv = E_GRAVATAR_PHOTO_SOURCE_GET_PRIVATE (photo_source);
+
+ settings = g_settings_new ("org.gnome.evolution.mail");
+
+ g_settings_bind (settings, "search-gravatar-for-photo",
+ photo_source, "enabled",
+ G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_NO_SENSITIVITY);
+
+ g_object_unref (settings);
}
void
@@ -243,3 +322,24 @@ e_gravatar_get_hash (const gchar *email_address)
return hash;
}
+gboolean
+e_gravatar_photo_source_get_enabled (EGravatarPhotoSource *photo_source)
+{
+ g_return_val_if_fail (E_IS_GRAVATAR_PHOTO_SOURCE (photo_source), FALSE);
+
+ return photo_source->priv->enabled;
+}
+
+void
+e_gravatar_photo_source_set_enabled (EGravatarPhotoSource *photo_source,
+ gboolean enabled)
+{
+ g_return_if_fail (E_IS_GRAVATAR_PHOTO_SOURCE (photo_source));
+
+ if ((photo_source->priv->enabled ? 1 : 0) == (enabled ? 1 : 0))
+ return;
+
+ photo_source->priv->enabled = enabled;
+
+ g_object_notify (G_OBJECT (photo_source), "enabled");
+}
diff --git a/modules/gravatar/e-gravatar-photo-source.h b/modules/gravatar/e-gravatar-photo-source.h
index 3a21604b49..06f2995f02 100644
--- a/modules/gravatar/e-gravatar-photo-source.h
+++ b/modules/gravatar/e-gravatar-photo-source.h
@@ -60,6 +60,11 @@ void e_gravatar_photo_source_type_register
(GTypeModule *type_module);
EPhotoSource * e_gravatar_photo_source_new (void);
gchar * e_gravatar_get_hash (const gchar *email_address);
+gboolean e_gravatar_photo_source_get_enabled
+ (EGravatarPhotoSource *photo_source);
+void e_gravatar_photo_source_set_enabled
+ (EGravatarPhotoSource *photo_source,
+ gboolean enabled);
G_END_DECLS
diff --git a/modules/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c
index 0886269d60..6c30410fd4 100644
--- a/modules/mail/em-mailer-prefs.c
+++ b/modules/mail/em-mailer-prefs.c
@@ -1065,6 +1065,16 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
widget, "active",
G_SETTINGS_BIND_DEFAULT);
+ widget = e_builder_get_widget (prefs->builder, "search_gravatar");
+ g_settings_bind (
+ settings, "search-gravatar-for-photo",
+ widget, "active",
+ 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"));
gtk_widget_set_sensitive ((GtkWidget *) prefs->add_header, FALSE);