aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickcontrols2/qquickstyleplugin.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-05-07 15:40:23 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2018-05-12 07:34:31 +0000
commitd2897a6c85d46d41ea531ac66345cfdec230e7c9 (patch)
tree0bf8dc4ad84d9c4398aacb020c9c3f9e1832baca /src/quickcontrols2/qquickstyleplugin.cpp
parent58d2a39e4715f5ffa14248c87dfb4f5dc9888ff4 (diff)
QQuickStylePlugin: prepare for Qt Quick Compiler
Don't hardcode the URL (QRC in static vs. FS in dynamic), but make use of QQuickFileSelector so the appropriate URL gets chosen "for free". This way, we can later add Qt Quick Compiler support for the internal QML files, such as CheckIndicator.qml. Change-Id: Ie1c55f3d82fbf92d0116966b354298338ef5ace6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quickcontrols2/qquickstyleplugin.cpp')
-rw-r--r--src/quickcontrols2/qquickstyleplugin.cpp32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/quickcontrols2/qquickstyleplugin.cpp b/src/quickcontrols2/qquickstyleplugin.cpp
index 7f54c033..0795eed4 100644
--- a/src/quickcontrols2/qquickstyleplugin.cpp
+++ b/src/quickcontrols2/qquickstyleplugin.cpp
@@ -37,6 +37,7 @@
#include "qquickstyleplugin_p.h"
#include "qquickstyle.h"
#include "qquickstyle_p.h"
+#include "qquickstyleselector_p.h"
#include <QtCore/qmetaobject.h>
#include <QtCore/qsettings.h>
@@ -184,20 +185,25 @@ QQuickTheme *QQuickStylePlugin::createTheme() const
return nullptr;
}
-/*
- Returns either a file system path if Qt was built as shared libraries,
- or a QRC path if Qt was built statically.
-*/
-QUrl QQuickStylePlugin::typeUrl(const QString &name) const
+QUrl QQuickStylePlugin::resolvedUrl(const QString &fileName) const
{
-#ifdef QT_STATIC
- QString url = QLatin1String("qrc") + baseUrl().path();
-#else
- QString url = baseUrl().toString();
-#endif
- if (!name.isEmpty())
- url += QLatin1Char('/') + name;
- return QUrl(url);
+ if (!m_selector) {
+ m_selector.reset(new QQuickStyleSelector);
+ const QString style = QQuickStyle::name();
+ if (!style.isEmpty())
+ m_selector->addSelector(style);
+
+ const QString fallback = QQuickStylePrivate::fallbackStyle();
+ if (!fallback.isEmpty() && fallback != style)
+ m_selector->addSelector(fallback);
+
+ const QString theme = name();
+ if (!theme.isEmpty() && theme != style)
+ m_selector->addSelector(theme);
+
+ m_selector->setPaths(QQuickStylePrivate::stylePaths(true));
+ }
+ return m_selector->select(fileName);
}
QT_END_NAMESPACE