platform/upstream/evolution-data-server.git
10 years agoAdd the other Camel services to API documentation.
Matthew Barnes [Sun, 3 Nov 2013 15:28:32 +0000 (10:28 -0500)]
Add the other Camel services to API documentation.

For developer convenience, and to help me stay disciplined about writing
API documentation... even in provider modules.

10 years agoCamelDataCache: Return GIOStream instead of CamelStream.
Matthew Barnes [Sat, 2 Nov 2013 13:10:33 +0000 (09:10 -0400)]
CamelDataCache: Return GIOStream instead of CamelStream.

Another step toward dropping CamelStream.  Instead of wrapping a local
file GIOStream in a CamelStream, return the GIOStream directly and let
callers wrap it if they need to with camel_stream_new().

10 years agoLimit usage of legacy CamelObject class.
Matthew Barnes [Fri, 1 Nov 2013 15:50:17 +0000 (11:50 -0400)]
Limit usage of legacy CamelObject class.

Only CamelFolder and CamelSession utilize what's left in CamelObject,
which is just binary state files to persistently store a flag or two.

All other Camel classes should inherit directly from GObject.  This
requires a libcamel soname bump since the class structure sizes will
decrease by two pointers (no state_read() and state_write() methods).

10 years agoBug 710989 - Replace most uses of strcpy()
Murray Cumming [Fri, 1 Nov 2013 14:32:23 +0000 (10:32 -0400)]
Bug 710989 - Replace most uses of strcpy()

Because strcpy() can overwrite its buffer.  As with the previous
replacement of sprintf(), some of these could probably be replaced by
g_strdup(), but there could be some performance impact.

This also replaces a use of ICU's austrcpy() with austrncpy().

10 years agoUpdated Galician translations
Fran Diéguez [Fri, 1 Nov 2013 12:07:43 +0000 (13:07 +0100)]
Updated Galician translations

10 years agoAdd --disable-examples to DISTCHECK_CONFIGURE_FLAGS.
Matthew Barnes [Fri, 1 Nov 2013 01:09:30 +0000 (21:09 -0400)]
Add --disable-examples to DISTCHECK_CONFIGURE_FLAGS.

10 years agoConvert IMAPX back to a loadable module.
Matthew Barnes [Fri, 1 Nov 2013 01:00:37 +0000 (21:00 -0400)]
Convert IMAPX back to a loadable module.

Since evolution-kolab is no longer active, convert the IMAPX provider
back to a loadable module so that necessary changes can be made without
affecting libcamel's public API.

The IMAPX chapter of Camel's API documentation will remain, however.

10 years agoe-data-server-util.h: Fix a couple typos.
Matthew Barnes [Tue, 29 Oct 2013 19:07:19 +0000 (15:07 -0400)]
e-data-server-util.h: Fix a couple typos.

10 years agoRemove duplicate "named timeout" docs.
Matthew Barnes [Tue, 29 Oct 2013 16:30:04 +0000 (12:30 -0400)]
Remove duplicate "named timeout" docs.

Oopsie.

10 years agoBug 710808 - Name all the timeouts added with g_timeout_add()
Bastien Nocera [Tue, 29 Oct 2013 16:18:32 +0000 (12:18 -0400)]
Bug 710808 - Name all the timeouts added with g_timeout_add()

10 years agoAdd macros/functions to help name timeouts.
Matthew Barnes [Tue, 29 Oct 2013 15:37:47 +0000 (11:37 -0400)]
Add macros/functions to help name timeouts.

The macros form a name for the timeout GSource implicitly.

New macros:

  e_named_timeout_add()
  e_named_timeout_add_full()
  e_named_timeout_add_seconds()
  e_named_timeout_add_seconds_full()

New functions (called by the macros):

  e_timeout_add_with_name()
  e_timeout_add_seconds_with_name()

10 years agoSupport migrating merged GConf trees.
Matthew Barnes [Mon, 28 Oct 2013 17:44:00 +0000 (13:44 -0400)]
Support migrating merged GConf trees.

Check for and parse a ~/.gconf/%gconf-tree.xml file during migration.
This is mainly for Debian, which I think accidentally merged some users'
GConf trees at some point.

This also adds a command-line program (evolution-scan-gconf-tree-xml),
which parses an arbitrary %gconf-tree.xml file as a recovery measure.

10 years agoCamelIMAPXStatusResponse: Don't assume all values are present.
Matthew Barnes [Thu, 12 Sep 2013 22:23:30 +0000 (18:23 -0400)]
CamelIMAPXStatusResponse: Don't assume all values are present.

Unsolicited STATUS responses may not include all the values that we
normally request in a STATUS command, so just update the mailbox with
the values that are present in the response.

10 years agoCamelIMAPXStoreSummary cleanups.
Matthew Barnes [Thu, 12 Sep 2013 15:58:39 +0000 (11:58 -0400)]
CamelIMAPXStoreSummary cleanups.

CamelIMAPXStoreSummary has no public or private members, so no reason
to cast pointers to that type.  Stick with plain (CamelStoreSummary *).

Removed functions:

  camel_imapx_store_summary_new()

10 years agoHack around default Courier namespaces.
Matthew Barnes [Thu, 12 Sep 2013 13:32:04 +0000 (09:32 -0400)]
Hack around default Courier namespaces.

By default, Courier lists (("INBOX." ".")) for its personal namespaces,
which excludes INBOX itself.  This causes problems for us so check for
it specifically and hack around it where necessary.

