diff options
Diffstat (limited to 'src/quickcontrols2/qquickstyle.cpp')
-rw-r--r-- | src/quickcontrols2/qquickstyle.cpp | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/quickcontrols2/qquickstyle.cpp b/src/quickcontrols2/qquickstyle.cpp index 184cbfc7..f154f0ce 100644 --- a/src/quickcontrols2/qquickstyle.cpp +++ b/src/quickcontrols2/qquickstyle.cpp @@ -36,13 +36,17 @@ #include "qquickstyle.h" #include "qquickstyle_p.h" -#include "qquickstyleattached_p.h" #include <QtCore/qdir.h> +#include <QtCore/qfile.h> #include <QtCore/qdebug.h> #include <QtCore/qsettings.h> +#include <QtCore/qfileselector.h> #include <QtCore/qlibraryinfo.h> +#include <QtGui/qcolor.h> +#include <QtGui/qpalette.h> #include <QtGui/private/qguiapplication_p.h> +#include <QtGui/qpa/qplatformtheme.h> #include <QtQml/private/qqmlmetatype_p.h> #include <QtQml/qqmlengine.h> #include <QtQml/qqmlfile.h> @@ -176,7 +180,7 @@ struct QQuickStyleSpec setFallbackStyle(QString::fromLatin1(qgetenv("QT_QUICK_CONTROLS_FALLBACK_STYLE")), "QT_QUICK_CONTROLS_FALLBACK_STYLE"); #if QT_CONFIG(settings) if (style.isEmpty() || fallbackStyle.isEmpty()) { - QSharedPointer<QSettings> settings = QQuickStyleAttached::settings(QStringLiteral("Controls")); + QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Controls")); if (settings) { if (style.isEmpty()) style = settings->value(QStringLiteral("Style")).toString(); @@ -313,6 +317,38 @@ QString QQuickStylePrivate::configFilePath() return styleSpec()->resolveConfigFilePath(); } +QSharedPointer<QSettings> QQuickStylePrivate::settings(const QString &group) +{ +#ifndef QT_NO_SETTINGS + const QString filePath = QQuickStylePrivate::configFilePath(); + if (QFile::exists(filePath)) { + QFileSelector selector; + QSettings *settings = new QSettings(selector.select(filePath), QSettings::IniFormat); + if (!group.isEmpty()) + settings->beginGroup(group); + return QSharedPointer<QSettings>(settings); + } +#endif // QT_NO_SETTINGS + return QSharedPointer<QSettings>(); +} + +static bool qt_is_dark_system_theme() +{ + if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { + if (const QPalette *systemPalette = theme->palette(QPlatformTheme::SystemPalette)) { + const QColor textColor = systemPalette->color(QPalette::WindowText); + return textColor.red() > 128 && textColor.blue() > 128 && textColor.green() > 128; + } + } + return false; +} + +bool QQuickStylePrivate::isDarkSystemTheme() +{ + static bool dark = qt_is_dark_system_theme(); + return dark; +} + /*! Returns the name of the application style. |