diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-04-20 23:22:58 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-04-21 01:15:27 +0800 |
commit | 60386356e322c0ebe3a0101a616752c0e557491e (patch) | |
tree | a115b4f28bddd84ec037584c8f2902e1884c4994 | |
parent | 5e1934425ddedb3848a66f16100e4ee1ea12aeb1 (diff) | |
download | gsoc2013-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.convert | 1 | ||||
-rw-r--r-- | data/org.gnome.evolution.mail.gschema.xml.in | 5 | ||||
-rw-r--r-- | e-util/e-photo-cache.c | 126 | ||||
-rw-r--r-- | e-util/e-photo-cache.h | 3 | ||||
-rw-r--r-- | mail/mail-config.ui | 16 | ||||
-rw-r--r-- | modules/mail/em-mailer-prefs.c | 10 | ||||
-rw-r--r-- | modules/settings/Makefile.am | 2 | ||||
-rw-r--r-- | modules/settings/e-settings-photo-cache.c | 92 | ||||
-rw-r--r-- | modules/settings/e-settings-photo-cache.h | 65 | ||||
-rw-r--r-- | modules/settings/evolution-module-settings.c | 2 |
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); |