aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-04-20 23:22:58 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-04-21 01:15:27 +0800
commit60386356e322c0ebe3a0101a616752c0e557491e (patch)
treea115b4f28bddd84ec037584c8f2902e1884c4994
parent5e1934425ddedb3848a66f16100e4ee1ea12aeb1 (diff)
downloadgsoc2013-evolution-60386356e322c0ebe3a0101a616752c0e557491e.tar.gz
gsoc2013-evolution-60386356e322c0ebe3a0101a616752c0e557491e.tar.zst
gsoc2013-evolution-60386356e322c0ebe3a0101a616752c0e557491e.zip
Remove "Search for sender photograph only in local address books".
This was added as part of bug 360184 but no justification was given for the "local-only" part. My Spidey sense tells me it was a hack- around for the old implementation's tendency to freeze the UI while searching for a photograph. So the "local-only" option really just meant "don't freeze the UI for very long, please". The new EPhotoCache-based implementation in 3.8 NEVER freezes the UI, so the "local-only" option is no longer needed. If a remote address book is slow or unresponsive we simply cancel the async photo lookup when the user moves on to another email.
-rw-r--r--data/evolution.convert1
-rw-r--r--data/org.gnome.evolution.mail.gschema.xml.in5
-rw-r--r--e-util/e-photo-cache.c126
-rw-r--r--e-util/e-photo-cache.h3
-rw-r--r--mail/mail-config.ui16
-rw-r--r--modules/mail/em-mailer-prefs.c10
-rw-r--r--modules/settings/Makefile.am2
-rw-r--r--modules/settings/e-settings-photo-cache.c92
-rw-r--r--modules/settings/e-settings-photo-cache.h65
-rw-r--r--modules/settings/evolution-module-settings.c2
10 files changed, 12 insertions, 310 deletions
diff --git a/data/evolution.convert b/data/evolution.convert
index bfaee128ba..3d1f3f49e9 100644
--- a/data/evolution.convert
+++ b/data/evolution.convert
@@ -162,7 +162,6 @@ mark-seen-timeout = /apps/evolution/mail/display/mark_seen_timeout
mime-types = /apps/evolution/mail/display/mime_types
monospace-font = /apps/evolution/mail/display/fonts/monospace
paned-size = /apps/evolution/mail/display/paned_size
-photo-local = /apps/evolution/mail/display/photo_local
prompt-check-if-default-mailer = /apps/evolution/mail/prompts/checkdefault
prompt-on-delete-in-vfolder = /apps/evolution/mail/prompts/delete_in_vfolder
prompt-on-empty-subject = /apps/evolution/mail/prompts/empty_subject
diff --git a/data/org.gnome.evolution.mail.gschema.xml.in b/data/org.gnome.evolution.mail.gschema.xml.in
index 24295b88af..d7d3a9fbca 100644
--- a/data/org.gnome.evolution.mail.gschema.xml.in
+++ b/data/org.gnome.evolution.mail.gschema.xml.in
@@ -239,11 +239,6 @@
<_summary>Show photo of the sender</_summary>
<_description>Show the photo of the sender in the message reading pane.</_description>
</key>
- <key name="photo-local" type="b">
- <default>true</default>
- <_summary>Search for the sender photo in local address books </_summary>
- <_description>This option would help in improving the speed of fetching.</_description>
- </key>
<key name="mark-seen" type="b">
<default>true</default>
<_summary>Mark as Seen after specified timeout</_summary>
diff --git a/e-util/e-photo-cache.c b/e-util/e-photo-cache.c
index 74de1e9b7c..9ea0cb7ab2 100644
--- a/e-util/e-photo-cache.c
+++ b/e-util/e-photo-cache.c
@@ -49,7 +49,6 @@ typedef struct _PhotoData PhotoData;
struct _EPhotoCachePrivate {
EClientCache *client_cache;
- gboolean local_only;
GHashTable *photo_ht;
GQueue photo_ht_keys;
@@ -70,8 +69,7 @@ struct _PhotoData {
enum {
PROP_0,
- PROP_CLIENT_CACHE,
- PROP_LOCAL_ONLY
+ PROP_CLIENT_CACHE
};
G_DEFINE_TYPE_WITH_CODE (
@@ -325,33 +323,6 @@ photo_cache_extract_photo (EContact *contact)
return photo;
}
-static GList *
-photo_cache_list_searchable_sources (EPhotoCache *photo_cache)
-{
- EClientCache *client_cache;
- ESourceRegistry *registry;
- GList *list;
-
- client_cache = e_photo_cache_ref_client_cache (photo_cache);
- registry = e_client_cache_ref_registry (client_cache);
-
- if (e_photo_cache_get_local_only (photo_cache)) {
- ESource *source;
-
- source = e_source_registry_ref_builtin_address_book (registry);
- list = g_list_prepend (NULL, g_object_ref (source));
- g_object_unref (source);
- } else {
- list = e_source_registry_list_sources (
- registry, E_SOURCE_EXTENSION_ADDRESS_BOOK);
- }
-
- g_object_unref (client_cache);
- g_object_unref (registry);
-
- return list;
-}
-
static gboolean
photo_cache_find_contacts (EPhotoCache *photo_cache,
const gchar *email_address,
@@ -360,8 +331,10 @@ photo_cache_find_contacts (EPhotoCache *photo_cache,
GError **error)
{
EClientCache *client_cache;
+ ESourceRegistry *registry;
EBookQuery *book_query;
GList *list, *link;
+ const gchar *extension_name;
gchar *book_query_string;
gboolean success = TRUE;
@@ -371,8 +344,10 @@ photo_cache_find_contacts (EPhotoCache *photo_cache,
e_book_query_unref (book_query);
client_cache = e_photo_cache_ref_client_cache (photo_cache);
+ registry = e_client_cache_ref_registry (client_cache);
- list = photo_cache_list_searchable_sources (photo_cache);
+ extension_name = E_SOURCE_EXTENSION_ADDRESS_BOOK;
+ list = e_source_registry_list_enabled (registry, extension_name);
for (link = list; link != NULL; link = g_list_next (link)) {
ESource *source = E_SOURCE (link->data);
@@ -380,13 +355,9 @@ photo_cache_find_contacts (EPhotoCache *photo_cache,
GSList *contact_list = NULL;
GError *local_error = NULL;
- /* Skip disabled sources. */
- if (!e_source_get_enabled (source))
- continue;
-
client = e_client_cache_get_client_sync (
- client_cache, source,
- E_SOURCE_EXTENSION_ADDRESS_BOOK,
+ client_cache,
+ source, extension_name,
cancellable, &local_error);
if (local_error != NULL) {
@@ -436,6 +407,7 @@ photo_cache_find_contacts (EPhotoCache *photo_cache,
g_list_free_full (list, (GDestroyNotify) g_object_unref);
g_object_unref (client_cache);
+ g_object_unref (registry);
g_free (book_query_string);
@@ -497,12 +469,6 @@ photo_cache_set_property (GObject *object,
E_PHOTO_CACHE (object),
g_value_get_object (value));
return;
-
- case PROP_LOCAL_ONLY:
- e_photo_cache_set_local_only (
- E_PHOTO_CACHE (object),
- g_value_get_boolean (value));
- return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -521,13 +487,6 @@ photo_cache_get_property (GObject *object,
e_photo_cache_ref_client_cache (
E_PHOTO_CACHE (object)));
return;
-
- case PROP_LOCAL_ONLY:
- g_value_set_boolean (
- value,
- e_photo_cache_get_local_only (
- E_PHOTO_CACHE (object)));
- return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -600,23 +559,6 @@ e_photo_cache_class_init (EPhotoCacheClass *class)
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS));
-
- /**
- * EPhotoCache:local-only:
- *
- * Whether to restrict searches to the built-in address book.
- **/
- g_object_class_install_property (
- object_class,
- PROP_LOCAL_ONLY,
- g_param_spec_boolean (
- "local-only",
- "Local Only",
- "Whether to restruct searches "
- "to the built-in address book",
- FALSE,
- G_PARAM_READWRITE |
- G_PARAM_STATIC_STRINGS));
}
static void
@@ -674,49 +616,6 @@ e_photo_cache_ref_client_cache (EPhotoCache *photo_cache)
}
/**
- * e_photo_cache_get_local_only:
- * @photo_cache: an #EPhotoCache
- *
- * Returns whether to limit photo searches to the built-in ("local")
- * address book returned by e_source_registry_ref_builtin_address_book().
- *
- * If this property is %FALSE then all enabled address books are searched.
- *
- * Returns: whether to search only the built-in address book
- **/
-gboolean
-e_photo_cache_get_local_only (EPhotoCache *photo_cache)
-{
- g_return_val_if_fail (E_IS_PHOTO_CACHE (photo_cache), FALSE);
-
- return photo_cache->priv->local_only;
-}
-
-/**
- * e_photo_cache_set_local_only:
- * @photo_cache: an #EPhotoCache
- * @local_only: whether to search only the built-in address book
- *
- * Sets whether to limit photo searches to the built-in ("local")
- * address book returned by e_source_registry_ref_builtin_address_book().
- *
- * If this property is %FALSE then all enabled address books are searched.
- **/
-void
-e_photo_cache_set_local_only (EPhotoCache *photo_cache,
- gboolean local_only)
-{
- g_return_if_fail (E_IS_PHOTO_CACHE (photo_cache));
-
- photo_cache->priv->local_only = local_only;
-
- /* Reset the cache. */
- photo_ht_remove_all (photo_cache);
-
- g_object_notify (G_OBJECT (photo_cache), "local-only");
-}
-
-/**
* e_photo_cache_get_photo_sync:
* @photo_cache: an #EPhotoCache
* @email_address: an email address
@@ -724,8 +623,8 @@ e_photo_cache_set_local_only (EPhotoCache *photo_cache,
* @out_stream: return location for a #GInputStream, or %NULL
* @error: return location for a #GError, or %NULL
*
- * Searches enabled address books (subject to the #EPhotoCache:local-only
- * preference) for a contact photo or logo associated with @email_address.
+ * Searches enabled address books for a contact photo or logo associated
+ * with @email_address.
*
* If a match is found, a #GInputStream from which to read image data is
* returned through the @out_stream return location. If no match is found,
@@ -840,8 +739,7 @@ photo_cache_get_photo_thread (GSimpleAsyncResult *simple,
* @callback: a #GAsyncReadyCallback to call when the request is satisfied
* @user_data: data to pass to the callback function
*
- * Asynchronously searches enabled address books (subject to the
- * #EPhotoCache:local-only preference) for a contact photo or logo
+ * Asynchronously searches enabled address books for a contact photo or logo
* associated with @email_address.
*
* When the operation is finished, @callback will be called. You can then
diff --git a/e-util/e-photo-cache.h b/e-util/e-photo-cache.h
index 8114e93385..af44e2e3f1 100644
--- a/e-util/e-photo-cache.h
+++ b/e-util/e-photo-cache.h
@@ -69,9 +69,6 @@ struct _EPhotoCacheClass {
GType e_photo_cache_get_type (void) G_GNUC_CONST;
EPhotoCache * e_photo_cache_new (EClientCache *client_cache);
EClientCache * e_photo_cache_ref_client_cache (EPhotoCache *photo_cache);
-gboolean e_photo_cache_get_local_only (EPhotoCache *photo_cache);
-void e_photo_cache_set_local_only (EPhotoCache *photo_cache,
- gboolean local_only);
gboolean e_photo_cache_get_photo_sync (EPhotoCache *photo_cache,
const gchar *email_address,
GCancellable *cancellable,
diff --git a/mail/mail-config.ui b/mail/mail-config.ui
index 2b32acb683..a614467150 100644
--- a/mail/mail-config.ui
+++ b/mail/mail-config.ui
@@ -2405,22 +2405,6 @@
<property name="position">0</property>
</packing>
</child>
- <child>
- <object class="GtkCheckButton" id="photo_local">
- <property name="label" translatable="yes">S_earch for sender photograph only in local address books</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="use_action_appearance">False</property>
- <property name="use_underline">True</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/mail/em-mailer-prefs.c b/modules/mail/em-mailer-prefs.c
index 52d6f7f56e..fc3e3c4e66 100644
--- a/modules/mail/em-mailer-prefs.c
+++ b/modules/mail/em-mailer-prefs.c
@@ -1069,16 +1069,6 @@ em_mailer_prefs_construct (EMMailerPrefs *prefs,
widget, "active",
G_SETTINGS_BIND_DEFAULT);
- widget = e_builder_get_widget (prefs->builder, "photo_local");
- g_settings_bind (
- settings, "photo-local",
- 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);
diff --git a/modules/settings/Makefile.am b/modules/settings/Makefile.am
index 61cf5688d4..e8e66b2a58 100644
--- a/modules/settings/Makefile.am
+++ b/modules/settings/Makefile.am
@@ -37,8 +37,6 @@ module_settings_la_SOURCES = \
e-settings-meeting-time-selector.h \
e-settings-name-selector-entry.c \
e-settings-name-selector-entry.h \
- e-settings-photo-cache.c \
- e-settings-photo-cache.h \
e-settings-spell-entry.c \
e-settings-spell-entry.h \
e-settings-web-view.c \
diff --git a/modules/settings/e-settings-photo-cache.c b/modules/settings/e-settings-photo-cache.c
deleted file mode 100644
index fe83148290..0000000000
--- a/modules/settings/e-settings-photo-cache.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * e-settings-photo-cache.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 <http://www.gnu.org/licenses/>
- *
- */
-
-#include "e-settings-photo-cache.h"
-
-#define E_SETTINGS_PHOTO_CACHE_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE \
- ((obj), E_TYPE_SETTINGS_PHOTO_CACHE, ESettingsPhotoCachePrivate))
-
-struct _ESettingsPhotoCachePrivate {
- gint placeholder;
-};
-
-G_DEFINE_DYNAMIC_TYPE (
- ESettingsPhotoCache,
- e_settings_photo_cache,
- E_TYPE_EXTENSION)
-
-static void
-settings_photo_cache_constructed (GObject *object)
-{
- EExtension *extension;
- EExtensible *extensible;
- GSettings *settings;
-
- extension = E_EXTENSION (object);
- extensible = e_extension_get_extensible (extension);
-
- settings = g_settings_new ("org.gnome.evolution.mail");
-
- g_settings_bind (
- settings, "photo-local",
- extensible, "local-only",
- G_SETTINGS_BIND_GET);
-
- g_object_unref (settings);
-
- /* Chain up to parent's constructed() method. */
- G_OBJECT_CLASS (e_settings_photo_cache_parent_class)->
- constructed (object);
-}
-
-static void
-e_settings_photo_cache_class_init (ESettingsPhotoCacheClass *class)
-{
- GObjectClass *object_class;
- EExtensionClass *extension_class;
-
- g_type_class_add_private (class, sizeof (ESettingsPhotoCachePrivate));
-
- object_class = G_OBJECT_CLASS (class);
- object_class->constructed = settings_photo_cache_constructed;
-
- extension_class = E_EXTENSION_CLASS (class);
- extension_class->extensible_type = E_TYPE_PHOTO_CACHE;
-}
-
-static void
-e_settings_photo_cache_class_finalize (ESettingsPhotoCacheClass *class)
-{
-}
-
-static void
-e_settings_photo_cache_init (ESettingsPhotoCache *extension)
-{
- extension->priv = E_SETTINGS_PHOTO_CACHE_GET_PRIVATE (extension);
-}
-
-void
-e_settings_photo_cache_type_register (GTypeModule *type_module)
-{
- /* XXX G_DEFINE_DYNAMIC_TYPE declares a static type registration
- * function, so we have to wrap it with a public function in
- * order to register types from a separate compilation unit. */
- e_settings_photo_cache_register_type (type_module);
-}
-
diff --git a/modules/settings/e-settings-photo-cache.h b/modules/settings/e-settings-photo-cache.h
deleted file mode 100644
index a01de9474c..0000000000
--- a/modules/settings/e-settings-photo-cache.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * e-settings-photo-cache.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 <http://www.gnu.org/licenses/>
- *
- */
-
-#ifndef E_SETTINGS_PHOTO_CACHE_H
-#define E_SETTINGS_PHOTO_CACHE_H
-
-#include <e-util/e-util.h>
-
-/* Standard GObject macros */
-#define E_TYPE_SETTINGS_PHOTO_CACHE \
- (e_settings_photo_cache_get_type ())
-#define E_SETTINGS_PHOTO_CACHE(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST \
- ((obj), E_TYPE_SETTINGS_PHOTO_CACHE, ESettingsPhotoCache))
-#define E_SETTINGS_PHOTO_CACHE_CLASS(cls) \
- (G_TYPE_CHECK_CLASS_CAST \
- ((cls), E_TYPE_SETTINGS_PHOTO_CACHE, ESettingsPhotoCacheClass))
-#define E_IS_SETTINGS_PHOTO_CACHE(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE \
- ((obj), E_TYPE_SETTINGS_PHOTO_CACHE))
-#define E_IS_SETTINGS_PHOTO_CACHE_CLASS(cls) \
- (G_TYPE_CHECK_CLASS_TYPE \
- ((cls), E_TYPE_SETTINGS_PHOTO_CACHE))
-#define E_SETTINGS_PHOTO_CACHE_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS \
- ((obj), E_TYPE_SETTINGS_PHOTO_CACHE, ESettingsPhotoCacheClass))
-
-G_BEGIN_DECLS
-
-typedef struct _ESettingsPhotoCache ESettingsPhotoCache;
-typedef struct _ESettingsPhotoCacheClass ESettingsPhotoCacheClass;
-typedef struct _ESettingsPhotoCachePrivate ESettingsPhotoCachePrivate;
-
-struct _ESettingsPhotoCache {
- EExtension parent;
- ESettingsPhotoCachePrivate *priv;
-};
-
-struct _ESettingsPhotoCacheClass {
- EExtensionClass parent_class;
-};
-
-GType e_settings_photo_cache_get_type (void) G_GNUC_CONST;
-void e_settings_photo_cache_type_register
- (GTypeModule *type_module);
-
-G_END_DECLS
-
-#endif /* E_SETTINGS_PHOTO_CACHE_H */
-
diff --git a/modules/settings/evolution-module-settings.c b/modules/settings/evolution-module-settings.c
index 94caf05a6e..52d55f454b 100644
--- a/modules/settings/evolution-module-settings.c
+++ b/modules/settings/evolution-module-settings.c
@@ -28,7 +28,6 @@
#include "e-settings-meeting-store.h"
#include "e-settings-meeting-time-selector.h"
#include "e-settings-name-selector-entry.h"
-#include "e-settings-photo-cache.h"
#include "e-settings-spell-entry.h"
#include "e-settings-web-view.h"
#include "e-settings-web-view-gtkhtml.h"
@@ -53,7 +52,6 @@ e_module_load (GTypeModule *type_module)
e_settings_meeting_store_type_register (type_module);
e_settings_meeting_time_selector_type_register (type_module);
e_settings_name_selector_entry_type_register (type_module);
- e_settings_photo_cache_type_register (type_module);
e_settings_spell_entry_type_register (type_module);
e_settings_web_view_type_register (type_module);
e_settings_web_view_gtkhtml_type_register (type_module);