10 years agoCamelIMAPXStore: Remove public 'dir_sep' member.
Matthew Barnes [Wed, 11 Sep 2013 21:19:05 +0000 (17:19 -0400)]
CamelIMAPXStore: Remove public 'dir_sep' member.

No longer used.

10 years agoRemove CamelIMAPXStoreNamespace.
Matthew Barnes [Wed, 11 Sep 2013 21:15:50 +0000 (17:15 -0400)]
Remove CamelIMAPXStoreNamespace.

No longer used.

10 years agoRemove CamelIMAPXNamespaceList.
Matthew Barnes [Wed, 11 Sep 2013 21:13:52 +0000 (17:13 -0400)]
Remove CamelIMAPXNamespaceList.

No longer used.

10 years agoRemove camel_imapx_namespace_list_clear().
Matthew Barnes [Wed, 11 Sep 2013 21:10:02 +0000 (17:10 -0400)]
Remove camel_imapx_namespace_list_clear().

No longer used.

10 years agoCamelIMAPXStoreSummary: Remove all public members.
Matthew Barnes [Wed, 11 Sep 2013 21:04:44 +0000 (17:04 -0400)]
CamelIMAPXStoreSummary: Remove all public members.

The 'version' member was not used for anything and we no longer use the
'namespaces' member.  Only the CamelIMAPXServer knows about server-side
mailbox namespaces.  That information is not relevant when offline, and
therefore doesn't need to be cached.

This also removes imapx_fabricate_old_namespace_list() and similar hacks
in CamelIMAPXServer.

10 years agoRemove camel_imapx_store_summary_namespace_find_by_mailbox().
Matthew Barnes [Wed, 11 Sep 2013 20:31:04 +0000 (16:31 -0400)]
Remove camel_imapx_store_summary_namespace_find_by_mailbox().

No longer used.

10 years agoRemove camel_imapx_store_summary_namespace_find_by_path().
Matthew Barnes [Wed, 11 Sep 2013 14:28:39 +0000 (10:28 -0400)]
Remove camel_imapx_store_summary_namespace_find_by_path().

No longer used.

10 years agoRemove camel_imapx_store_summary_path_to_mailbox().
Matthew Barnes [Wed, 11 Sep 2013 14:24:41 +0000 (10:24 -0400)]
Remove camel_imapx_store_summary_path_to_mailbox().

No longer used.

10 years agoRemove camel_imapx_store_summary_mailbox_from_path().
Matthew Barnes [Wed, 11 Sep 2013 12:32:17 +0000 (08:32 -0400)]
Remove camel_imapx_store_summary_mailbox_from_path().

No longer used.

10 years agoRemove imapx_concat().
Matthew Barnes [Tue, 10 Sep 2013 20:11:08 +0000 (16:11 -0400)]
Remove imapx_concat().

No longer used.

10 years agoCamelIMAPXStoreSummary: Stop saving namespace information.
Matthew Barnes [Wed, 11 Sep 2013 20:52:31 +0000 (16:52 -0400)]
CamelIMAPXStoreSummary: Stop saving namespace information.

We don't need namespace information when operating offline.

10 years agoCamelIMAPXFolder: Remove public "on server" members.
Matthew Barnes [Sun, 8 Sep 2013 15:01:55 +0000 (11:01 -0400)]
CamelIMAPXFolder: Remove public "on server" members.

No longer used; the information is now in CamelIMAPXMailbox.

10 years agoRemove camel_imapx_list_response_get_summary_flags().
Matthew Barnes [Thu, 29 Aug 2013 19:04:03 +0000 (15:04 -0400)]
Remove camel_imapx_list_response_get_summary_flags().

No longer used.

10 years agoRemove camel_imapx_folder_process_status_response().
Matthew Barnes [Fri, 30 Aug 2013 20:16:01 +0000 (16:16 -0400)]
Remove camel_imapx_folder_process_status_response().

No longer used.

10 years agoStore QUOTAROOT information in CamelIMAPXMailbox.
Matthew Barnes [Mon, 2 Sep 2013 12:55:22 +0000 (08:55 -0400)]
Store QUOTAROOT information in CamelIMAPXMailbox.

Keep QUOTAROOT information in the named CamelIMAPXMailbox instead of
CamelIMAPXFolder.  Also remove CamelIMAPXFolder's "quota-root-names"
property, since it's no longer used.

Removed functions:

  camel_imapx_folder_dup_quota_root_names()
  camel_imapx_folder_set_quota_root_names()

10 years agocamel_imapx_store_summary_add_from_mailbox: Take a mailbox object.
Matthew Barnes [Wed, 11 Sep 2013 14:44:31 +0000 (10:44 -0400)]
camel_imapx_store_summary_add_from_mailbox: Take a mailbox object.

10 years agoCamelIMAPXServer: Support the SPECIAL-USE capability.
Matthew Barnes [Wed, 4 Sep 2013 01:35:01 +0000 (21:35 -0400)]
CamelIMAPXServer: Support the SPECIAL-USE capability.

http://tools.ietf.org/html/rfc6154

Camel does not yet provide an API for applications to utilize this
information, but we can still capture it in a CamelIMAPXMailbox.

I'm still pondering a suitable application-facing API for this.  I'd
prefer to avoid stuffing this into CamelFolderInfoFlags if I can, as
Camel already overuses / abuses flag values as it is.

10 years agoCamelIMAPXServer: Support the LIST-STATUS capability.
Matthew Barnes [Tue, 3 Sep 2013 20:09:12 +0000 (16:09 -0400)]
CamelIMAPXServer: Support the LIST-STATUS capability.

http://tools.ietf.org/html/rfc5819

