From d2305f14fced3afdbda2b5a8f2a270ae91d79ae1 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 4 Dec 2015 11:29:32 +0100 Subject: Added mail and folder properties --- examples/dummyresource/dummystore.cpp | 91 +++++++++++++++++++----------- examples/dummyresource/dummystore.h | 17 +++++- examples/dummyresource/resourcefactory.cpp | 36 ++++++------ examples/dummyresource/resourcefactory.h | 2 +- 4 files changed, 93 insertions(+), 53 deletions(-) (limited to 'examples/dummyresource') diff --git a/examples/dummyresource/dummystore.cpp b/examples/dummyresource/dummystore.cpp index 8592a30..e948475 100644 --- a/examples/dummyresource/dummystore.cpp +++ b/examples/dummyresource/dummystore.cpp @@ -19,6 +19,7 @@ #include "dummystore.h" #include +#include static QMap createEvent(int i) { @@ -29,67 +30,91 @@ static QMap createEvent(int i) return event; } -static QMap createMail(int i) +QMap > DummyStore::populateEvents() { - QMap mail; - mail.insert("subject", QString("subject%1").arg(i)); - return mail; + QMap> content; + for (int i = 0; i < 2; i++) { + content.insert(QString("key%1").arg(i), createEvent(i)); + } + return content; } -static QMap createFolder(int i) +static QByteArray addMail(QMap > &content, const QString &subject, const QDateTime &date, const QString &senderName, const QString &senderEmail, bool isUnread, bool isImportant, const QByteArray &parentFolder) { - QMap folder; - folder.insert("name", QString("folder%1").arg(i)); - return folder; + static int id = 0; + id++; + const auto uid = QString("key%1").arg(id); + QMap mail; + mail.insert("subject", subject); + mail.insert("date", date); + mail.insert("senderName", senderName); + mail.insert("senderEmail", senderEmail); + mail.insert("unread", isUnread); + mail.insert("important", isImportant); + mail.insert("parentFolder", parentFolder); + content.insert(uid, mail); + return uid.toUtf8(); } -QMap > populateEvents() +QMap > DummyStore::populateMails() { QMap> content; - for (int i = 0; i < 2; i++) { - content.insert(QString("key%1").arg(i), createEvent(i)); + for (const auto &parentFolder : mFolders.keys()) { + addMail(content, "Hello World!", QDateTime::currentDateTimeUtc(), "John Doe", "doe@example.com", true, false, parentFolder.toUtf8()); } return content; } -QMap > populateMails() +static QByteArray addFolder(QMap > &content, const QString &name, const QByteArray &icon, const QByteArray &parent = QByteArray()) { - QMap> content; - for (int i = 0; i < 2; i++) { - content.insert(QString("key%1").arg(i), createMail(i)); + static int id = 0; + id++; + const auto uid = QString("key%1").arg(id); + QMap folder; + folder.insert("name", name); + if (!parent.isEmpty()) { + folder.insert("parent", parent); } - return content; + folder.insert("icon", icon); + content.insert(uid, folder); + return uid.toUtf8(); } -QMap > populateFolders() +QMap > DummyStore::populateFolders() { QMap> content; - int i = 0; - for (i = 0; i < 5; i++) { - content.insert(QString("key%1").arg(i), createFolder(i)); + addFolder(content, "Inbox", "mail-folder-inbox"); + auto data = addFolder(content, "Data", "folder"); + addFolder(content, "Sent", "mail-folder-sent"); + addFolder(content, "Trash", "user-trash"); + addFolder(content, "Drafts", "document-edit"); + addFolder(content, "Stuff", "folder", data); + auto bulk = addFolder(content, "Bulk", "folder", data); + for (int i = 0; i < 5; i++) { + addFolder(content, QString("Folder %1").arg(i), "folder", bulk); } - i++; - auto folder = createFolder(i); - folder.insert("parent", "key0"); - content.insert(QString("key%1").arg(i), folder); return content; } -static QMap > s_eventSource = populateEvents(); -static QMap > s_mailSource = populateMails(); -static QMap > s_folderSource = populateFolders(); +DummyStore::DummyStore() +{ + mFolders = populateFolders(); + mMails = populateMails(); + mEvents = populateEvents(); + +} -QMap > DummyStore::events() const +QMap > &DummyStore::events() { - return s_eventSource; + return mEvents; } -QMap > DummyStore::mails() const +QMap > &DummyStore::mails() { - return s_mailSource; + return mMails; } -QMap > DummyStore::folders() const +QMap > &DummyStore::folders() { - return s_folderSource; + return mFolders; } diff --git a/examples/dummyresource/dummystore.h b/examples/dummyresource/dummystore.h index c730118..a29ce38 100644 --- a/examples/dummyresource/dummystore.h +++ b/examples/dummyresource/dummystore.h @@ -29,7 +29,18 @@ public: return instance; } - QMap > events() const; - QMap > mails() const; - QMap > folders() const; + QMap > &events(); + QMap > &mails(); + QMap > &folders(); + +private: + DummyStore(); + + QMap > populateEvents(); + QMap > populateMails(); + QMap > populateFolders(); + + QMap > mEvents; + QMap > mMails; + QMap > mFolders; }; diff --git a/examples/dummyresource/resourcefactory.cpp b/examples/dummyresource/resourcefactory.cpp index 9a577a0..a084c19 100644 --- a/examples/dummyresource/resourcefactory.cpp +++ b/examples/dummyresource/resourcefactory.cpp @@ -160,14 +160,27 @@ void DummyResource::createEvent(const QByteArray &ridBuffer, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb, Akonadi2::Storage::Transaction &transaction) { - //Map the source format to the buffer format (which happens to be an exact copy here) + //Map the source format to the buffer format (which happens to be an almost exact copy here) auto subject = m_fbb.CreateString(data.value("subject").toString().toStdString()); - auto sender = m_fbb.CreateString(data.value("sender").toString().toStdString()); + auto sender = m_fbb.CreateString(data.value("senderEmail").toString().toStdString()); auto senderName = m_fbb.CreateString(data.value("senderName").toString().toStdString()); auto date = m_fbb.CreateString(data.value("date").toDate().toString().toStdString()); - auto folder = m_fbb.CreateString(std::string("inbox")); + auto folder = m_fbb.CreateString(resolveRemoteId(ENTITY_TYPE_MAIL, data.value("parentFolder").toString(), transaction).toStdString()); auto builder = Akonadi2::ApplicationDomain::Buffer::MailBuilder(m_fbb); builder.add_subject(subject); @@ -182,26 +195,16 @@ void DummyResource::createMail(const QByteArray &ridBuffer, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb, Akonadi2::Storage::Transaction &transaction) { //Map the source format to the buffer format (which happens to be an exact copy here) auto name = m_fbb.CreateString(data.value("name").toString().toStdString()); + auto icon = m_fbb.CreateString(data.value("icon").toString().toStdString()); flatbuffers::Offset parent; bool hasParent = false; if (!data.value("parent").toString().isEmpty()) { hasParent = true; - auto akonadiId = resolveRemoteId(data.value("parent").toString(), transaction); + auto akonadiId = resolveRemoteId(ENTITY_TYPE_FOLDER, data.value("parent").toString(), transaction); parent = m_fbb.CreateString(akonadiId.toStdString()); } @@ -210,6 +213,7 @@ void DummyResource::createFolder(const QByteArray &ridBuffer, const QMap bool { diff --git a/examples/dummyresource/resourcefactory.h b/examples/dummyresource/resourcefactory.h index 5706c16..4144985 100644 --- a/examples/dummyresource/resourcefactory.h +++ b/examples/dummyresource/resourcefactory.h @@ -36,7 +36,7 @@ public: KAsync::Job synchronizeWithSource() Q_DECL_OVERRIDE; static void removeFromDisk(const QByteArray &instanceIdentifier); private: - QString resolveRemoteId(const QString &remoteId, Akonadi2::Storage::Transaction &transaction); + QString resolveRemoteId(const QByteArray &type, const QString &remoteId, Akonadi2::Storage::Transaction &transaction); void createEvent(const QByteArray &rid, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb, Akonadi2::Storage::Transaction &); void createMail(const QByteArray &rid, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb, Akonadi2::Storage::Transaction &); void createFolder(const QByteArray &rid, const QMap &data, flatbuffers::FlatBufferBuilder &entityFbb, Akonadi2::Storage::Transaction &); -- cgit v1.2.3