summaryrefslogtreecommitdiffstats
path: root/examples/maildirresource/maildirresource.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2015-12-16 13:14:49 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2015-12-16 13:15:51 +0100
commit56e38fd874546b54ba34b07c71f65532059c5e7b (patch)
tree2a9430e7246883ee3bd000fef75e2c7445cf29fc /examples/maildirresource/maildirresource.cpp
parent1710fab0965d32b883dfcc327c36d3fd38a91357 (diff)
downloadsink-56e38fd874546b54ba34b07c71f65532059c5e7b.tar.gz
sink-56e38fd874546b54ba34b07c71f65532059c5e7b.zip
Get the maildir resource to work.
The subfolder implementation is not according to any standard it seems, but at least it works for now.
Diffstat (limited to 'examples/maildirresource/maildirresource.cpp')
-rw-r--r--examples/maildirresource/maildirresource.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/examples/maildirresource/maildirresource.cpp b/examples/maildirresource/maildirresource.cpp
index f9cc2a4..a19756a 100644
--- a/examples/maildirresource/maildirresource.cpp
+++ b/examples/maildirresource/maildirresource.cpp
@@ -48,7 +48,7 @@ MaildirResource::MaildirResource(const QByteArray &instanceIdentifier, const QSh
48{ 48{
49 addType(ENTITY_TYPE_MAIL, QSharedPointer<MaildirMailAdaptorFactory>::create(), 49 addType(ENTITY_TYPE_MAIL, QSharedPointer<MaildirMailAdaptorFactory>::create(),
50 QVector<Akonadi2::Preprocessor*>() << new DefaultIndexUpdater<Akonadi2::ApplicationDomain::Mail>); 50 QVector<Akonadi2::Preprocessor*>() << new DefaultIndexUpdater<Akonadi2::ApplicationDomain::Mail>);
51 addType(ENTITY_TYPE_MAIL, QSharedPointer<MaildirMailAdaptorFactory>::create(), 51 addType(ENTITY_TYPE_FOLDER, QSharedPointer<MaildirFolderAdaptorFactory>::create(),
52 QVector<Akonadi2::Preprocessor*>() << new DefaultIndexUpdater<Akonadi2::ApplicationDomain::Folder>); 52 QVector<Akonadi2::Preprocessor*>() << new DefaultIndexUpdater<Akonadi2::ApplicationDomain::Folder>);
53 auto config = ResourceConfig::getConfiguration(instanceIdentifier); 53 auto config = ResourceConfig::getConfiguration(instanceIdentifier);
54 mMaildirPath = config.value("path").toString(); 54 mMaildirPath = config.value("path").toString();
@@ -101,7 +101,6 @@ void MaildirResource::synchronizeFolders(Akonadi2::Storage::Transaction &transac
101 101
102 Akonadi2::Storage store(Akonadi2::storageLocation(), mResourceInstanceIdentifier + ".synchronization", Akonadi2::Storage::ReadWrite); 102 Akonadi2::Storage store(Akonadi2::storageLocation(), mResourceInstanceIdentifier + ".synchronization", Akonadi2::Storage::ReadWrite);
103 auto synchronizationTransaction = store.createTransaction(Akonadi2::Storage::ReadWrite); 103 auto synchronizationTransaction = store.createTransaction(Akonadi2::Storage::ReadWrite);
104 Index ridMapping("rid.mapping", synchronizationTransaction);
105 for (const auto folder : folderList) { 104 for (const auto folder : folderList) {
106 const auto remoteId = folder.toUtf8(); 105 const auto remoteId = folder.toUtf8();
107 auto akonadiId = resolveRemoteId(bufferType.toUtf8(), remoteId, synchronizationTransaction); 106 auto akonadiId = resolveRemoteId(bufferType.toUtf8(), remoteId, synchronizationTransaction);
@@ -116,7 +115,7 @@ void MaildirResource::synchronizeFolders(Akonadi2::Storage::Transaction &transac
116 if (!found) { //A new entity 115 if (!found) { //A new entity
117 m_fbb.Clear(); 116 m_fbb.Clear();
118 117
119 KPIM::Maildir md(folder); 118 KPIM::Maildir md(folder, folder == mMaildirPath);
120 119
121 flatbuffers::FlatBufferBuilder entityFbb; 120 flatbuffers::FlatBufferBuilder entityFbb;
122 auto name = m_fbb.CreateString(md.name().toStdString()); 121 auto name = m_fbb.CreateString(md.name().toStdString());
@@ -124,7 +123,7 @@ void MaildirResource::synchronizeFolders(Akonadi2::Storage::Transaction &transac
124 flatbuffers::Offset<flatbuffers::String> parent; 123 flatbuffers::Offset<flatbuffers::String> parent;
125 124
126 if (!md.isRoot()) { 125 if (!md.isRoot()) {
127 auto akonadiId = resolveRemoteId(ENTITY_TYPE_FOLDER, md.parent().path(), transaction); 126 auto akonadiId = resolveRemoteId(ENTITY_TYPE_FOLDER, md.parent().path(), synchronizationTransaction);
128 parent = m_fbb.CreateString(akonadiId.toStdString()); 127 parent = m_fbb.CreateString(akonadiId.toStdString());
129 } 128 }
130 129
@@ -169,13 +168,12 @@ void MaildirResource::synchronizeMails(Akonadi2::Storage::Transaction &transacti
169 168
170 auto listingPath = maildir.pathToCurrent(); 169 auto listingPath = maildir.pathToCurrent();
171 auto entryIterator = QSharedPointer<QDirIterator>::create(listingPath, QDir::Files); 170 auto entryIterator = QSharedPointer<QDirIterator>::create(listingPath, QDir::Files);
172 Trace() << "Looking into " << maildir.pathToNew(); 171 Trace() << "Looking into " << listingPath;
173 172
174 QFileInfo entryInfo; 173 QFileInfo entryInfo;
175 174
176 Akonadi2::Storage store(Akonadi2::storageLocation(), mResourceInstanceIdentifier + ".synchronization", Akonadi2::Storage::ReadWrite); 175 Akonadi2::Storage store(Akonadi2::storageLocation(), mResourceInstanceIdentifier + ".synchronization", Akonadi2::Storage::ReadWrite);
177 auto synchronizationTransaction = store.createTransaction(Akonadi2::Storage::ReadWrite); 176 auto synchronizationTransaction = store.createTransaction(Akonadi2::Storage::ReadWrite);
178 Index ridMapping("rid.mapping", synchronizationTransaction);
179 177
180 while (entryIterator->hasNext()) { 178 while (entryIterator->hasNext()) {
181 QString filePath = entryIterator->next(); 179 QString filePath = entryIterator->next();
@@ -207,7 +205,7 @@ void MaildirResource::synchronizeMails(Akonadi2::Storage::Transaction &transacti
207 auto sender = m_fbb.CreateString(msg->from(true)->asUnicodeString().toStdString()); 205 auto sender = m_fbb.CreateString(msg->from(true)->asUnicodeString().toStdString());
208 auto senderName = m_fbb.CreateString(msg->from(true)->asUnicodeString().toStdString()); 206 auto senderName = m_fbb.CreateString(msg->from(true)->asUnicodeString().toStdString());
209 auto date = m_fbb.CreateString(msg->date(true)->dateTime().toString().toStdString()); 207 auto date = m_fbb.CreateString(msg->date(true)->dateTime().toString().toStdString());
210 auto folder = m_fbb.CreateString(resolveRemoteId(ENTITY_TYPE_FOLDER, path, transaction).toStdString()); 208 auto folder = m_fbb.CreateString(resolveRemoteId(ENTITY_TYPE_FOLDER, path, synchronizationTransaction).toStdString());
211 auto mimeMessage = m_fbb.CreateString(filepath.toStdString()); 209 auto mimeMessage = m_fbb.CreateString(filepath.toStdString());
212 210
213 auto builder = Akonadi2::ApplicationDomain::Buffer::MailBuilder(m_fbb); 211 auto builder = Akonadi2::ApplicationDomain::Buffer::MailBuilder(m_fbb);