Now that untagged LIST and STATUS responses are processed independently
of any tagged commands in progress, utilizing LIST-STATUS is trivial.

10 years agoCamelIMAPXServer: Support the NOTIFY capability.
Matthew Barnes [Sat, 13 Jul 2013 22:49:10 +0000 (18:49 -0400)]
CamelIMAPXServer: Support the NOTIFY capability.

http://tools.ietf.org/html/rfc5465

NOTIFY replaces IDLE when available.

10 years agoCamelIMAPXServer: LIST a mailbox after creating it.
Matthew Barnes [Wed, 11 Sep 2013 17:04:31 +0000 (13:04 -0400)]
CamelIMAPXServer: LIST a mailbox after creating it.

Listing the mailbox will trigger our untagged LIST handler.  This
simulates being notified of a newly-created mailbox, so we can just
let the callback functions handle the bookkeeping.

10 years agoCamelIMAPXFolder: Finish camel_imapx_folder_list_mailbox().
Matthew Barnes [Wed, 4 Sep 2013 16:45:44 +0000 (12:45 -0400)]
CamelIMAPXFolder: Finish camel_imapx_folder_list_mailbox().

Implement the part where we actually issue the LIST command.

10 years agoCamelIMAPXStore: Simplify get_folder_info_offline().
Matthew Barnes [Tue, 10 Sep 2013 20:08:40 +0000 (16:08 -0400)]
CamelIMAPXStore: Simplify get_folder_info_offline().

Forget about namespaces when offline and just match folder paths.

10 years agoRework camel_imapx_server_list().
Matthew Barnes [Wed, 7 Aug 2013 08:18:06 +0000 (10:18 +0200)]
Rework camel_imapx_server_list().

Repurpose camel_imapx_server_list() to create/update CamelIMAPXMailbox
instances within CamelIMAPXServer.  This function no longer returns an
array of CamelIMAPXListResponses, but simply a success/failure boolean.

Also, this function no longer takes an extension string parameter.  If
the server names "LIST-EXTENDED" in its CAPABILITY response, then this
function automatically issues an extended LIST command:

    LIST "" $PATTERN RETURN (CHILDREN SUBSCRIBED)

Otherwise it issues a LIST command followed by an LSUB command:

    LIST "" $PATTERN
    LSUB "" $PATTERN

After camel_imapx_server_list() returns, the caller can then pass the
same $PATTERN string to camel_imapx_server_list_mailboxes() to obtain
an up-to-date list of CamelIMAPXMailbox instances that match $PATTERN.

Also as part of this, we now explicitly only list mailboxes in personal
namespaces.  Listing mailboxes in shared or other users namespaces is a
future enhancement since CamelStore does not yet have a suitable API to
support this properly.

10 years agoCamelIMAPXServer: Emit mailbox-select/mailbox-closed signals.
Matthew Barnes [Fri, 13 Sep 2013 18:52:30 +0000 (14:52 -0400)]
CamelIMAPXServer: Emit mailbox-select/mailbox-closed signals.

10 years agoCamelIMAPXServer: Convert API to CamelIMAPXMailbox.
Matthew Barnes [Tue, 3 Sep 2013 11:05:22 +0000 (07:05 -0400)]
CamelIMAPXServer: Convert API to CamelIMAPXMailbox.

Convert CamelIMAPXServer to primarily use CamelIMAPXMailbox instead of
CamelIMAPXFolder, the idea being to keep all the Camel-specific policy
and limitations relegated to CamelIMAPXStore and CamelIMAPXFolder, and
just have CamelIMAPXServer be a pure IMAP client implementation.

This is a huge commit which I don't like doing, but CamelIMAPXServer,
CamelIMAPXCommand and CamelIMAPXJob are so tightly intertwined that I
was unable to split this into smaller steps.

Added functions:

  camel_imapx_command_ref_mailbox()
  camel_imapx_job_has_mailbox()
  camel_imapx_job_ref_mailbox()
  camel_imapx_job_set_mailbox()
  camel_imapx_server_create_mailbox()
  camel_imapx_server_delete_mailbox()
  camel_imapx_server_rename_mailbox()
  camel_imapx_server_subscribe_mailbox()
  camel_imapx_server_unsubscribe_mailbox()

Removed functions:

  camel_imapx_job_has_folder()
  camel_imapx_job_ref_folder()
  camel_imapx_job_set_mailbox()
  camel_imapx_server_manage_subscription()
  camel_imapx_server_create_folder()
  camel_imapx_server_delete_folder()
  camel_imapx_server_rename_folder()

Modified function signatures:

  camel_imapx_command_new()
  camel_imapx_job_matches()
  camel_imapx_server_refresh_info()
  camel_imapx_server_sync_changes()
  camel_imapx_server_expunge()
  camel_imapx_server_fetch_messages()
  camel_imapx_server_noop()
  camel_imapx_server_get_message()
  camel_imapx_server_copy_message()
  camel_imapx_server_append_message()
  camel_imapx_server_sync_message()
  camel_imapx_server_manage_subscription()
  camel_imapx_server_update_quota_info()
  camel_imapx_server_uid_search()
  imapx_parse_status()

10 years agoCamelIMAPXCommand: Add '%m' format character for mailbox names.
Matthew Barnes [Thu, 12 Sep 2013 12:02:30 +0000 (08:02 -0400)]
CamelIMAPXCommand: Add '%m' format character for mailbox names.

New format character '%m' for UTF-8 mailbox names.  Intended only
for CREATE and RENAME commands which take a user-provided mailbox
name.  Always prefer '%M' if a CamelIMAPXMailbox is available.

