[evolution] Bug 730743 - Add an option to disable sender's photo search at gravatar.com



commit 82076f2fae7f20df1163da08e272be18c9dcdb60
Author: Milan Crha <mcrha redhat com>
Date:   Tue May 27 16:12:51 2014 +0200

    Bug 730743 - Add an option to disable sender's photo search at gravatar.com

 data/org.gnome.evolution.mail.gschema.xml.in |    5 ++
 mail/mail-config.ui                          |   16 ++++
 modules/gravatar/e-gravatar-photo-source.c   |  100 ++++++++++++++++++++++++++
 modules/gravatar/e-gravatar-photo-source.h   |    5 ++
 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 0055c08..d026ec9 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 a33c933..a4769fe 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 5ca4d24..6c01e52 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 3a21604..06f2995 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 0886269..6c30410 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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]