From 3e1095076e2ecbf99115bce18c23ed194cc0810e Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 26 Jan 2022 13:31:46 +0100 Subject: [PATCH 1/2] QmlDesigner: Split image category only for dialog If we split the categories on the action level, then a separate dialog is opened for every image suffix/type. Task-number: QDS-6076 Change-Id: Ie80203cebca41e8dee4cb5c091b1163a9fde6e26 Reviewed-by: Miikka Heikkinen --- .../componentcore/designeractionmanager.cpp | 21 ++++---------- .../itemlibrary/itemlibrarywidget.cpp | 28 +++++++++++++++++-- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp index 89fa1d39d19..e160f030dbf 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp @@ -1556,25 +1556,16 @@ void DesignerActionManager::createDefaultAddResourceHandler() // Having a single image type category creates too large of a filter, so we split images into // categories according to their mime types - const QList mimeTypes = QImageReader::supportedMimeTypes(); auto transformer = [](const QByteArray& format) -> QString { return QString("*.") + format; }; - QHash imageFormats; - for (const auto &mimeType : mimeTypes) - imageFormats.insert(mimeType, Utils::transform(QImageReader::imageFormatsForMimeType(mimeType), transformer)); - imageFormats.insert("image/vnd.radiance", {"*.hdr"}); - imageFormats.insert("image/ktx", {"*.ktx"}); + auto imageFormats = Utils::transform(QImageReader::supportedImageFormats(), transformer); + imageFormats.push_back("*.hdr"); + imageFormats.push_back("*.ktx"); // The filters will be displayed in reverse order to these lists in file dialog, // so declare most common types last - QHash::const_iterator i = imageFormats.constBegin(); - while (i != imageFormats.constEnd()) { - registerHandlers(i.value(), - ModelNodeOperations::addImageToProject, - QObject::tr("%1: %2") - .arg(ComponentCoreConstants::addImagesDisplayString) - .arg(QString::fromLatin1(i.key()))); - ++i; - } + registerHandlers(imageFormats, + ModelNodeOperations::addImageToProject, + ComponentCoreConstants::addImagesDisplayString); registerHandlers({"*.otf", "*.ttf"}, ModelNodeOperations::addFontToProject, ComponentCoreConstants::addFontsDisplayString); diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 75818fb42a4..10913090b46 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -596,6 +596,19 @@ void ItemLibraryWidget::addImportForItem(const QString &importUrl) m_model->changeImports({import}, {}); } +static QHash allImageFormats() +{ + const QList mimeTypes = QImageReader::supportedMimeTypes(); + auto transformer = [](const QByteArray& format) -> QString { return QString("*.") + format; }; + QHash imageFormats; + for (const auto &mimeType : mimeTypes) + imageFormats.insert(mimeType, Utils::transform(QImageReader::imageFormatsForMimeType(mimeType), transformer)); + imageFormats.insert("image/vnd.radiance", {"*.hdr"}); + imageFormats.insert("image/ktx", {"*.ktx"}); + + return imageFormats; +} + void ItemLibraryWidget::addResources(const QStringList &files) { DesignDocument *document = QmlDesignerPlugin::instance()->currentDesignDocument(); @@ -621,8 +634,19 @@ void ItemLibraryWidget::addResources(const QStringList &files) QStringList filters { tr("All Files (%1)").arg("*.*") }; QString filterTemplate = "%1 (%2)"; - for (const QString &key : qAsConst(sortedKeys)) - filters.append(filterTemplate.arg(key, map.values(key).join(' '))); + for (const QString &key : qAsConst(sortedKeys)) { + const QStringList values = map.values(key); + if (values.contains("*.png")) { // Avoid long filter for images by splitting + const QHash imageFormats = allImageFormats(); + QHash::const_iterator i = imageFormats.constBegin(); + while (i != imageFormats.constEnd()) { + filters.append(filterTemplate.arg(key + QString::fromLatin1(i.key()), i.value().join(' '))); + ++i; + } + } else { + filters.append(filterTemplate.arg(key, values.join(' '))); + } + } static QString lastDir; const QString currentDir = lastDir.isEmpty() ? document->fileName().parentDir().toString() : lastDir; From f9de2f2b23923201e3443c63b2ebe33b41ab0eb1 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 26 Jan 2022 16:34:57 +0100 Subject: [PATCH 2/2] Qt Creator plugin wizard: Bump checkout github action to v2 v1 has security concerns Change-Id: Ia88cf55197a64af819abe07bdac698a29bec8aeb Reviewed-by: Cristian Adam Reviewed-by: --- .../wizards/qtcreatorplugin/github_workflows_build_cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/github_workflows_build_cmake.yml b/share/qtcreator/templates/wizards/qtcreatorplugin/github_workflows_build_cmake.yml index b50b67e9250..53c6152ee8b 100644 --- a/share/qtcreator/templates/wizards/qtcreatorplugin/github_workflows_build_cmake.yml +++ b/share/qtcreator/templates/wizards/qtcreatorplugin/github_workflows_build_cmake.yml @@ -35,7 +35,7 @@ jobs: } steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Download Ninja and CMake shell: cmake -P {0}