diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp index 09ec468905d..d3a701aa5f2 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarymodel.cpp @@ -154,20 +154,15 @@ bool AssetsLibraryModel::renameFolder(const QString &folderPath, const QString & QString AssetsLibraryModel::addNewFolder(const QString &folderPath) { - Utils::FilePath dir = Utils::FilePath::fromString(folderPath); - Utils::FilePath parentDir = dir.parentDir(); + Utils::FilePath uniqueDirPath = Utils::FilePath::fromString(UniqueName::getPath(folderPath)); - QString uniqueFolderName = UniqueName::get(dir.fileName(), [&] (const QString &folderName) { - return !parentDir.pathAppended(folderName).exists(); - }); - - auto res = parentDir.pathAppended(uniqueFolderName).ensureWritableDir(); + auto res = uniqueDirPath.ensureWritableDir(); if (!res.has_value()) { qWarning() << __FUNCTION__ << res.error(); return {}; } - return uniqueFolderName; + return uniqueDirPath.path(); } bool AssetsLibraryModel::urlPathExistsInModel(const QUrl &url) const diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp index 9c46ace22d0..0324abe32e0 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp @@ -176,13 +176,9 @@ void AssetsLibraryWidget::deleteSelectedAssets() QString AssetsLibraryWidget::getUniqueEffectPath(const QString &parentFolder, const QString &effectName) { QString effectsDir = ModelNodeOperations::getEffectsDefaultDirectory(parentFolder); - QString effectPathTemplate = effectsDir + QLatin1String("/%1.qep"); + QString effectPath = QLatin1String("%1/%2.qep").arg(effectsDir, effectName); - QString uniqueName = UniqueName::get(effectName, [&] (const QString &name) { - return !QFile::exists(effectPathTemplate.arg(name)); - }); - - return effectPathTemplate.arg(uniqueName); + return UniqueName::getPath(effectPath); } bool AssetsLibraryWidget::createNewEffect(const QString &effectPath, bool openInEffectComposer) diff --git a/src/plugins/qmldesigner/utils/uniquename.cpp b/src/plugins/qmldesigner/utils/uniquename.cpp index ef6d3d8e5e2..e77814c97cf 100644 --- a/src/plugins/qmldesigner/utils/uniquename.cpp +++ b/src/plugins/qmldesigner/utils/uniquename.cpp @@ -3,17 +3,22 @@ #include "uniquename.h" +#include #include namespace QmlDesigner { /** - * @brief Gets a unique name from a give name - * @param oldName input name - * @param predicate function to check if the name is unique. Retuns true if name is unique - * @return a unique name + * @brief Generates a unique name based on the provided name. + * + * This method iteratively generates a name by appending suffixes until a unique name is found. + * The uniqueness of the generated name is determined by the provided predicate function. + * + * @param oldName The original name to be made unique. + * @param predicate A function that checks if a name is unique. Returns true if the name is unique, + * false otherwise. + * @return A unique name derived from the provided name. */ -// static QString UniqueName::get(const QString &oldName, std::function predicate) { QString newName = oldName; @@ -23,29 +28,59 @@ QString UniqueName::get(const QString &oldName, std::function predicate); + static QString getPath(const QString &oldName); private: static QString nextName(const QString &oldName);