Patrick Ohly changed bug 65998
What Removed Added
Status NEW NEEDINFO

Comment # 1 on bug 65998 from
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@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 &params)
-        : 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: