From c2778b2301ef52c9f721e355f6734acaba4dc8d0 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Tue, 14 May 2024 14:59:55 +0300 Subject: [PATCH] QmlDesigner: Don't override existing content lib user textures Better solution to ask for overriding or not is for the future. Fixes: QDS-12626 Change-Id: Ib147121d3b9cb783f45a79a96fa432d371750a0e Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Miikka Heikkinen --- .../contentlibrary/contentlibraryview.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp index 2f32a36b973..d010bc76ba3 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp @@ -631,19 +631,28 @@ void ContentLibraryView::addLibAssets(const QStringList &paths) auto bundlePath = Utils::FilePath::fromString(Paths::bundlesPathSetting() + "/User/textures"); QStringList pathsInBundle; + const QStringList existingTextures = Utils::transform(bundlePath.dirEntries(QDir::Files), + [](const Utils::FilePath &path) { + return path.fileName(); + }); + for (const QString &path : paths) { + auto assetFilePath = Utils::FilePath::fromString(path); + if (existingTextures.contains(assetFilePath.fileName())) + continue; + Asset asset(path); - auto assetPath = Utils::FilePath::fromString(path); // save icon - QString iconSavePath = bundlePath.pathAppended("icons/" + assetPath.baseName() + ".png").toString(); + QString iconSavePath = bundlePath.pathAppended("icons/" + assetFilePath.baseName() + ".png") + .toString(); QPixmap icon = asset.pixmap({120, 120}); bool iconSaved = icon.save(iconSavePath); if (!iconSaved) qWarning() << __FUNCTION__ << "icon save failed"; // save asset - auto result = assetPath.copyFile(bundlePath.pathAppended(asset.fileName())); + auto result = assetFilePath.copyFile(bundlePath.pathAppended(asset.fileName())); if (!result) qWarning() << __FUNCTION__ << result.error();