7 #include "styleselector_p.h"
11 #include <QQuickStyle>
15 QUrl StyleSelector::s_baseUrl;
20 if (qEnvironmentVariableIntValue(
"KIRIGAMI_FORCE_STYLE") == 1) {
23 return styleChain().first();
29 if (qEnvironmentVariableIntValue(
"KIRIGAMI_FORCE_STYLE") == 1) {
33 if (!s_styleChain.isEmpty()) {
39 #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
41 if (style.isEmpty() || style == QStringLiteral(
"org.kde.desktop.plasma")) {
42 auto path = resolveFilePath(QStringLiteral(
"/styles/org.kde.desktop"));
44 s_styleChain.prepend(QStringLiteral(
"org.kde.desktop"));
47 #elif defined(Q_OS_ANDROID)
48 s_styleChain.prepend(QStringLiteral(
"Material"));
49 #else // do we have an iOS specific style?
50 s_styleChain.prepend(QStringLiteral(
"Material"));
53 auto stylePath = resolveFilePath(QStringLiteral(
"/styles/") + style);
54 if (!style.isEmpty() &&
QFile::exists(stylePath) && !s_styleChain.contains(style)) {
55 s_styleChain.prepend(style);
57 auto plasmaPath = resolveFilePath(QStringLiteral(
"/styles/org.kde.desktop.plasma"));
58 if (style == QStringLiteral(
"org.kde.desktop") &&
QFile::exists(plasmaPath)) {
59 s_styleChain.prepend(QStringLiteral(
"org.kde.desktop.plasma"));
62 #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS)
63 s_styleChain.prepend(QStringLiteral(
"org.kde.desktop"));
70 QUrl StyleSelector::componentUrl(
const QString &fileName)
72 const auto chain = styleChain();
73 for (
const QString &style : chain) {
74 const QString candidate = QStringLiteral(
"styles/") + style +
QLatin1Char(
'/') + fileName;
76 return QUrl(resolveFileUrl(candidate));
80 return QUrl(resolveFileUrl(fileName));
83 void StyleSelector::setBaseUrl(
const QUrl &baseUrl)
90 #if defined(KIRIGAMI_BUILD_TYPE_STATIC)
91 return QStringLiteral(
":/qt-project.org/imports/org/kde/kirigami.2/") + path;
92 #elif defined(Q_OS_ANDROID)
93 return QStringLiteral(
":/android_rcc_bundle/qml/org/kde/kirigami.2/") + path;
95 if (s_baseUrl.isValid()) {
96 return s_baseUrl.toLocalFile() +
QLatin1Char(
'/') + path;
105 #if defined(KIRIGAMI_BUILD_TYPE_STATIC)
106 return QStringLiteral(
"qrc:/qt-project.org/imports/org/kde/kirigami.2/") + path;
107 #elif defined(Q_OS_ANDROID)
108 return QStringLiteral(
"qrc:/android_rcc_bundle/qml/org/kde/kirigami.2/") + path;
110 return s_baseUrl.toString() +
QLatin1Char(
'/') + path;