Matthew Barnes [Sat, 12 Jan 2013 19:32:33 +0000 (14:32 -0500)]
Deprecate e_client_util_free_string_slist().
Use g_slist_free_full() instead.
Matthew Barnes [Sat, 12 Jan 2013 19:31:06 +0000 (14:31 -0500)]
Deprecate e_client_util_copy_object_slist().
Use e_util_copy_object_slist() instead.
Matthew Barnes [Sat, 12 Jan 2013 19:29:46 +0000 (14:29 -0500)]
Deprecate e_client_util_copy_string_slist().
Use e_util_copy_string_slist() instead.
Matthew Barnes [Sat, 12 Jan 2013 19:28:33 +0000 (14:28 -0500)]
Deprecate e_client_util_strv_to_slist().
Use e_util_strv_to_slist() instead.
Matthew Barnes [Sat, 12 Jan 2013 19:27:08 +0000 (14:27 -0500)]
Deprecate e_client_util_slist_to_strv().
Use e_util_slist_to_strv() instead.
Matthew Barnes [Sat, 12 Jan 2013 19:23:48 +0000 (14:23 -0500)]
Simplify e_util_copy_object_slist().
Matthew Barnes [Sat, 12 Jan 2013 19:21:49 +0000 (14:21 -0500)]
Simplify e_util_copy_string_slist().
Matthew Barnes [Sat, 12 Jan 2013 17:11:28 +0000 (12:11 -0500)]
Update API documentation.
Matthew Barnes [Sat, 12 Jan 2013 17:08:23 +0000 (12:08 -0500)]
Restore ESourceWebdav:ignore-invalid-cert property.
Deprecate the property, don't break backward-compatibility.
Matthew Barnes [Sat, 12 Jan 2013 16:47:16 +0000 (11:47 -0500)]
Avoid GSList in new public APIs.
Matthew Barnes [Sat, 12 Jan 2013 16:34:50 +0000 (11:34 -0500)]
Move ETrustPromptResponse to e-source-enums.h.
Matthew Barnes [Sat, 12 Jan 2013 15:54:47 +0000 (10:54 -0500)]
Coding style and whitespace cleanups.
Nilamdyuti Goswami [Fri, 11 Jan 2013 15:44:25 +0000 (21:14 +0530)]
Assamese translation updated
Milan Crha [Fri, 11 Jan 2013 13:27:38 +0000 (14:27 +0100)]
Bug #691477 - exists_vcard is not supported when parsing a query from string
Matthew Barnes [Fri, 11 Jan 2013 12:17:19 +0000 (07:17 -0500)]
ECalBackend: Emit "timezone-added" from outside the cache lock.
The "timezone-added" signal triggers e_timezone_cache_list_timezones()
in ECalBackendStore, which also tries to acquire the cache lock.
Similarly in ECalClient, though less chance of deadlock there.
Milan Crha [Fri, 11 Jan 2013 11:27:47 +0000 (12:27 +0100)]
Bug #690151 - Crash in e_book_backend_file_bump_revision()
Milan Crha [Thu, 10 Jan 2013 19:27:12 +0000 (20:27 +0100)]
CamelMimeFilterPgp: Ignore right side white spaces
Matthew Barnes [Thu, 10 Jan 2013 12:03:11 +0000 (07:03 -0500)]
Bug 691466 - Cache reaper restores old IMAP cache directories
Alter the name of the cache directory when moving it to trash.
Milan Crha [Wed, 9 Jan 2013 22:03:37 +0000 (23:03 +0100)]
Bug #690177 - Use trust-prompt for certificate verification in WebDAV backends
Matthew Barnes [Wed, 9 Jan 2013 19:12:53 +0000 (14:12 -0500)]
ECalBackendStore: Better ensure final save works.
Collect what we need from ETimezoneCache when we schedule the save
instead of relying on ETimezoneCache when we actually do the save.
Matthew Barnes [Wed, 9 Jan 2013 19:24:30 +0000 (14:24 -0500)]
Revert "Add e_cal_backend_store_save()."
This reverts two commits:
a68f14d5573b72ada7e04d090af47f879455e0bc
ad12a30f349d5ca1a44fcdd607d272a8149ab9cf
Thought of a better way to solve the final save problem that doesn't
involve adding new API or modifying backends.
Matthew Barnes [Wed, 9 Jan 2013 17:36:12 +0000 (12:36 -0500)]
weather: Fix build break.
It helps to actually build the weather backend when changing it.
Forgot I had configured E-D-S with --disable-weather.
Matthew Barnes [Wed, 9 Jan 2013 17:02:00 +0000 (12:02 -0500)]
Save changes before finalizing ECalBackendStore.
Matthew Barnes [Wed, 9 Jan 2013 16:53:32 +0000 (11:53 -0500)]
Add e_cal_backend_store_save().
This function cancels the automatic save delay and saves changes to
disk immediately. If no changes have been made since the last save,
the function does nothing.
Milan Crha [Wed, 9 Jan 2013 14:41:10 +0000 (15:41 +0100)]
[http calendar] Ref backend inside source_changed_cb()
In certain situation, the backend can be freed while the callback
is still in action, then the factory can crash inside
cal_backend_http_ensure_uri() or such.
Alban Browaeys [Tue, 8 Jan 2013 15:57:39 +0000 (10:57 -0500)]
Bug 690158 - libedataserver: Vala binding updates
Matthew Barnes [Tue, 8 Jan 2013 15:00:30 +0000 (10:00 -0500)]
CamelObject: Suppress state file warnings for old IMAP accounts.
CamelImapFolder had a persistent "check-folder" property whose value was
recorded in Camel's binary state files under tag 0x2500. This property
is not present in CamelIMAPXFolder, but we may still be reading the tag
for accounts that were migrated from IMAP to IMAPX. Check for that tag
value while reading state files and suppress the runtime warning.
Christian Kirbach [Tue, 8 Jan 2013 13:47:27 +0000 (14:47 +0100)]
Updated German translation
Matthew Barnes [Sat, 5 Jan 2013 06:02:37 +0000 (01:02 -0500)]
weather: Fix build break.
Matthew Barnes [Fri, 4 Jan 2013 19:52:07 +0000 (14:52 -0500)]
ECalBackendFile: Override the ETimezoneCache methods.
This backend stores time zone data directly in an icalcomponent,
so it needs to override the ETimezoneCacheInterface implementation
provided by ECalBackend, which uses a hash table.
Matthew Barnes [Fri, 4 Jan 2013 18:03:43 +0000 (13:03 -0500)]
Remove e_cal_backend_store_put_timezone().
Use the ETimezoneCache API instead:
cache = e_cal_backend_store_ref_timezone_cache (store);
e_timezone_cache_add_timezone (cache, zone);
g_object_unref (cache);
This is another API break. 3rd party backends will have to be adjusted.
Matthew Barnes [Fri, 4 Jan 2013 17:50:30 +0000 (12:50 -0500)]
Remove e_cal_backend_store_get_timezone().
Use the ETimezoneCache API instead:
cache = e_cal_backend_store_ref_timezone_cache (store);
zone = e_timezone_cache_get_timezone (cache, tzid);
... do what you gotta do with zone ...
g_object_unref (cache);
This is another API break. 3rd party backends will have to be adjusted.
Matthew Barnes [Thu, 3 Jan 2013 16:49:44 +0000 (11:49 -0500)]
ECalBackend: Remove internal_get_timezone() method.
No longer needed since ECalBackend implements ETimezoneCache.
Use e_timezone_cache_get_timezone() instead.
Removed functions:
e_cal_backend_internal_get_timezone()
This is another API break. 3rd party backends will have to be adjusted.
Matthew Barnes [Thu, 3 Jan 2013 16:35:15 +0000 (11:35 -0500)]
ECalBackendSExp: Take an ETimezoneCache instead of ECalBackend.
Here's the real reason for the ETimezoneCache interface.
By changing ECalBackend parameters to ETimezoneCache (an interface which
ECalBackend implements), we abstract away the requirement for a calendar
backend when performing S-expression evaluation.
Since ECalClient also implements the ETimezoneCache interface, this opens
the possibility of allowing client-side S-expression evaluation. (Would
first require moving ECalBackendSExp to libecal, plus of course a rename
to omit the "Backend" part.)
Affected functions:
e_cal_backend_sexp_match_object()
e_cal_backend_sexp_match_comp()
This is another API break. 3rd party backends will have to be adjusted.
Matthew Barnes [Thu, 3 Jan 2013 15:26:51 +0000 (10:26 -0500)]
ECalBackendStore: Add a "timezone-cache" construct-only property.
Instead of keeping its own an internal hash table of icaltimezones, have
ECalBackendStore take an ETimezoneCache in e_cal_backend_store_new().
Usually the ETimezoneCache will be an ECalBackend, which implements the
ETimezoneCache interface and owns the ECalBackendStore. For that reason,
the store only keeps a weak reference on its ETimezoneCache to avoid a
reference cycle.
New functions:
e_cal_backend_store_ref_timezone_cache()
This is an API break. 3rd party backends will have to be adjusted.
Matthew Barnes [Thu, 3 Jan 2013 15:05:10 +0000 (10:05 -0500)]
e_cal_backend_store_set_default_timezone(): Remove const qualifier.
Same justification as previous commit.
Matthew Barnes [Thu, 3 Jan 2013 14:52:07 +0000 (09:52 -0500)]
e_cal_backend_store_put_timezone(): Remove const qualifier.
Semantics have not changed, but the const qualifier is unnecessary.
None of the icaltimezone API uses const, not even the "get" functions.
So to declare an icaltimezone parameter as const creates type casting
awkwardness on our end.
Matthew Barnes [Thu, 3 Jan 2013 14:13:21 +0000 (09:13 -0500)]
Remove unused e_cal_backend_cache_remove_timezone().
Matthew Barnes [Thu, 3 Jan 2013 14:11:17 +0000 (09:11 -0500)]
Remove unused e_cal_backend_store_remove_timezone().
Matthew Barnes [Thu, 3 Jan 2013 14:22:53 +0000 (09:22 -0500)]
Remove unused e_cal_backend_store_remove().
Matthew Barnes [Thu, 3 Jan 2013 13:37:26 +0000 (08:37 -0500)]
ECalBackend: Implement the ETimezoneCache interface.
Matthew Barnes [Wed, 2 Jan 2013 19:28:14 +0000 (14:28 -0500)]
ECalClient: Implement the ETimezoneCache interface.
Matthew Barnes [Wed, 2 Jan 2013 19:26:14 +0000 (14:26 -0500)]
Add ETimezoneCache interface.
Several classes (both client-side and server-side) cache icaltimezone
instances internally, indexed by their TZID strings. Classes which do
this should implement ETimezoneCacheInterface to provide a consistent
API for accessing time zone data.
Matthew Barnes [Wed, 2 Jan 2013 16:18:44 +0000 (11:18 -0500)]
Merge ECalBackendFileStore into ECalBackendStore.
ECalBackendStore is an abstract base class [1], and ECalBackendFileStore
is a subclass that stores calendar components in an iCalendar file. But
ECalBackendFileStore is the only subclass in existence, so the abstract
base class is unnecessary.
Have ECalBackendStore implement ECalBackendFileStore by default and drop
ECalBackendFileStore as a separate class. The operations are written as
virtual class methods, so we can still override the class methods from a
new subclass if a need should arise.
New functions:
e_cal_backend_store_new()
Removed functions:
e_cal_backend_file_store_new()
[1] Or at least is supposed to be abstract. Someone forgot to define
the GType with G_DEFINE_ABSTRACT_TYPE.
Matthew Barnes [Thu, 3 Jan 2013 18:16:55 +0000 (13:16 -0500)]
Bump libedata-cal shared object name.
I'll be changing parts of the API in subsequent commits.
Matthew Barnes [Fri, 4 Jan 2013 16:28:40 +0000 (11:28 -0500)]
Remove unused LIBSOUP_REQUIRED definition.
Matthew Barnes [Fri, 4 Jan 2013 16:22:30 +0000 (11:22 -0500)]
Use version-based libsoup warnings.
Apparently libsoup IS already using versioned deprecations. Excellent!
Use SOUP_VERSION_MAX_ALLOWED to warn if we accidentally use symbols that
were introduced in libsoup versions subsequent to our minimum requirement.
Use SOUP_VERSION_MIN_REQUIRED to suppress libsoup deprecation warnings by
version so we can clean them up incrementally.
Hashem Nasarat [Wed, 2 Jan 2013 20:54:11 +0000 (15:54 -0500)]
Bug 691033 - Avoid using LIBSOUP_DISABLE_DEPRECATED
Prevent E-D-S builds from suddenly breaking because of new deprecations
in libsoup. Case in point: soup_session_sync_new().
If libsoup starts using versioned deprecations like glib and gtk+ are
already doing, then we can disable libsoup symbols that were deprecated
in versions older than our minimum requirement. That would allow us to
clean up deprecations gradually rather than dealing with bugs like this.
Nilamdyuti Goswami [Wed, 2 Jan 2013 11:51:05 +0000 (17:21 +0530)]
Assamese translation updated
Piotr Drąg [Mon, 31 Dec 2012 19:53:54 +0000 (20:53 +0100)]
Updated POTFILES.in
Matthew Barnes [Mon, 31 Dec 2012 03:12:19 +0000 (22:12 -0500)]
google: Add EGDataOAuth2Authorizer.
This will eventually replace EGDataGoaAuthorizer once we require
GNOME Online Accounts 3.8. It obtains an OAuth 2.0 access token
using e_source_get_oauth2_access_token_sync() and avoid a direct
dependency on GNOME Online Accounts (or similar frameworks).
E-D-S 3.8 will still support older versions of GNOME Online Accounts,
which use OAuth 1.0a for Google authentication. So the earliest that
EGDataGoaAuthorizer will die is E-D-S 3.9.1.
Matthew Barnes [Sat, 29 Dec 2012 17:42:24 +0000 (12:42 -0500)]
google-backend: Populate [Authentication] group for contacts.
Set the Host to "www.google.com" and Method to either "OAuth2" or
"ClientLogin", depending on whether EOAuth2Support is available.
A temporary corner case occurs when using an older GNOME Online Accounts
version, which uses OAuth 1.0a instead of 2.0 for Google authentication.
In that case, the Method will say "ClientLogin" but the Google address
book backend will ignore it and use its EGDataGoaAuthorizer.
Matthew Barnes [Sat, 29 Dec 2012 00:45:04 +0000 (19:45 -0500)]
gnome-online-accounts: Implement EOAuth2Support interface.
Matthew Barnes [Sat, 29 Dec 2012 14:42:08 +0000 (09:42 -0500)]
collection_backend_child_added: Inherit OAuth 2.0 support.
Collection children will inherit the collection source's EOAuth2Support
object if set. That way OAuth 2.0 availability is consistent across the
entire collection, even if it's not USED by all sources in the collection.
Matthew Barnes [Sat, 29 Dec 2012 14:01:03 +0000 (09:01 -0500)]
EServerSideSource: Add "oauth2-support" property.
This is the object providing OAuth 2.0 support by implementing the
EOAuth2Support interface. Setting this property to a non-NULL value
automatically exports the OAuth2Support D-Bus interface.
New functions:
e_server_side_source_ref_oauth2_support()
e_server_side_source_set_oauth2_support()
Matthew Barnes [Fri, 28 Dec 2012 23:21:30 +0000 (18:21 -0500)]
libebackend: Add EOAuth2Support interface.
Standard server-side interface to be implemented by E-D-S modules
providing OAuth 2.0 support for ESources.
Matthew Barnes [Fri, 28 Dec 2012 16:56:08 +0000 (11:56 -0500)]
ESource: Add get_oauth2_access_token_sync() class method.
Obtains an access token and its expiry in seconds for data sources that
support OAuth 2.0.
This also adds corresponding asynchronous class methods.
New functions:
e_source_get_oauth2_access_token_sync()
e_source_get_oauth2_access_token()
e_source_get_oauth2_access_token_finish()
Matthew Barnes [Fri, 28 Dec 2012 13:37:39 +0000 (08:37 -0500)]
Add OAuth2Support D-Bus interface.
Backends will be able to obtain OAuth 2.0 access tokens through this
interface instead of talking directly to an "online accounts" service.
Matthew Barnes [Mon, 31 Dec 2012 14:02:00 +0000 (09:02 -0500)]
Add e_source_registry_server_find_extension().
Server-side equivalent of e_source_registry_find_extension().
Use it in e_source_registry_server_ref_backend().
Matthew Barnes [Mon, 31 Dec 2012 13:50:30 +0000 (08:50 -0500)]
e-source-registry.c: Minor code reordering.
Daniel Mustieles [Mon, 31 Dec 2012 11:17:57 +0000 (12:17 +0100)]
Updated Spanish translation
Rafael Ferreira [Thu, 27 Dec 2012 01:38:37 +0000 (23:38 -0200)]
Updated Brazilian Portuguese Translation based on branch gnome-3-6
Matthew Barnes [Fri, 28 Dec 2012 14:01:49 +0000 (09:01 -0500)]
Fix typo in libedataserver API docs.
Matthew Barnes [Thu, 27 Dec 2012 15:14:51 +0000 (10:14 -0500)]
Further API doc cleanups.
Matthew Barnes [Thu, 27 Dec 2012 14:52:54 +0000 (09:52 -0500)]
private: Fix cross-references to D-Bus interfaces in API docs.
Matthew Barnes [Thu, 27 Dec 2012 14:09:32 +0000 (09:09 -0500)]
private: Add generated DocBook files to BUILT_SOURCES.
Matthew Barnes [Thu, 27 Dec 2012 13:19:33 +0000 (08:19 -0500)]
private: Reduce the number of sections in API docs.
Combine the interface, proxy, and skeleton APIs for each D-Bus
interface into one Gtk-Doc section. GNOME Online Accounts does this
and it's cleaner and easier to navigate from the Table of Contents.
Nilamdyuti Goswami [Thu, 27 Dec 2012 15:30:32 +0000 (21:00 +0530)]
Assamese translation updated
Fran Diéguez [Mon, 24 Dec 2012 23:01:07 +0000 (00:01 +0100)]
Update Galician translations
Fran Diéguez [Mon, 24 Dec 2012 22:59:15 +0000 (23:59 +0100)]
Updated Galician translations
Dimitris Spingos [Mon, 24 Dec 2012 15:01:07 +0000 (17:01 +0200)]
Updated Greek translation
Matthew Barnes [Mon, 24 Dec 2012 13:48:52 +0000 (08:48 -0500)]
Bug 665371 - Decommission legacy IMAP backend
"IMAPX" is now our one and only IMAP backend for Camel. \o/
Matthew Barnes [Mon, 24 Dec 2012 13:43:53 +0000 (08:43 -0500)]
Add automatic IMAP to IMAPX account migration.
Uses the new "tweak-key-file" ESourceRegistryServer signal.
Matthew Barnes [Mon, 24 Dec 2012 05:19:20 +0000 (00:19 -0500)]
Fix some file header comments.
Matthew Barnes [Mon, 24 Dec 2012 04:37:25 +0000 (23:37 -0500)]
ESourceRegistryServer: Add a "tweak-key-file" signal.
This signal is emitted from e_source_registry_server_load_file() just
prior to instantiating an EServerSideSource. Signal handlers can tweak
the GKeyFile content as necessary and return TRUE to write the modified
content back to disk.
For the purposes of tweaking, it's easier to deal with a plain GKeyFile
than an ESource instance. An ESource, for example, does not allow key
file groups to be removed.
The return value is cumulative. If any signal handler returns TRUE,
the GKeyFile content is written back to disk.
Unfortunately this breaks the libebackend ABI because I forgot to add a
pool of reserved pointers to the ESourceRegistryServerClass. Do so now,
since we have the opportunity.
Matthew Barnes [Mon, 24 Dec 2012 12:37:42 +0000 (07:37 -0500)]
IMAPX: Avoid duplicating messages in real Junk or Trash.
This is more a problem with Junk, but fixing both to keep the logic
consistent. When synchronizing a real Junk folder, we were copying
all messages marked as "junk" from Junk to Junk -- duplicating them
each time. After running for a couple days I caught my Junk folder
with thousands of duplicate messages.
Matthew Barnes [Sat, 22 Dec 2012 14:22:40 +0000 (09:22 -0500)]
IMAPX: Ask server to handle "body-contains" searches.
This isn't as sophisticated/convoluted as the version in the older IMAP
backend, but it still beats downloading the entire message as we've been
doing. There's no caching of past search results. I'm not convinced the
performance gain is worth the extra complexity. If I'm wrong or I change
my mind, search result caching can always be added later.
Matthew Barnes [Sun, 23 Dec 2012 21:34:38 +0000 (16:34 -0500)]
Revert "Fix build"
This reverts commit
6a243777a56279325847323342492769ce942cf3.
This is wrong. The bus name is not the same as the object path.
Dan Vrátil [Sun, 23 Dec 2012 21:03:30 +0000 (22:03 +0100)]
Fix build
Matthew Barnes [Sun, 23 Dec 2012 15:54:04 +0000 (10:54 -0500)]
CamelIMAPXJob: Protect the CamelFolder.
Move the CamelFolder pointer to CamelIMAPXJob's private section to
ensure thread-safety and consistent reference counting.
Had a crash just now in camel_imapx_server_get_job_queue_info() due to
a dangling CamelFolder pointer. Further investigation found that some
methods assign "job->folder" a new reference (but in some cases never
unref it!) and other methods just do a straight assignment.
Technically this is an API/ABI break, but not bumping Camel's soname
because it does not affect evolution-kolab, the only known 3rd party
consumer of IMAPX APIs.
Matthew Barnes [Sun, 23 Dec 2012 15:08:40 +0000 (10:08 -0500)]
CamelFolder: Make string properties thread-safe.
Use an internal mutex to guard the strings, and add thread-safe accessor
functions:
camel_folder_dup_full_name()
camel_folder_dup_display_name()
camel_folder_dup_description()
Kjartan Maraas [Sun, 23 Dec 2012 11:19:46 +0000 (12:19 +0100)]
Updated Norwegian bokmål translation
Kjartan Maraas [Wed, 19 Dec 2012 13:26:06 +0000 (14:26 +0100)]
Updated Norwegian bokmål translation
Matthew Barnes [Sun, 23 Dec 2012 05:06:05 +0000 (00:06 -0500)]
Update the MAINTAINERS file.
Matthew Barnes [Sat, 22 Dec 2012 19:12:02 +0000 (14:12 -0500)]
Bug 689124 - Increase Camel's TCP read/write timeout
This is a partial revert of the hack for bug 551788, which decreased the
TCP read/write timeout from 4 minutes to 1 minute.
This causes IMAP IDLE connections to timeout prematurely if the server
sends untagged keep-alive messages at an interval greater than 1 minute.
Dovecot's "imap_idle_notify_interval" setting defaults to 2 minutes.
Reset the TCP read/write timeout back to 4 minutes.
Matthew Barnes [Sat, 22 Dec 2012 16:50:53 +0000 (11:50 -0500)]
Gah, screwed up the CamelFolderSearchFlags values.
Matthew Barnes [Sat, 22 Dec 2012 16:36:44 +0000 (11:36 -0500)]
Deprecate camel_folder_search_construct().
Register callbacks with CamelSExp from the constructed() method.
Matthew Barnes [Sat, 22 Dec 2012 14:08:50 +0000 (09:08 -0500)]
camel-search-private cleanups.
Matthew Barnes [Wed, 19 Dec 2012 18:34:27 +0000 (13:34 -0500)]
imapx_get_filename() should be static.
No idea why this function was made public. It's just a class method
implementation and can be invoked through camel_folder_get_filename().
Not going to bump the libcamel soname over this. Nothing external is
using it.
Matthew Barnes [Wed, 19 Dec 2012 18:27:11 +0000 (13:27 -0500)]
CamelFolderSearch cleanups.
Matthew Barnes [Wed, 19 Dec 2012 17:47:24 +0000 (12:47 -0500)]
CamelIMAPXFolder: Fix compiler warnings.
Matthew Barnes [Wed, 19 Dec 2012 16:14:51 +0000 (11:14 -0500)]
IMAPX: Don't recheck flags before moving to real Junk/Trash.
Out of paranoia, I made imapx_folder_claim_move_to_real_trash_uids()
recheck that the queued message UIDs still had a DELETED flag before
moving them to a real Trash folder. That turned out to be breaking
things because we _remove_ the DELETED flag when synchronizing, so
it's not going to still be set when we're ready to move messages.
Remove the uncertainty and rename public functions to reflect this:
- camel_imapx_folder_maybe_move_to_real_junk()
+ camel_imapx_folder_add_move_to_real_junk()
- camel_imapx_folder_maybe_move_to_real_trash()
+ camel_imapx_folder_add_move_to_real_trash()
Matthew Barnes [Wed, 19 Dec 2012 15:27:03 +0000 (10:27 -0500)]
IMAPX: Fix DELETED flag sync when using real Trash folder.
After copying messages to a real Trash folder and then tagging them for
deletion, we immediately expunge. Now the IMAPX expunge operation first
synchronizes message flags with the server, which is sensible. But when
using a real Trash folder, this extra sync was causing deleted messages
to keep coming back from the grave like zombies.
The problem was when using a real Trash folder, the internal operation
that synchronizes flags first clears any DELETED flags. Normally that's
what we want, except when we're about to expunge since expunging depends
on those DELETED flags. So make an exception for this case.
Daniel Mustieles [Wed, 19 Dec 2012 12:26:16 +0000 (13:26 +0100)]
Updated Spanish translation
Nilamdyuti Goswami [Wed, 19 Dec 2012 07:33:58 +0000 (13:03 +0530)]
Assamese translation updated
Mathias Hasselmann [Wed, 19 Dec 2012 00:41:59 +0000 (01:41 +0100)]
test-server-utils: Don't rely on command line parsing for "rm -rf"
Let's be nice to people with spaces in their path names.
Matthew Barnes [Mon, 17 Dec 2012 16:14:44 +0000 (11:14 -0500)]
IMAPX: Support non-virtual Junk/Trash folders.
Some webmail clients designate specific IMAP folders as Junk and Trash,
such that when a message is deleted or determined to be spam, a copy of
the message is appended to the designated folder, the original message
is flagged as DELETED and the folder containing the original message is
immediately expunged.
This is significantly more expensive than simply flagging the message as
DELETED or JUNK. But users that access their mail by both Evolution and
webmail frequently complain of seeing what appear to be duplicate Junk
and Trash folders in Evolution [1].
This commit allows IMAPX stores to be configured to mimic these webmail
clients and hide their Junk and Trash virtual folders. IMAPX will mimic
the "copy-and-expunge" webmail client behavior each time it's commanded
to synchronize message flags with the server.
[1] So much so that it earned its own page in the user manual:
http://library.gnome.org/users/evolution/stable/mail-two-trash-folders.html.en
Matthew Barnes [Sun, 16 Dec 2012 16:43:01 +0000 (11:43 -0500)]
libecal: Move EDataCalCallStatus back to libedata-cal.
I'm encountering a build break in Evolution on an older environment.
It goes something like this...
/* In X11/X.h */
#define Success 0
/* In libecal/e-cal-types.h */
typedef enum { Success, ... } EDataCalCallStatus;
After pre-processing, the compiler gets
typedef enum { 0, ... } EDataCalCallStatus;
which of course is a syntax error.
It's our own fault for violating our own namespace. The enum definition
was moved from libedata-cal to libecal fairly recently (by me) to resolve
a circular dependency, but it appears libecal does not really require the
enum values. Move the typedef back to libedata-cal as a quick Band-Aid.
The EDataCalCallStatus enum is redundant anyway and I plan to remove it.
Equivalent error values are provided by EClientError and ECalClientError,
and calendar backends should be using them directly. There's no need for
separate but equal client and server-side error value definitions.
This is technically an API break, but I'm not going to bump the libecal
soname over this. The enum definition is clearly intended for backends,
and because it was moved to libecal only recently, I'm fairly certain no
client applications are using it.
Matthew Barnes [Tue, 18 Dec 2012 12:42:52 +0000 (07:42 -0500)]
CamelIMAPXFolder cleanups.
Tristan Van Berkom [Mon, 17 Dec 2012 10:29:10 +0000 (19:29 +0900)]
Removing LIBEDATASERVERUI_CURRENT/REVISION/AGE definitions
These definitions in configure.ac are now meaningless since
the removal of libedataserverui (just a cleanup).