10 years agoCamelIMAPXCommand: Replace '%f' format character with '%M'.
Matthew Barnes [Mon, 2 Sep 2013 19:13:43 +0000 (15:13 -0400)]
CamelIMAPXCommand: Replace '%f' format character with '%M'.

Whereas '%f' took a CamelFolder argument and had to be converted to an
IMAP mailbox name (with the correct separator character), '%M' takes a
CamelIMAPXMailbox which already has the IMAP mailbox name.

10 years agoCamelIMAPXStore: Add imapx_store_process_mailbox_status().
Matthew Barnes [Fri, 30 Aug 2013 20:13:08 +0000 (16:13 -0400)]
CamelIMAPXStore: Add imapx_store_process_mailbox_status().

Processes a CamelIMAPXMailbox by adding relevant information to the
CamelIMAPXFolder, and invalidating the local cache if a UIDVALIDITY
change is detected.

10 years agoCamelIMAPXStore: Add imapx_store_process_mailbox_attributes().
Matthew Barnes [Thu, 29 Aug 2013 14:37:16 +0000 (10:37 -0400)]
CamelIMAPXStore: Add imapx_store_process_mailbox_attributes().

Processes a CamelIMAPXMailbox by adding relevant information to the
CamelStoreSummary, and emitting the appropriate CamelStore signals.

10 years agoCamelIMAPXStore: Add imapx_store_add_mailbox_to_folder().
Matthew Barnes [Thu, 29 Aug 2013 13:45:37 +0000 (09:45 -0400)]
CamelIMAPXStore: Add imapx_store_add_mailbox_to_folder().

Called in response to CamelIMAPXServer::mailbox-created signals.

10 years agoCamelIMAPXStore: Rough in handlers for CamelIMAPXServer signals.
Matthew Barnes [Wed, 28 Aug 2013 17:12:30 +0000 (13:12 -0400)]
CamelIMAPXStore: Rough in handlers for CamelIMAPXServer signals.

10 years agoCamelIMAPXFolder: Add camel_imapx_folder_list_mailbox().
Matthew Barnes [Tue, 3 Sep 2013 19:08:52 +0000 (15:08 -0400)]
CamelIMAPXFolder: Add camel_imapx_folder_list_mailbox().

Ensures that a folder's "mailbox" property is set, going so far as to
issue a LIST command if necessary (but should be a rarely needed last
resort).

Note the LIST command part of the function is currently unfinished.
Need to rework LIST command handling in CamelIMAPXServer first.

10 years agoCamelIMAPXServer: Add new namespace and mailbox APIs.
Matthew Barnes [Tue, 27 Aug 2013 22:43:57 +0000 (18:43 -0400)]
CamelIMAPXServer: Add new namespace and mailbox APIs.

CamelIMAPXMailbox and CamelIMAPXNamespace are closely intertwined, so
the containing data structures for them need to be introduced together.

This commit does so, and populates the data structures in memory from
untagged server responses.  It also adds CamelIMAPXServer API to access
or query the data structures.

All of this is so far unutilized.  Actually integrating these APIs into
the other parts of IMAPX will take place in subsequent commits.

New functions:

  camel_imapx_server_ref_namespaces()
  camel_imapx_server_ref_mailbox()
  camel_imapx_server_ref_selected()
  camel_imapx_server_list_mailboxes()

Removed functions:

  imapx_parse_namespace_list()

10 years agoCamelIMAPXFolder: Add a "mailbox" property.
Matthew Barnes [Thu, 29 Aug 2013 13:06:01 +0000 (09:06 -0400)]
CamelIMAPXFolder: Add a "mailbox" property.

Holds a weak reference to the corresponding CamelIMAPXMailbox for the
duration of the IMAP server connection.

New functions:

  camel_imapx_folder_ref_mailbox()
  camel_imapx_folder_set_mailbox()

10 years agoAdd CamelIMAPXMailbox.
Matthew Barnes [Thu, 22 Aug 2013 20:53:52 +0000 (16:53 -0400)]
Add CamelIMAPXMailbox.

CamelIMAPXMailbox models the current state of an IMAP mailbox as
accumulated from untagged IMAP server responses in the current session.

10 years agoAdd CamelIMAPXNamespaceResponse.
Matthew Barnes [Tue, 20 Aug 2013 13:03:23 +0000 (09:03 -0400)]
Add CamelIMAPXNamespaceResponse.

Encapsulates an IMAP NAMESPACE response, which consists of a set of
CamelIMAPXNamespace objects group by CamelIMAPXNamespaceCategory.

This will replace CamelIMAPXNamespaceList and related functions.

10 years agoAdd CamelIMAPXNamespace.
Matthew Barnes [Mon, 19 Aug 2013 12:04:48 +0000 (08:04 -0400)]
Add CamelIMAPXNamespace.

Encapsulates an IMAP namespace, which consists of a namespace category
(personal/other users/shared), a mailbox prefix string, and a mailbox
separator character.

10 years agoAdd camel_imapx_folder_copy_message_map().
Matthew Barnes [Fri, 4 Oct 2013 17:14:21 +0000 (13:14 -0400)]
Add camel_imapx_folder_copy_message_map().

Returns a GSequence of 32-bit integers representing the locally cached
mapping of message sequence numbers to unique identifiers.

10 years agoAdd camel_imapx_list_response_get_oldname().
Matthew Barnes [Fri, 30 Aug 2013 12:38:28 +0000 (08:38 -0400)]
Add camel_imapx_list_response_get_oldname().

Convenience function returns the value of the "OLDNAME" extended data
item, or NULL if no such extended data item is present.

