summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Nosov <Michael.Nosov@harman.com>2018-06-25 15:38:45 +0300
committerMichael Nosov <Michael.Nosov@harman.com>2018-08-02 07:02:38 +0000
commit13e7fcb908374043bd097f17ab4f2e18359d49b7 (patch)
tree2bb2d4be7edabc09acf990ca5597a5024382b2de
parente310741646af346c79bbed92053dc0965c7257b5 (diff)
[qmf] IMAP: fix for rename top level folder
When renaming top level folder - descendant folder paths were not updated Scenario: for IMAP account, have the following hierarchy: Folder1 -> Folder2 If delimiter is "/", then path for Folder2 shall be Folder1/Folder2 Step 1: rename Folder1 to Folder1_new Step 2: try to rename Folder2 to Folder2_new. Expected result: Folder2 will be renamed Actual result: Folder2 will not be renamed, because its full path is still Folder1/Folder2, not Folder1_new/Folder2 IMAP error will be like "NO Unknown source folder. (Failure)" Change-Id: Ia3a78ffd38c44b7babda93ed554b914cb8bcc47d Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
-rw-r--r--src/plugins/messageservices/imap/imapstrategy.cpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/plugins/messageservices/imap/imapstrategy.cpp b/src/plugins/messageservices/imap/imapstrategy.cpp
index 22e055c6..c11b11f2 100644
--- a/src/plugins/messageservices/imap/imapstrategy.cpp
+++ b/src/plugins/messageservices/imap/imapstrategy.cpp
@@ -835,19 +835,19 @@ void ImapRenameFolderStrategy::folderRenamed(ImapStrategyContextBase *context, c
name = newPath;
} else {
name = newPath.section(delimiter, -1, -1);
+ }
+ QMailFolderKey affectedFolderKey(QMailFolderKey::ancestorFolderIds(folder.id()));
+ QMailFolderIdList affectedFolders = QMailStore::instance()->queryFolders(affectedFolderKey);
- QMailFolderKey affectedFolderKey(QMailFolderKey::ancestorFolderIds(folder.id()));
- QMailFolderIdList affectedFolders = QMailStore::instance()->queryFolders(affectedFolderKey);
-
- while(!affectedFolders.isEmpty()) {
- QMailFolder childFolder(affectedFolders.takeFirst());
- QString path = childFolder.path();
- path.replace(0, folder.path().length(), newPath);
- childFolder.setPath(path);
- if(!QMailStore::instance()->updateFolder(&childFolder))
- qWarning() << "Unable to locally change path of a subfolder";
- }
+ while (!affectedFolders.isEmpty()) {
+ QMailFolder childFolder(affectedFolders.takeFirst());
+ QString path = childFolder.path();
+ path.replace(0, folder.path().length(), newPath);
+ childFolder.setPath(path);
+ if (!QMailStore::instance()->updateFolder(&childFolder))
+ qWarning() << "Unable to locally change path of a subfolder";
}
+
} else {
name = newPath;
}