diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-04-21 17:31:22 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-04-21 17:44:30 +0200 |
commit | fcc89a201a06ede057dae86d4591199bf69fab50 (patch) | |
tree | b1aa85322f325fcf2055c0ddf8f7ffcafdf5002b /examples/imapresource/imapresource.cpp | |
parent | 0d9d054be6a1716abff20a49e44d94b9b79ab107 (diff) | |
download | sink-fcc89a201a06ede057dae86d4591199bf69fab50.tar.gz sink-fcc89a201a06ede057dae86d4591199bf69fab50.zip |
Make sure we always have a complete hierarchy from the IMAP server
Diffstat (limited to 'examples/imapresource/imapresource.cpp')
-rw-r--r-- | examples/imapresource/imapresource.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index 0b3dcf5..8577b8c 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp | |||
@@ -119,6 +119,8 @@ public: | |||
119 | QByteArray createFolder(const Imap::Folder &f) | 119 | QByteArray createFolder(const Imap::Folder &f) |
120 | { | 120 | { |
121 | const auto parentFolderRid = parentRid(f); | 121 | const auto parentFolderRid = parentRid(f); |
122 | bool isToplevel = parentFolderRid.isEmpty(); | ||
123 | |||
122 | SinkTraceCtx(mLogCtx) << "Creating folder: " << f.name() << parentFolderRid << f.flags; | 124 | SinkTraceCtx(mLogCtx) << "Creating folder: " << f.name() << parentFolderRid << f.flags; |
123 | 125 | ||
124 | const auto remoteId = folderRid(f); | 126 | const auto remoteId = folderRid(f); |
@@ -126,22 +128,20 @@ public: | |||
126 | folder.setName(f.name()); | 128 | folder.setName(f.name()); |
127 | folder.setIcon("folder"); | 129 | folder.setIcon("folder"); |
128 | folder.setEnabled(f.subscribed); | 130 | folder.setEnabled(f.subscribed); |
129 | QHash<QByteArray, Query::Comparator> mergeCriteria; | ||
130 | auto specialPurpose = [&] { | 131 | auto specialPurpose = [&] { |
131 | if (hasSpecialPurposeFlag(f.flags)) { | 132 | if (hasSpecialPurposeFlag(f.flags)) { |
132 | return getSpecialPurposeType(f.flags); | 133 | return getSpecialPurposeType(f.flags); |
133 | } else if (SpecialPurpose::isSpecialPurposeFolderName(f.name()) && parentFolderRid.isEmpty()) { | 134 | } else if (SpecialPurpose::isSpecialPurposeFolderName(f.name()) && isToplevel) { |
134 | return SpecialPurpose::getSpecialPurposeType(f.name()); | 135 | return SpecialPurpose::getSpecialPurposeType(f.name()); |
135 | } | 136 | } |
136 | return QByteArray{}; | 137 | return QByteArray{}; |
137 | }(); | 138 | }(); |
138 | if (!specialPurpose.isEmpty()) { | 139 | if (!specialPurpose.isEmpty()) { |
139 | folder.setSpecialPurpose(QByteArrayList() << specialPurpose); | 140 | folder.setSpecialPurpose(QByteArrayList() << specialPurpose); |
140 | mergeCriteria.insert(ApplicationDomain::Folder::SpecialPurpose::name, Query::Comparator(specialPurpose, Query::Comparator::Contains)); | ||
141 | } | 141 | } |
142 | 142 | ||
143 | if (!parentFolderRid.isEmpty()) { | 143 | if (!isToplevel) { |
144 | folder.setParent(syncStore().resolveRemoteId(ENTITY_TYPE_FOLDER, parentFolderRid)); | 144 | folder.setParent(syncStore().resolveRemoteId(ApplicationDomain::Folder::name, parentFolderRid)); |
145 | } | 145 | } |
146 | createOrModify(ApplicationDomain::getTypeName<ApplicationDomain::Folder>(), remoteId, folder); | 146 | createOrModify(ApplicationDomain::getTypeName<ApplicationDomain::Folder>(), remoteId, folder); |
147 | return remoteId; | 147 | return remoteId; |