10 years agoBug 710668: ESource: Verify removal before returning
Matthew Barnes [Sat, 26 Oct 2013 21:52:40 +0000 (17:52 -0400)]
Bug 710668: ESource: Verify removal before returning

Similar to bug 685986 when creating ESources, e_source_remove_sync()
now waits for an "object-removed" signal from GDBusObjectManagerClient
before returning.  But because ESource has no direct connection to the
"object-removed" signal, it waits for the ESourceRegistry to strip the
ESource of its D-Bus proxy via __e_source_private_replace_dbus_object().

Here again, to avoid risking a deadlock we place a limit on the wait
time (two seconds).  If this time limit expires, we return from the
function regardless.

10 years agoAdd a test case for bug 710668.
Matthew Barnes [Sat, 26 Oct 2013 18:29:50 +0000 (14:29 -0400)]
Add a test case for bug 710668.

10 years agoEBookClientCursor: Some additional documentation enhancements.
Tristan Van Berkom [Sat, 26 Oct 2013 18:52:28 +0000 (20:52 +0200)]
EBookClientCursor: Some additional documentation enhancements.

Fixed some errors in the examples which were not properly
ported from the old move_by() cursor API, at the same time
enhanced some of the example code snippets.

10 years agoCamel: Remove unused db-scrap-tools/db.c
Matthew Barnes [Sat, 26 Oct 2013 00:35:39 +0000 (20:35 -0400)]
Camel: Remove unused db-scrap-tools/db.c

No idea what this was intended for.

Not built, not documented, therefore not needed.

10 years agoBug 710787 - Replace most uses of sprintf() with g_snprintf()
Murray Cumming [Sat, 26 Oct 2013 00:32:03 +0000 (20:32 -0400)]
Bug 710787 - Replace most uses of sprintf() with g_snprintf()

sprintf() can potentially overwrite the buffer, but g_snprintf() takes
a length to stop it from doing that.

Some of these might instead be replaced by g_strdup_printf().  It is
hard to know if the use of alloca() and sprintf() was just because
g_strdup_printf() did not exist yet, or if alloca() was used for
performance.

10 years agocamel-lock-helper.c cleanups.
Matthew Barnes [Sat, 26 Oct 2013 00:08:53 +0000 (20:08 -0400)]
camel-lock-helper.c cleanups.

10 years agoUpdated POTFILES.in
Piotr Drąg [Fri, 25 Oct 2013 18:01:02 +0000 (20:01 +0200)]
Updated POTFILES.in

10 years agoDeprecate EProxy.
Matthew Barnes [Thu, 10 Oct 2013 14:05:14 +0000 (10:05 -0400)]
Deprecate EProxy.

Proxy settings have moved to ESources.  See the ESourceProxy extension.

10 years agoRemove camel_session_ref_proxy_resolver().
Matthew Barnes [Thu, 10 Oct 2013 17:07:25 +0000 (13:07 -0400)]
Remove camel_session_ref_proxy_resolver().

Short-lived, the function never made it into a release.

Use camel_service_ref_proxy_resolver() instead.

10 years agoCamelService: Add a "proxy-resolver" property.
Matthew Barnes [Thu, 10 Oct 2013 16:48:29 +0000 (12:48 -0400)]
CamelService: Add a "proxy-resolver" property.

Decided this was better than CamelSession's ref_proxy_resolver().

10 years agoCamelService: Rename 'settings_lock' to 'property_lock'.
Matthew Barnes [Thu, 10 Oct 2013 15:51:51 +0000 (11:51 -0400)]
CamelService: Rename 'settings_lock' to 'property_lock'.

10 years agoCamelService: Minor cleanups.
Matthew Barnes [Thu, 10 Oct 2013 16:04:46 +0000 (12:04 -0400)]
CamelService: Minor cleanups.

10 years agoEBookBackendGoogle: Bind to GDataService's GProxyResolver.
Matthew Barnes [Thu, 10 Oct 2013 14:00:20 +0000 (10:00 -0400)]
EBookBackendGoogle: Bind to GDataService's GProxyResolver.

GDataService gained a GProxyResolver property in 0.15.0, but we only
require 0.10.0, so I also added a temporary fallback function to set
a fixed proxy URI.

10 years agoEOwncloudBackend: Bind to SoupSession's GProxyResolver.
Matthew Barnes [Thu, 10 Oct 2013 00:21:28 +0000 (20:21 -0400)]
EOwncloudBackend: Bind to SoupSession's GProxyResolver.

10 years agoECalBackendHttp: Bind to SoupSession's GProxyResolver.
Matthew Barnes [Wed, 9 Oct 2013 22:14:49 +0000 (18:14 -0400)]
ECalBackendHttp: Bind to SoupSession's GProxyResolver.

10 years agoECalBackendCalDAV: Bind to SoupSession's GProxyResolver.
Matthew Barnes [Wed, 9 Oct 2013 22:11:02 +0000 (18:11 -0400)]
ECalBackendCalDAV: Bind to SoupSession's GProxyResolver.

10 years agoEBookBackendWebdav: Bind to SoupSession's GProxyResolver.
Matthew Barnes [Wed, 9 Oct 2013 22:03:41 +0000 (18:03 -0400)]
EBookBackendWebdav: Bind to SoupSession's GProxyResolver.

10 years agoBump minimum libsoup requirement to 2.42.
Matthew Barnes [Wed, 9 Oct 2013 03:29:10 +0000 (23:29 -0400)]
Bump minimum libsoup requirement to 2.42.

For SoupSession's "proxy-resolver" read/write property.

