summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/maildirresource/libmaildir/maildir.cpp13
-rw-r--r--examples/maildirresource/maildirresource.cpp12
2 files changed, 13 insertions, 12 deletions
diff --git a/examples/maildirresource/libmaildir/maildir.cpp b/examples/maildirresource/libmaildir/maildir.cpp
index 37bf6ea..67a2d2d 100644
--- a/examples/maildirresource/libmaildir/maildir.cpp
+++ b/examples/maildirresource/libmaildir/maildir.cpp
@@ -402,11 +402,14 @@ Maildir Maildir::parent() const
402 return Maildir(); 402 return Maildir();
403 QDir dir(d->path); 403 QDir dir(d->path);
404 dir.cdUp(); 404 dir.cdUp();
405 if (!dir.dirName().startsWith(QLatin1Char('.')) || !dir.dirName().endsWith(QLatin1String(".directory"))) 405 //FIXME Figure out how this is acutally supposed to work
406 return Maildir(); 406 //There seem to be a bunch of conflicting standards, and nesting folders is apparently not what we're supposed to be doing,
407 const QString parentName = dir.dirName().mid(1, dir.dirName().size() - 11); 407 //but it works for the time being.
408 dir.cdUp(); 408 // if (!dir.dirName().startsWith(QLatin1Char('.')) || !dir.dirName().endsWith(QLatin1String(".directory")))
409 dir.cd(parentName); 409 // return Maildir();
410 // const QString parentName = dir.dirName().mid(1, dir.dirName().size() - 11);
411 // dir.cdUp();
412 // dir.cd(parentName);
410 return Maildir (dir.path()); 413 return Maildir (dir.path());
411} 414}
412 415
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);