diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/maildirresource/libmaildir/maildir.cpp | 13 | ||||
-rw-r--r-- | examples/maildirresource/maildirresource.cpp | 12 |
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); |