10 years agoECollectionBackend: Add a read-only "proxy-resolver" property.
Matthew Barnes [Thu, 10 Oct 2013 00:11:05 +0000 (20:11 -0400)]
ECollectionBackend: Add a read-only "proxy-resolver" property.

Tracks a GProxyResolver for the backend, which is actually another
ESource with an ESourceProxy extension (if applicable to the backend).

New functions:

  e_collection_backend_ref_proxy_resolver().

10 years agoECalBackend: Add a read-only "proxy-resolver" property.
Matthew Barnes [Wed, 9 Oct 2013 21:46:56 +0000 (17:46 -0400)]
ECalBackend: Add a read-only "proxy-resolver" property.

Tracks a GProxyResolver for the backend, which is actually another
ESource with an ESourceProxy extension (if applicable to the backend).

New functions:

  e_cal_backend_ref_proxy_resolver()

10 years agoEBookBackend: Add a read-only "proxy-resolver" property.
Matthew Barnes [Wed, 9 Oct 2013 20:09:10 +0000 (16:09 -0400)]
EBookBackend: Add a read-only "proxy-resolver" property.

Tracks a GProxyResolver for the backend, which is actually another
ESource with an ESourceProxy extension (if applicable to the backend).

New functions:

  e_book_backend_ref_proxy_resolver()

10 years agoESourceAuthentication: Add a "proxy-uid" property.
Matthew Barnes [Wed, 9 Oct 2013 03:12:23 +0000 (23:12 -0400)]
ESourceAuthentication: Add a "proxy-uid" property.

References another ESource that holds network proxy settings for use
when connecting to a remote account.

10 years agoAdd e_source_registry_ref_builtin_proxy().
Matthew Barnes [Wed, 9 Oct 2013 01:30:07 +0000 (21:30 -0400)]
Add e_source_registry_ref_builtin_proxy().

Returns the built-in proxy profile ESource.

10 years agoMigrate proxy settings from Evolution.
Matthew Barnes [Tue, 8 Oct 2013 12:46:53 +0000 (08:46 -0400)]
Migrate proxy settings from Evolution.

Populate a ~/.config/evolution/sources/system-proxy.source file from
the old "org.gnome.evolution.shell.network-config" schema on startup,
and tag the schema keys as deprecated in their description fields.

10 years agoAdd a built-in "system-proxy" data source.
Matthew Barnes [Tue, 8 Oct 2013 11:39:33 +0000 (07:39 -0400)]
Add a built-in "system-proxy" data source.

This represents the default proxy profile in E-D-S.  New accounts will
automatically reference this proxy profile.  Additional proxy profiles
can be defined as needed for particular accounts.

10 years agoESource: Implement the GProxyResolver interface.
Matthew Barnes [Mon, 7 Oct 2013 15:42:37 +0000 (11:42 -0400)]
ESource: Implement the GProxyResolver interface.

An ESource with an ESourceProxy extension can now serve as a
GProxyResolver.  Calling g_proxy_resolver_is_supported() on an
ESource will reflect this constraint.  Attempting a proxy lookup
operation on an ESource for which g_proxy_resolver_is_supported()
returns FALSE will fail with G_IO_ERROR_NOT_SUPPORTED.

10 years agoAdd ESourceProxy.
Matthew Barnes [Sun, 6 Oct 2013 04:40:07 +0000 (00:40 -0400)]
Add ESourceProxy.

The ESourceProxy extension defines a network proxy profile.

This is patterned after the "org.gnome.system.proxy*" GSettings schemas.

New functions:

  e_source_proxy_get_type()
  e_source_proxy_get_method()
  e_source_proxy_set_method()
  e_source_proxy_get_autoconfig_url()
  e_source_proxy_dup_autoconfig_url()
  e_source_proxy_set_autoconfig_url()
  e_source_proxy_get_ignore_hosts()
  e_source_proxy_dup_ignore_hosts()
  e_source_proxy_set_ignore_hosts()
  e_source_proxy_get_ftp_host()
  e_source_proxy_dup_ftp_host()
  e_source_proxy_set_ftp_host()
  e_source_proxy_get_ftp_port()
  e_source_proxy_set_ftp_port()
  e_source_proxy_get_http_host()
  e_source_proxy_dup_http_host()
  e_source_proxy_set_http_host()
  e_source_proxy_get_http_port()
  e_source_proxy_set_http_port()
  e_source_proxy_get_http_use_auth()
  e_source_proxy_set_http_use_auth()
  e_source_proxy_get_http_auth_user()
  e_source_proxy_dup_http_auth_user()
  e_source_proxy_set_http_auth_user()
  e_source_proxy_get_http_auth_password()
  e_source_proxy_dup_http_auth_password()
  e_source_proxy_set_http_auth_password()
  e_source_proxy_get_https_host()
  e_source_proxy_dup_https_host()
  e_source_proxy_set_https_host()
  e_source_proxy_get_https_port()
  e_source_proxy_set_https_port()
  e_source_proxy_get_socks_host()
  e_source_proxy_dup_socks_host()
  e_source_proxy_set_socks_host()
  e_source_proxy_get_socks_port()
  e_source_proxy_set_socks_port()
  e_source_proxy_lookup_sync()
  e_source_proxy_lookup()
  e_source_proxy_lookup_finish()

10 years agoAdd e_util_strv_equal().
Matthew Barnes [Mon, 21 Oct 2013 18:19:49 +0000 (14:19 -0400)]
Add e_util_strv_equal().

Compares two NULL-terminated string arrays for equality, handling NULL
gracefully for either argument.

