From cd29875b764686d1e643a7fa6322cb70ea3293e8 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 26 Apr 2016 16:09:39 +0200 Subject: [PATCH] Folder: Generate an alias for new folders Before commit 1a51b6718a345f1e5f28dd1f4e0c04bdaeeb5357, the wizard was making sure folder had an alias but this is no longer the case. So generate still an unique alias. Alias is not used in the UI any longer, it's just use for internal purposes. For issue #4737 --- src/gui/accountsettings.cpp | 1 - src/gui/folderman.cpp | 11 +++++++++-- src/gui/folderman.h | 2 +- src/gui/owncloudsetupwizard.cpp | 7 ------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index dfb4654acc..608cd86733 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -277,7 +277,6 @@ void AccountSettings::slotFolderWizardAccepted() qDebug() << "* Folder wizard completed"; FolderDefinition definition; - definition.alias = folderWizard->field(QLatin1String("alias")).toString(); definition.localPath = FolderDefinition::prepareLocalPath( folderWizard->field(QLatin1String("sourceFolder")).toString()); definition.targetPath = folderWizard->property("targetPath").toString(); diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 8c5168171a..ec3c63ccf8 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -200,7 +200,7 @@ int FolderMan::setupFolders() foreach (const auto& folderAlias, settings->childGroups()) { FolderDefinition folderDefinition; if (FolderDefinition::load(*settings, folderAlias, &folderDefinition)) { - Folder* f = addFolderInternal(folderDefinition, account.data()); + Folder* f = addFolderInternal(std::move(folderDefinition), account.data()); if (f) { slotScheduleSync(f); emit folderSyncStateChange(f); @@ -777,8 +777,15 @@ Folder* FolderMan::addFolder(AccountState* accountState, const FolderDefinition& return folder; } -Folder* FolderMan::addFolderInternal(const FolderDefinition& folderDefinition, AccountState* accountState) +Folder* FolderMan::addFolderInternal(FolderDefinition folderDefinition, AccountState* accountState) { + auto alias = folderDefinition.alias; + int count = 0; + while (folderDefinition.alias.isEmpty() || _folderMap.contains(folderDefinition.alias)) { + // There is already a folder configured with this name and folder names need to be unique + folderDefinition.alias = alias + QString::number(++count); + } + auto folder = new Folder(folderDefinition, accountState, this ); qDebug() << "Adding folder to Folder Map " << folder; diff --git a/src/gui/folderman.h b/src/gui/folderman.h index 124863f2b4..e597e52d44 100644 --- a/src/gui/folderman.h +++ b/src/gui/folderman.h @@ -201,7 +201,7 @@ private: /** Adds a new folder, does not add it to the account settings and * does not set an account on the new folder. */ - Folder* addFolderInternal(const FolderDefinition& folderDefinition, AccountState* accountState); + Folder* addFolderInternal(FolderDefinition folderDefinition, AccountState* accountState); /* unloads a folder object, does not delete it */ void unloadFolder( Folder * ); diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 865674a0e9..8f97188130 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -459,13 +459,6 @@ void OwncloudSetupWizard::slotAssistantFinished( int result ) if (!startFromScratch || ensureStartFromScratch(localFolder)) { qDebug() << "Adding folder definition for" << localFolder << _remoteFolder; FolderDefinition folderDefinition; - auto alias = Theme::instance()->appName(); - int count = 0; - folderDefinition.alias = alias; - while (folderMan->folder(folderDefinition.alias)) { - // There is already a folder configured with this name and folder names need to be unique - folderDefinition.alias = alias + QString::number(++count); - } folderDefinition.localPath = localFolder; folderDefinition.targetPath = _remoteFolder; folderDefinition.ignoreHiddenFiles = folderMan->ignoreHiddenFiles();