Merge remote-tracking branch 'origin/6.0' into 7.0

Change-Id: I8b1cdfb72b0e3e583c94447f13d0161b99fa93c1
This commit is contained in:
Eike Ziller
2022-01-27 09:37:39 +01:00
3 changed files with 33 additions and 18 deletions

View File

@@ -35,7 +35,7 @@ jobs:
} }
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v2
- name: Download Ninja and CMake - name: Download Ninja and CMake
shell: cmake -P {0} shell: cmake -P {0}

View File

@@ -1556,25 +1556,16 @@ void DesignerActionManager::createDefaultAddResourceHandler()
// Having a single image type category creates too large of a filter, so we split images into // Having a single image type category creates too large of a filter, so we split images into
// categories according to their mime types // categories according to their mime types
const QList<QByteArray> mimeTypes = QImageReader::supportedMimeTypes();
auto transformer = [](const QByteArray& format) -> QString { return QString("*.") + format; }; auto transformer = [](const QByteArray& format) -> QString { return QString("*.") + format; };
QHash<QByteArray, QStringList> imageFormats; auto imageFormats = Utils::transform(QImageReader::supportedImageFormats(), transformer);
for (const auto &mimeType : mimeTypes) imageFormats.push_back("*.hdr");
imageFormats.insert(mimeType, Utils::transform(QImageReader::imageFormatsForMimeType(mimeType), transformer)); imageFormats.push_back("*.ktx");
imageFormats.insert("image/vnd.radiance", {"*.hdr"});
imageFormats.insert("image/ktx", {"*.ktx"});
// The filters will be displayed in reverse order to these lists in file dialog, // The filters will be displayed in reverse order to these lists in file dialog,
// so declare most common types last // so declare most common types last
QHash<QByteArray, QStringList>::const_iterator i = imageFormats.constBegin(); registerHandlers(imageFormats,
while (i != imageFormats.constEnd()) { ModelNodeOperations::addImageToProject,
registerHandlers(i.value(), ComponentCoreConstants::addImagesDisplayString);
ModelNodeOperations::addImageToProject,
QObject::tr("%1: %2")
.arg(ComponentCoreConstants::addImagesDisplayString)
.arg(QString::fromLatin1(i.key())));
++i;
}
registerHandlers({"*.otf", "*.ttf"}, registerHandlers({"*.otf", "*.ttf"},
ModelNodeOperations::addFontToProject, ModelNodeOperations::addFontToProject,
ComponentCoreConstants::addFontsDisplayString); ComponentCoreConstants::addFontsDisplayString);

View File

@@ -612,6 +612,19 @@ void ItemLibraryWidget::addImportForItem(const QString &importUrl)
m_model->changeImports({import}, {}); m_model->changeImports({import}, {});
} }
static QHash<QByteArray, QStringList> allImageFormats()
{
const QList<QByteArray> mimeTypes = QImageReader::supportedMimeTypes();
auto transformer = [](const QByteArray& format) -> QString { return QString("*.") + format; };
QHash<QByteArray, QStringList> 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) void ItemLibraryWidget::addResources(const QStringList &files)
{ {
DesignDocument *document = QmlDesignerPlugin::instance()->currentDesignDocument(); DesignDocument *document = QmlDesignerPlugin::instance()->currentDesignDocument();
@@ -637,8 +650,19 @@ void ItemLibraryWidget::addResources(const QStringList &files)
QStringList filters { tr("All Files (%1)").arg("*.*") }; QStringList filters { tr("All Files (%1)").arg("*.*") };
QString filterTemplate = "%1 (%2)"; QString filterTemplate = "%1 (%2)";
for (const QString &key : qAsConst(sortedKeys)) for (const QString &key : qAsConst(sortedKeys)) {
filters.append(filterTemplate.arg(key, map.values(key).join(' '))); const QStringList values = map.values(key);
if (values.contains("*.png")) { // Avoid long filter for images by splitting
const QHash<QByteArray, QStringList> imageFormats = allImageFormats();
QHash<QByteArray, QStringList>::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; static QString lastDir;
const QString currentDir = lastDir.isEmpty() ? document->fileName().parentDir().toString() : lastDir; const QString currentDir = lastDir.isEmpty() ? document->fileName().parentDir().toString() : lastDir;