10 years agoUpdated Spanish translation
Daniel Mustieles [Fri, 25 Oct 2013 14:40:48 +0000 (16:40 +0200)]
Updated Spanish translation

10 years agoFixed reference manual build for libedata-book.
Tristan Van Berkom [Thu, 24 Oct 2013 18:54:42 +0000 (20:54 +0200)]
Fixed reference manual build for libedata-book.

libedata-book-sections.txt still needed an update
after the recent EBookClientCursor API changes.

10 years agoAdded new cursor related APIs to the documentation build.
Tristan Van Berkom [Sun, 9 Jun 2013 10:25:51 +0000 (19:25 +0900)]
Added new cursor related APIs to the documentation build.

10 years agoAdding cursor example program
Tristan Van Berkom [Tue, 23 Jul 2013 05:25:39 +0000 (14:25 +0900)]
Adding cursor example program

The example program is a contact browser showing off
some of the cursor features such as localized alphabetic indexes.

10 years agoAdded tests for EBookClientCursor
Tristan Van Berkom [Tue, 2 Jul 2013 08:51:10 +0000 (17:51 +0900)]
Added tests for EBookClientCursor

 o test-client-cursor-create.c

    This test checks expected failure error codes and expected successfull
    cursor creation in Sync / Async and Normal / DRA modes.

 o test-client-cursor-operations.c

   A more complex set of tests which run in all various modes
   and configurations (i.e. Sync / Async / DRA / Threaded)

10 years agoAdded tests for the low level cursor API
Tristan Van Berkom [Thu, 18 Jul 2013 21:39:46 +0000 (06:39 +0900)]
Added tests for the low level cursor API

  o test-sqlite-create-cursor

    The new test case verifies that cursor creation is well protected
    (cursor creation is denied for some queries and ordering requests).

  o test-sqlite-cursor-move-by

    This test case asserts that e_book_backend_sqlite_cursor_move_by()
    works as expected. Consequently, a hand full of additional test
    vcards were added for this.

  o test-sqlite-cursor-set-target.c

    This test case tests e_book_backend_sqlitedb_cursor_set_target().

    The special case of setting a partial state is tested so that when
    a cursor is setup to sort by "family_name, given_name" and the target
    is set to "J", then we recieve results inclusive of the contact with
    the family name "J".

  o test-sqlite-cursor-calculate.c

    This test verifies that e_book_backend_sqlitedb_cursor_calculate() report
    the right position and total values when the cursor is moved, after the
    target is set, after the addressbook is modified, for filtered and unfiltered
    result sets.

  o test-sqlite-cursor-set-sexp.c

    This test verifies that invalid queries are rejected, and that a cursor
    position is changed by the new sexp with the correct new filtered values
    after applying a filter (sexp) to the cursor.

  o Tests to ensure that localized data is properly migrated:
      - test-sqlite-cursor-posix-initial
      - test-sqlite-cursor-en-US-migrated
      - test-sqlite-cursor-fr-CA-migrated
      - test-sqlite-cursor-de-DE-migrated
      - test-sqlite-cursor-posix-migrated

  o A test case testing basic ECollator features.

This patch also changes the test case vcard data to
specify a contact UID in each vcard's .vcf file, this
allows us more flexability with the above added tests.

10 years agoEBookClient: Implemented e_book_client_get_cursor() and locale property
Tristan Van Berkom [Thu, 23 May 2013 10:56:04 +0000 (19:56 +0900)]
EBookClient: Implemented e_book_client_get_cursor() and locale property

Propagate the 'locale' property change notifications when the dbus
proxy notifies a locale property change, also load the initial value
of the dbus proxy's locale property for the initial value.

10 years agoAdded EBookClientCursor
Tristan Van Berkom [Tue, 2 Jul 2013 08:47:34 +0000 (17:47 +0900)]
Added EBookClientCursor

The user facing cursor API, deals with calling cursor APIs in DRA mode
and normal modes over D-Bus, handles threading situations, and notifies
of cursor state changes in the caller's main context.

10 years agoEBookBackendFile: Implement cursors.
Tristan Van Berkom [Thu, 23 May 2013 07:26:26 +0000 (16:26 +0900)]
EBookBackendFile: Implement cursors.

  o Implemented EBookBackend.create_cursor() and EBookBackend.delete_cursor()
    methods using the EDataBookCursorSqlite implementation

  o Ensure that all addressbook modifications and revision changes are
    atomic operations, the revision changes happen in the same transactions
    as any other addressbook modification (allowing revision checks to be
    done safely in direct read access mode).

  o Implement EBookBackend->set_locale() & ->get_locale()

10 years agoEDataBook: Cursor related changes
Tristan Van Berkom [Thu, 23 May 2013 06:24:09 +0000 (15:24 +0900)]
EDataBook: Cursor related changes

Watch the system bus for locale notifications

When org.freedesktop.locale1 is available, listen to changes in
the LC_COLLATE locale and configure backends with locale changes
using e_book_backend_set_locale(), notify property changes via
the locale property on the addressbook D-Bus API.

Also, load the backend's initially set locale as the locale property
value until the org.freedesktop.locale1 D-Bus interface notifies
us of a locale change on the system bus.

Also handle D-Bus calls for creating cursors and export new
cursors on the bus.

10 years agoAdded EDataBookCursor & EDataBookCursorSqlite
Tristan Van Berkom [Sat, 19 Oct 2013 18:03:54 +0000 (20:03 +0200)]
Added EDataBookCursor & EDataBookCursorSqlite

EDataBookCursor is an abstract class with the mid-level cursor APIs, it
takes care of responding to D-Bus APIs and provides an API which can
be used in Direct Read Access mode but does not implement the actual
cursor state and navigation directly.

