diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2018-05-07 15:40:23 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2018-05-12 07:34:31 +0000 |
commit | d2897a6c85d46d41ea531ac66345cfdec230e7c9 (patch) | |
tree | 0bf8dc4ad84d9c4398aacb020c9c3f9e1832baca /src/quickcontrols2/qquickstyleplugin.cpp | |
parent | 58d2a39e4715f5ffa14248c87dfb4f5dc9888ff4 (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.cpp | 32 |
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 |