diff options
author | Michael Nosov <Michael.Nosov@harman.com> | 2018-06-25 15:38:45 +0300 |
---|---|---|
committer | Michael Nosov <Michael.Nosov@harman.com> | 2018-08-02 07:02:38 +0000 |
commit | 13e7fcb908374043bd097f17ab4f2e18359d49b7 (patch) | |
tree | 2bb2d4be7edabc09acf990ca5597a5024382b2de | |
parent | e310741646af346c79bbed92053dc0965c7257b5 (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.cpp | 22 |
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; } |