EDataBookCursorSqlite is a cursor implementation which uses
a EBookBackendSqliteDB cursor to implement the EDataBookCursor
methods.

This patch also adds the E_CLIENT_ERROR_END_OF_LIST error, intended
to be a generic boundary error when a client api reaches the end
of some list of data (this is used by the cursor API of course
to report an error when trying to navigate the cursor outside of the
list boundaries).

10 years agoEBookBackend: Adding cursor related APIs
Tristan Van Berkom [Fri, 17 May 2013 11:03:45 +0000 (20:03 +0900)]
EBookBackend: Adding cursor related APIs

Added new ->set_locale() API and ->get_locale() API

Use these to dynamically set the locale of a running addressbook, and also
to fetch the currently configured locale of an addressbook at startup time

Also added new methods for creating and deleting cursors.

10 years agoEBookBackendSqliteDB: Adding cursor related APIs
Tristan Van Berkom [Mon, 22 Apr 2013 11:42:14 +0000 (20:42 +0900)]
EBookBackendSqliteDB: Adding cursor related APIs

Added the following APIs:

      o e_book_backend_sqlitedb_cursor_new()

        Creates a cursor for a given query expression and sort order

      o e_book_backend_sqlitedb_cursor_free()

        Frees a cursor and it's resources

      o e_book_backend_sqlitedb_cursor_move_by()

        Moves the cursor and fetches results

        Moving the cursor now has 3 possible "origins":

          o EBSDB_CURSOR_ORIGIN_CURRENT:
            Fetch results and move from the current
            cursor position

          o EBSDB_CURSOR_ORIGIN_PREVIOUS:
            Fetch results and move from the previous
            cursor position, practical for refreshing
            a result set after the addressbook changes

          o EBSDB_CURSOR_ORIGIN_RESET:
            Fetch results from the beginning (or end,
            if moving backwards through results).

        To achieve the EBSDB_CURSOR_ORIGIN_PREVIOUS origin, the cursor
        holds on to two cursor states at all times (the current cursor
        state and previous cursor state).

      o e_book_backend_sqlitedb_cursor_set_target_alphabetic_index()

        To set the cursor target by alphabetic index, also added
        e_book_backend_sqlitedb_ref_collator() to get a hold of the active
        collator which can be used to list the active alphabet attributes.

      o e_book_backend_sqlite_cursor_calculate()

        Calculates the position / total values of a cursor.

      o e_book_backend_sqlitedb_cursor_set_sexp()

        Sets the search expression for a given cursor

      o e_book_backend_sqlitedb_get/set_locale()

        Locale setting is now only ever guessed when creating a new addressbook
        before e_book_backend_sqlitedb_set_locale() is called, setting the locale
        will save the localization setting and it will be reused on subsequent
        accesses. If and when a locale setting is changed, the contact sort
        keys are regenerated with a new ECollator for the new locale.

      o e_book_backend_sqlitedb_cursor_compare()

        An api to compare the cursor with an EContact, this allows
        EDataBookCursor to track total / position when the addressbook is
        modified without constantly recalculating it with SQLite queries.

10 years agoAdding D-Bus API for cursor related APIs
Tristan Van Berkom [Mon, 20 May 2013 07:08:35 +0000 (16:08 +0900)]
Adding D-Bus API for cursor related APIs

  o org.freedesktop.locale1

    We generate a GDBus object to deal with the "org.freedesktop.locale1" interface
    on the system bus, specifically we are interested in system wide locale change
    notifications.

  o org.gnome.evolution.AddressBook

    Added the "Locale" property and added a method
    to create a cursor.

  o org.gnome.evolution.dataserver.AddressBookCursor

    The new D-Bus interface to interact with cursors.

10 years agoAdded utility ECollator to libedataserver.
Tristan Van Berkom [Tue, 30 Apr 2013 07:09:35 +0000 (16:09 +0900)]
Added utility ECollator to libedataserver.

The ECollator API wraps up the required ICU APIs into something more
convenient for usage in EDS. The provided features allow for rich
locale sensitive sorting as well as knowledge of the user's native
alphabet.

Some auxilary objects are needed to access features in ICU which are
available only in C++:

    EAlphabetIndex

    A private accessory used internally by ECollator to implement AlphabeticIndex
    features. This is in a separate file since we need to use C++ APIs to use
    the AlphabeticIndex, so we compile it into a separate archive to be statically
    linked in with libedataserver.la.

    ETransliterator

    Added this glue to call icu::Transliterator C++ APIs on behalf of ECollator.

10 years agoAdded detection of ICU libs to configure.ac
Tristan Van Berkom [Fri, 26 Apr 2013 12:29:31 +0000 (21:29 +0900)]
Added detection of ICU libs to configure.ac

10 years agotest-server-utils: Add e_test_server_utils_run_full()
Mathias Hasselmann [Tue, 5 Mar 2013 10:03:24 +0000 (11:03 +0100)]
test-server-utils: Add e_test_server_utils_run_full()

Basically this is to tell e_test_server_utils_run() to not
wipe the working directory before start.

Conflicts:

tests/test-server-utils/e-test-server-utils.h

10 years agoTests: Added 3 new contacts and a few more query tests.
Tristan Van Berkom [Thu, 3 Oct 2013 22:05:36 +0000 (00:05 +0200)]
Tests: Added 3 new contacts and a few more query tests.

The new tests check some specific phone number matching cases
with E_BOOK_QUERY_EQUALS_NATIONAL_NUMBER queries.