summaryrefslogtreecommitdiffstats
path: root/src/imports/studio3d/q3dsstudio3ditem.cpp
diff options
context:
space:
mode:
authorPasi Keränen <pasi.keranen@qt.io>2019-01-25 15:16:54 +0200
committerPasi Keränen <pasi.keranen@qt.io>2019-02-06 12:38:42 +0000
commit50565141cceb780bba1805fc7aab307a34ba27d1 (patch)
tree1954017cc1d8302253af14768f456ce2a626a6e0 /src/imports/studio3d/q3dsstudio3ditem.cpp
parent8ca98cea890c52a6576a1a277f2acffde9ef965e (diff)
Add variant filtering
Add variant filtering to loading of presentations. [ChangeLog][QtStudio3D][Support for variants] Qt 3D Studio runtime now supports loading presentations containing variant tags. Task-number: QT3DS-2662 Change-Id: Id5637d23f5e9d178b8c40a3bb7c8b8950297548f Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/imports/studio3d/q3dsstudio3ditem.cpp')
-rw-r--r--src/imports/studio3d/q3dsstudio3ditem.cpp32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/imports/studio3d/q3dsstudio3ditem.cpp b/src/imports/studio3d/q3dsstudio3ditem.cpp
index e5d94bb..b733b81 100644
--- a/src/imports/studio3d/q3dsstudio3ditem.cpp
+++ b/src/imports/studio3d/q3dsstudio3ditem.cpp
@@ -365,17 +365,17 @@ void Q3DSStudio3DItem::componentComplete()
QQuickItem::componentComplete();
}
-void Q3DSStudio3DItem::handlePresentationSource(const QUrl &source,
+void Q3DSStudio3DItem::handlePresentationSource(const Q3DSSourceInfo &newSourceInfo,
SourceFlags flags,
const QVector<Q3DSInlineQmlSubPresentation *> &inlineSubPres)
{
- if (source == m_source)
+ if (m_sourceInfo == newSourceInfo)
return;
- if (!m_source.isEmpty())
+ if (!m_sourceInfo.isEmpty())
releaseEngineAndRenderer();
- m_source = source;
+ m_sourceInfo = newSourceInfo;
m_sourceFlags = flags;
m_inlineQmlSubPresentations = inlineSubPres;
@@ -385,7 +385,7 @@ void Q3DSStudio3DItem::handlePresentationSource(const QUrl &source,
void Q3DSStudio3DItem::handlePresentationReload()
{
- if (m_source.isEmpty())
+ if (m_sourceInfo.isEmpty())
return;
releaseEngineAndRenderer();
@@ -487,15 +487,17 @@ void Q3DSStudio3DItem::createEngine()
m_needsPresReadySignal = true;
- const QString fn = QQmlFile::urlToLocalFileOrQrc(m_source);
- qCDebug(lcStudio3D) << "source is now" << fn;
+ qCDebug(lcStudio3D) << "source is now" << m_sourceInfo.fileName();
+ if (!m_sourceInfo.variantList().isEmpty())
+ qCDebug(lcStudio3D) << "loading variants " << m_sourceInfo.variantList();
+
const QSize sz(width(), height());
const qreal dpr = window()->effectiveDevicePixelRatio();
if (!sz.isEmpty())
m_engine->resize(sz, dpr);
QString err;
- m_sourceLoaded = m_engine->setSource(fn, &err, m_inlineQmlSubPresentations);
+ m_sourceLoaded = m_engine->setSource(m_sourceInfo, &err, m_inlineQmlSubPresentations);
if (m_sourceLoaded) {
if (!m_error.isEmpty()) {
m_error.clear();
@@ -510,7 +512,17 @@ void Q3DSStudio3DItem::createEngine()
// cannot start() here, that must be deferred
} else {
- qWarning("Studio3D: Failed to load %s\n%s", qPrintable(fn), qPrintable(err));
+ if (m_sourceInfo.variantList().isEmpty()) {
+ qWarning("Studio3D: Failed to load %s\n%s",
+ qPrintable(m_sourceInfo.fileName()),
+ qPrintable(err));
+ } else {
+ qWarning("Studio3D: Failed to load %s using variants %s\n%s ",
+ qPrintable(m_sourceInfo.fileName()),
+ qPrintable(m_sourceInfo.variantList().join(QLatin1Char(' '))),
+ qPrintable(err));
+ }
+
m_error = err;
emit errorChanged();
}
@@ -611,7 +623,7 @@ void Q3DSStudio3DItem::itemChange(QQuickItem::ItemChange change,
QMetaObject::invokeMethod(this, "destroyEngine");
}, Qt::DirectConnection);
- if (!m_source.isEmpty() && !m_engine)
+ if (!m_sourceInfo.isEmpty() && !m_engine)
createEngine();
if (m_engine && m_separateViewSetupPending)