diff options
author | Milan Crha <mcrha@redhat.com> | 2014-05-27 22:12:51 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2014-05-27 22:12:51 +0800 |
commit | 82076f2fae7f20df1163da08e272be18c9dcdb60 (patch) | |
tree | afc0a5b7f3729998cd440e9656bea52ff325ba7e | |
parent | a3db47909ec99d373949e67d6c64de06b398ae07 (diff) | |
download | gsoc2013-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
-rw-r--r-- | data/org.gnome.evolution.mail.gschema.xml.in | 5 | ||||
-rw-r--r-- | mail/mail-config.ui | 16 | ||||
-rw-r--r-- | modules/gravatar/e-gravatar-photo-source.c | 100 | ||||
-rw-r--r-- | modules/gravatar/e-gravatar-photo-source.h | 5 | ||||
-rw-r--r-- | modules/mail/em-mailer-prefs.c | 10 |
5 files changed, 136 insertions, 0 deletions
diff --git a/data/org.gnome.evolution.mail.gschema.xml.in b/data/org.gnome.evolution.mail.gschema.xml.in index 0055c08f61..d026ec931b 100644 --- a/data/org.gnome.evolution.mail.gschema.xml.in +++ b/data/org.gnome.evolution.mail.gschema.xml.in @@ -229,6 +229,11 @@ <_summary>Show photo of the sender</_summary> <_description>Show the photo of the sender in the message reading pane.</_description> </key> + <key name="search-gravatar-for-photo" type="b"> + <default>false</default> + <_summary>Search gravatar.com for photo of the sender</_summary> + <_description>Allow searching also at gravatar.com for photo of the sender.</_description> + </key> <key name="mark-seen" type="b"> <default>true</default> <_summary>Mark as Seen after specified timeout</_summary> diff --git a/mail/mail-config.ui b/mail/mail-config.ui index a33c9334d6..a4769fe02d 100644 --- a/mail/mail-config.ui +++ b/mail/mail-config.ui @@ -2318,6 +2318,22 @@ <property name="position">0</property> </packing> </child> + <child> + <object class="GtkCheckButton" id="search_gravatar"> + <property name="label" translatable="yes">Search gra_vatar.com for the photograph of sender</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0.5</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> </object> </child> </object> 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); |