From eb6c831fdcaff4201127585b8c7090d9f60b9ffc Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 8 May 2016 13:47:35 +0200 Subject: Extracted createFolder function --- examples/maildirresource/maildirresource.cpp | 44 ++++++++++++---------------- examples/maildirresource/maildirresource.h | 1 + 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/examples/maildirresource/maildirresource.cpp b/examples/maildirresource/maildirresource.cpp index 4505373..f4833a8 100644 --- a/examples/maildirresource/maildirresource.cpp +++ b/examples/maildirresource/maildirresource.cpp @@ -98,20 +98,8 @@ MaildirResource::MaildirResource(const QByteArray &instanceIdentifier, const QSh auto transaction = mainStore->createTransaction(Sink::Storage::ReadOnly); auto synchronizationTransaction = syncStore->createTransaction(Sink::Storage::ReadWrite); - auto folderPath = mDraftsFolder; - auto remoteId = folderPath.toUtf8(); - auto bufferType = ENTITY_TYPE_FOLDER; - KPIM::Maildir md(folderPath, folderPath == mMaildirPath); - Sink::ApplicationDomain::Folder folder; - folder.setProperty("name", md.name()); - folder.setProperty("icon", "folder"); - - if (!md.isRoot()) { - folder.setProperty("parent", resolveRemoteId(ENTITY_TYPE_FOLDER, md.parent().path().toUtf8(), synchronizationTransaction)); - } - createOrModify(transaction, synchronizationTransaction, *mFolderAdaptorFactory, bufferType, remoteId, folder); - - auto draftsFolderLocalId = resolveRemoteId(ENTITY_TYPE_FOLDER, mDraftsFolder.toUtf8(), synchronizationTransaction); + auto remoteId = createFolder(mDraftsFolder, "folder", transaction, synchronizationTransaction); + auto draftsFolderLocalId = resolveRemoteId(ENTITY_TYPE_FOLDER, remoteId, synchronizationTransaction); synchronizationTransaction.commit(); folderUpdater->mDraftsFolder = draftsFolderLocalId; @@ -132,6 +120,22 @@ static QStringList listRecursive( const QString &root, const KPIM::Maildir &dir return list; } +QByteArray MaildirResource::createFolder(const QString &folderPath, const QByteArray &icon, Sink::Storage::Transaction &transaction, Sink::Storage::Transaction &synchronizationTransaction) +{ + auto remoteId = folderPath.toUtf8(); + auto bufferType = ENTITY_TYPE_FOLDER; + KPIM::Maildir md(folderPath, folderPath == mMaildirPath); + Sink::ApplicationDomain::Folder folder; + folder.setProperty("name", md.name()); + folder.setProperty("icon", "folder"); + + if (!md.isRoot()) { + folder.setProperty("parent", resolveRemoteId(ENTITY_TYPE_FOLDER, md.parent().path().toUtf8(), synchronizationTransaction)); + } + createOrModify(transaction, synchronizationTransaction, *mFolderAdaptorFactory, bufferType, remoteId, folder); + return remoteId; +} + QStringList MaildirResource::listAvailableFolders() { KPIM::Maildir dir(mMaildirPath, true); @@ -168,17 +172,7 @@ void MaildirResource::synchronizeFolders(Sink::Storage::Transaction &transaction ); for (const auto folderPath : folderList) { - const auto remoteId = folderPath.toUtf8(); - Trace() << "Processing folder " << remoteId; - KPIM::Maildir md(folderPath, folderPath == mMaildirPath); - - Sink::ApplicationDomain::Folder folder; - folder.setProperty("name", md.name()); - folder.setProperty("icon", "folder"); - if (!md.isRoot()) { - folder.setProperty("parent", resolveRemoteId(ENTITY_TYPE_FOLDER, md.parent().path().toUtf8(), synchronizationTransaction)); - } - createOrModify(transaction, synchronizationTransaction, *mFolderAdaptorFactory, bufferType, remoteId, folder); + createFolder(folderPath, "folder", transaction, synchronizationTransaction); } } diff --git a/examples/maildirresource/maildirresource.h b/examples/maildirresource/maildirresource.h index 2afd0ed..33ba3ae 100644 --- a/examples/maildirresource/maildirresource.h +++ b/examples/maildirresource/maildirresource.h @@ -54,6 +54,7 @@ private: void synchronizeFolders(Sink::Storage::Transaction &transaction, Sink::Storage::Transaction &synchronizationTransaction); void synchronizeMails(Sink::Storage::Transaction &transaction, Sink::Storage::Transaction &synchronizationTransaction, const QString &folder); + QByteArray createFolder(const QString &folderPath, const QByteArray &icon, Sink::Storage::Transaction &transaction, Sink::Storage::Transaction &synchronizationTransaction); QStringList listAvailableFolders(); QString mMaildirPath; QString mDraftsFolder; -- cgit v1.2.3