summaryrefslogtreecommitdiffstats
path: root/examples/maildirresource
diff options
context:
space:
mode:
Diffstat (limited to 'examples/maildirresource')
-rw-r--r--examples/maildirresource/libmaildir/maildir.cpp2
-rw-r--r--examples/maildirresource/libmaildir/maildir.h2
-rw-r--r--examples/maildirresource/maildirresource.cpp30
-rw-r--r--examples/maildirresource/maildirresource.h1
4 files changed, 33 insertions, 2 deletions
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)
770// return newUniqueKey; 770// return newUniqueKey;
771// } 771// }
772// 772//
773Maildir::Flags Maildir::readEntryFlags(const QString& key) const 773Maildir::Flags Maildir::readEntryFlags(const QString& key)
774{ 774{
775 Flags flags; 775 Flags flags;
776 const QRegExp rx = *(statusSeparatorRx()); 776 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:
178 /** 178 /**
179 * Return the flags encoded in the maildir file name for an entry 179 * Return the flags encoded in the maildir file name for an entry
180 **/ 180 **/
181 Flags readEntryFlags( const QString& key ) const; 181 static Flags readEntryFlags( const QString& key );
182 182
183 /** 183 /**
184 * Return the contents of the headers section of the file the maildir with the given @p file, that 184 * 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 70f6ae5..9280bdc 100644
--- a/examples/maildirresource/maildirresource.cpp
+++ b/examples/maildirresource/maildirresource.cpp
@@ -35,6 +35,7 @@
35#include "facadefactory.h" 35#include "facadefactory.h"
36#include "indexupdater.h" 36#include "indexupdater.h"
37#include "libmaildir/maildir.h" 37#include "libmaildir/maildir.h"
38#include "inspection.h"
38#include <QDate> 39#include <QDate>
39#include <QUuid> 40#include <QUuid>
40#include <QDir> 41#include <QDir>
@@ -292,6 +293,35 @@ void MaildirResource::removeFromDisk(const QByteArray &instanceIdentifier)
292 Akonadi2::Storage(Akonadi2::storageLocation(), instanceIdentifier + ".synchronization", Akonadi2::Storage::ReadWrite).removeFromDisk(); 293 Akonadi2::Storage(Akonadi2::storageLocation(), instanceIdentifier + ".synchronization", Akonadi2::Storage::ReadWrite).removeFromDisk();
293} 294}
294 295
296KAsync::Job<void> MaildirResource::inspect(int inspectionType, const QByteArray &inspectionId, const QByteArray &domainType, const QByteArray &entityId, const QByteArray &property, const QVariant &expectedValue)
297{
298 auto synchronizationStore = QSharedPointer<Akonadi2::Storage>::create(Akonadi2::storageLocation(), mResourceInstanceIdentifier + ".synchronization", Akonadi2::Storage::ReadOnly);
299 auto synchronizationTransaction = synchronizationStore->createTransaction(Akonadi2::Storage::ReadOnly);
300 Trace() << "Inspecting " << inspectionType << domainType << entityId << property << expectedValue;
301 if (domainType == ENTITY_TYPE_MAIL) {
302 if (inspectionType == Akonadi2::Resources::Inspection::PropertyInspectionType) {
303 if (property == "unread") {
304 const auto remoteId = resolveLocalId(ENTITY_TYPE_MAIL, entityId, synchronizationTransaction);
305 const auto flags = KPIM::Maildir::readEntryFlags(remoteId.split('/').last());
306 if (expectedValue.toBool() && !(flags & KPIM::Maildir::Seen)) {
307 return KAsync::error<void>(1, "Expected seen but couldn't find it.");
308 }
309 if (!expectedValue.toBool() && (flags & KPIM::Maildir::Seen)) {
310 return KAsync::error<void>(1, "Expected seen but couldn't find it.");
311 }
312 return KAsync::null<void>();
313 }
314 }
315 if (inspectionType == Akonadi2::Resources::Inspection::ExistenceInspectionType) {
316 const auto remoteId = resolveLocalId(ENTITY_TYPE_MAIL, entityId, synchronizationTransaction);
317 if (QFileInfo(remoteId).exists() != expectedValue.toBool()) {
318 return KAsync::error<void>(1, "Wrong file existence: " + remoteId);
319 }
320 }
321 }
322 return KAsync::null<void>();
323}
324
295MaildirResourceFactory::MaildirResourceFactory(QObject *parent) 325MaildirResourceFactory::MaildirResourceFactory(QObject *parent)
296 : Akonadi2::ResourceFactory(parent) 326 : Akonadi2::ResourceFactory(parent)
297{ 327{
diff --git a/examples/maildirresource/maildirresource.h b/examples/maildirresource/maildirresource.h
index 21ee637..5f7795b 100644
--- a/examples/maildirresource/maildirresource.h
+++ b/examples/maildirresource/maildirresource.h
@@ -44,6 +44,7 @@ class MaildirResource : public Akonadi2::GenericResource
44public: 44public:
45 MaildirResource(const QByteArray &instanceIdentifier, const QSharedPointer<Akonadi2::Pipeline> &pipeline = QSharedPointer<Akonadi2::Pipeline>()); 45 MaildirResource(const QByteArray &instanceIdentifier, const QSharedPointer<Akonadi2::Pipeline> &pipeline = QSharedPointer<Akonadi2::Pipeline>());
46 KAsync::Job<void> synchronizeWithSource(Akonadi2::Storage &mainStore, Akonadi2::Storage &synchronizationStore) Q_DECL_OVERRIDE; 46 KAsync::Job<void> synchronizeWithSource(Akonadi2::Storage &mainStore, Akonadi2::Storage &synchronizationStore) Q_DECL_OVERRIDE;
47 KAsync::Job<void> inspect(int inspectionType, const QByteArray &inspectionId, const QByteArray &domainType, const QByteArray &entityId, const QByteArray &property, const QVariant &expectedValue) Q_DECL_OVERRIDE;
47 static void removeFromDisk(const QByteArray &instanceIdentifier); 48 static void removeFromDisk(const QByteArray &instanceIdentifier);
48private: 49private:
49 KAsync::Job<void> replay(Akonadi2::Storage &synchronizationStore, const QByteArray &type, const QByteArray &key, const QByteArray &value) Q_DECL_OVERRIDE; 50 KAsync::Job<void> replay(Akonadi2::Storage &synchronizationStore, const QByteArray &type, const QByteArray &key, const QByteArray &value) Q_DECL_OVERRIDE;