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.
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().
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).
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().
Fran Diéguez [Fri, 1 Nov 2013 12:07:43 +0000 (13:07 +0100)]
Updated Galician translations
Matthew Barnes [Fri, 1 Nov 2013 01:09:30 +0000 (21:09 -0400)]
Add --disable-examples to DISTCHECK_CONFIGURE_FLAGS.
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.
Matthew Barnes [Tue, 29 Oct 2013 19:07:19 +0000 (15:07 -0400)]
e-data-server-util.h: Fix a couple typos.
Matthew Barnes [Tue, 29 Oct 2013 16:30:04 +0000 (12:30 -0400)]
Remove duplicate "named timeout" docs.
Oopsie.
Bastien Nocera [Tue, 29 Oct 2013 16:18:32 +0000 (12:18 -0400)]
Bug 710808 - Name all the timeouts added with g_timeout_add()
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()
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.
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.
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()
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.
Matthew Barnes [Wed, 11 Sep 2013 21:19:05 +0000 (17:19 -0400)]
CamelIMAPXStore: Remove public 'dir_sep' member.
No longer used.
Matthew Barnes [Wed, 11 Sep 2013 21:15:50 +0000 (17:15 -0400)]
Remove CamelIMAPXStoreNamespace.
No longer used.
Matthew Barnes [Wed, 11 Sep 2013 21:13:52 +0000 (17:13 -0400)]
Remove CamelIMAPXNamespaceList.
No longer used.
Matthew Barnes [Wed, 11 Sep 2013 21:10:02 +0000 (17:10 -0400)]
Remove camel_imapx_namespace_list_clear().
No longer used.
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.
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.
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.
Matthew Barnes [Wed, 11 Sep 2013 14:24:41 +0000 (10:24 -0400)]
Remove camel_imapx_store_summary_path_to_mailbox().
No longer used.
Matthew Barnes [Wed, 11 Sep 2013 12:32:17 +0000 (08:32 -0400)]
Remove camel_imapx_store_summary_mailbox_from_path().
No longer used.
Matthew Barnes [Tue, 10 Sep 2013 20:11:08 +0000 (16:11 -0400)]
Remove imapx_concat().
No longer used.
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.
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.
Matthew Barnes [Thu, 29 Aug 2013 19:04:03 +0000 (15:04 -0400)]
Remove camel_imapx_list_response_get_summary_flags().
No longer used.
Matthew Barnes [Fri, 30 Aug 2013 20:16:01 +0000 (16:16 -0400)]
Remove camel_imapx_folder_process_status_response().
No longer used.
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()
Matthew Barnes [Wed, 11 Sep 2013 14:44:31 +0000 (10:44 -0400)]
camel_imapx_store_summary_add_from_mailbox: Take a mailbox object.
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.
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.
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.
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.
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.
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.
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.
Matthew Barnes [Fri, 13 Sep 2013 18:52:30 +0000 (14:52 -0400)]
CamelIMAPXServer: Emit mailbox-select/mailbox-closed signals.
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()
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.
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.
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.
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.
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.
Matthew Barnes [Wed, 28 Aug 2013 17:12:30 +0000 (13:12 -0400)]
CamelIMAPXStore: Rough in handlers for CamelIMAPXServer signals.
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.
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()
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()
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.
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.
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.
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.
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.
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.
Matthew Barnes [Sat, 26 Oct 2013 18:29:50 +0000 (14:29 -0400)]
Add a test case for bug 710668.
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.
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.
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.
Matthew Barnes [Sat, 26 Oct 2013 00:08:53 +0000 (20:08 -0400)]
camel-lock-helper.c cleanups.
Piotr Drąg [Fri, 25 Oct 2013 18:01:02 +0000 (20:01 +0200)]
Updated POTFILES.in
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.
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.
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().
Matthew Barnes [Thu, 10 Oct 2013 15:51:51 +0000 (11:51 -0400)]
CamelService: Rename 'settings_lock' to 'property_lock'.
Matthew Barnes [Thu, 10 Oct 2013 16:04:46 +0000 (12:04 -0400)]
CamelService: Minor cleanups.
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.
Matthew Barnes [Thu, 10 Oct 2013 00:21:28 +0000 (20:21 -0400)]
EOwncloudBackend: Bind to SoupSession's GProxyResolver.
Matthew Barnes [Wed, 9 Oct 2013 22:14:49 +0000 (18:14 -0400)]
ECalBackendHttp: Bind to SoupSession's GProxyResolver.
Matthew Barnes [Wed, 9 Oct 2013 22:11:02 +0000 (18:11 -0400)]
ECalBackendCalDAV: Bind to SoupSession's GProxyResolver.
Matthew Barnes [Wed, 9 Oct 2013 22:03:41 +0000 (18:03 -0400)]
EBookBackendWebdav: Bind to SoupSession's GProxyResolver.
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.
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().
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()
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()
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.
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.
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.
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.
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.
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()
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.
Daniel Mustieles [Fri, 25 Oct 2013 14:40:48 +0000 (16:40 +0200)]
Updated Spanish translation
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.
Tristan Van Berkom [Sun, 9 Jun 2013 10:25:51 +0000 (19:25 +0900)]
Added new cursor related APIs to the documentation build.
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.
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)
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.
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.
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.
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()
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.
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).
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.
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.
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.
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.
Tristan Van Berkom [Fri, 26 Apr 2013 12:29:31 +0000 (21:29 +0900)]
Added detection of ICU libs to configure.ac
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
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.