From 9e539844bb62fd8bcc4a8e423205ea4a15a1c15e Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 19 Jan 2016 11:14:32 +0100 Subject: Inspect unread state --- examples/maildirresource/libmaildir/maildir.cpp | 2 +- examples/maildirresource/libmaildir/maildir.h | 2 +- examples/maildirresource/maildirresource.cpp | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) (limited to 'examples/maildirresource') diff --git a/examples/maildirresource/libmaildir/maildir.cpp b/examples/maildirresource/libmaildir/maildir.cpp index 94363b8..28cf46e 100644 --- a/examples/maildirresource/libmaildir/maildir.cpp +++ b/examples/maildirresource/libmaildir/maildir.cpp @@ -770,7 +770,7 @@ bool Maildir::removeEntry(const QString& key) // return newUniqueKey; // } // -Maildir::Flags Maildir::readEntryFlags(const QString& key) const +Maildir::Flags Maildir::readEntryFlags(const QString& key) { Flags flags; const QRegExp rx = *(statusSeparatorRx()); diff --git a/examples/maildirresource/libmaildir/maildir.h b/examples/maildirresource/libmaildir/maildir.h index f80ba5d..fefd5a7 100644 --- a/examples/maildirresource/libmaildir/maildir.h +++ b/examples/maildirresource/libmaildir/maildir.h @@ -178,7 +178,7 @@ public: /** * Return the flags encoded in the maildir file name for an entry **/ - Flags readEntryFlags( const QString& key ) const; + static Flags readEntryFlags( const QString& key ); /** * Return the contents of the headers section of the file the maildir with the given @p file, that diff --git a/examples/maildirresource/maildirresource.cpp b/examples/maildirresource/maildirresource.cpp index 3531b92..5d540be 100644 --- a/examples/maildirresource/maildirresource.cpp +++ b/examples/maildirresource/maildirresource.cpp @@ -295,7 +295,25 @@ void MaildirResource::removeFromDisk(const QByteArray &instanceIdentifier) KAsync::Job MaildirResource::inspect(int inspectionType, const QByteArray &inspectionId, const QByteArray &domainType, const QByteArray &entityId, const QByteArray &property, const QVariant &expectedValue) { + auto synchronizationStore = QSharedPointer::create(Akonadi2::storageLocation(), mResourceInstanceIdentifier + ".synchronization", Akonadi2::Storage::ReadOnly); + auto synchronizationTransaction = synchronizationStore->createTransaction(Akonadi2::Storage::ReadOnly); Trace() << "Inspecting " << inspectionType << domainType << entityId << property << expectedValue; + if (domainType == ENTITY_TYPE_MAIL) { + if (inspectionType == Akonadi2::Resources::Inspection::PropertyInspectionType) { + if (property == "unread") { + const auto remoteId = resolveLocalId(ENTITY_TYPE_MAIL, entityId, synchronizationTransaction); + const auto flags = KPIM::Maildir::readEntryFlags(remoteId.split('/').last()); + if (expectedValue.toBool() && !(flags & KPIM::Maildir::Seen)) { + return KAsync::error(1, "Expected seen but couldn't find it."); + } + if (!expectedValue.toBool() && (flags & KPIM::Maildir::Seen)) { + return KAsync::error(1, "Expected seen but couldn't find it."); + } + return KAsync::null(); + } + } + } + return KAsync::null(); } MaildirResourceFactory::MaildirResourceFactory(QObject *parent) -- cgit v1.2.3