https://bugs.freedesktop.org/show_bug.cgi?id=65998
Patrick Ohly <patrick.ohly(a)gmx.de> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |NEEDINFO
--- Comment #1 from Patrick Ohly <patrick.ohly(a)gmx.de> ---
Thanks for the detailed setup log. That answers a lot of questions already. It
all looks good.
(In reply to comment #0)
[roubach@localhost ~]$ syncevolution --print-items @default todo
[roubach@localhost ~]$
Are you absolutely sure that akonadi:?collection=262 contains items?
Do you know how to use gdb or how to recompile SyncEvolution?
I have the suspicion that the items are found, but their mime type isn't what
is expected. In a recent commit, the "sub mime type" was changed from
"text/calendar" to the more specific
"application/x-vnd.akonadi.calendar.todo",
because that is the type used by Akonadi to describe what kinds of items the
collection contains. See
commit 05fb1aebc3242c0cf734f18f0582df8cb05e0999
Author: Diane Trout <diane(a)ghic.org>
Date: Thu Apr 25 10:07:25 2013 +0200
KDE: fix Akonadi backend for tasks
Because of a too generic mime type in SyncEvolution, task collections
were not found.
diff --git a/src/backends/akonadi/akonadisyncsource.h
b/src/backends/akonadi/akonadisyncsource.h
index 5c11ff9..6e88188 100644
--- a/src/backends/akonadi/akonadisyncsource.h
+++ b/src/backends/akonadi/akonadisyncsource.h
@@ -128,7 +128,7 @@ class AkonadiTaskSource : public AkonadiSyncSource
{
public:
AkonadiTaskSource(const SyncSourceParams ¶ms)
- : AkonadiSyncSource("text/calendar", params)
+ : AkonadiSyncSource("application/x-vnd.akonadi.calendar.todo", params)
{
}
Perhaps it uses that type for the collection and "text/calendar" for the items?
In that case, the following code will not find the tasks:
void AkonadiSyncSource::listAllItems(SyncSourceRevisions::RevisionMap_t
&revisions)
{
// copy all local IDs and the corresponding revision
std::auto_ptr<ItemFetchJob> fetchJob(DisableAutoDelete(new
ItemFetchJob(m_collection)));
if (!fetchJob->exec()) {
throwError("listing items");
}
BOOST_FOREACH (const Item &item, fetchJob->items()) {
// Filter out items which don't have the right type (for example, VTODO
when
// syncing events)
if (item.mimeType() == m_subMime.c_str()) {
revisions[QByteArray::number(item.id()).constData()] =
QByteArray::number(item.revision()).constData();
}
}
}
You can check this theory by single-stepping through that function. Bonus
points for the output of "print item.mimeType()". Not sure whether gdb will be
able to call the function. In that case, recompile and add
LOG_INFO(NULL, "item mime type: %s", item.mimeType());
--
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.