diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-03-16 10:01:29 +0100 |
---|---|---|
committer | Kent Hansen <kent.hansen@nokia.com> | 2012-03-16 10:01:29 +0100 |
commit | 440f452aa3a5609e5f6006a03ac36d41462d5908 (patch) | |
tree | 598d682291945055e4f6feb08a228212648482c1 /src/platformsupport/themes/genericunix/qgenericunixthemes.cpp | |
parent | cd1e62ffc121cc68c5a133a8095d431f04d966ce (diff) | |
parent | d4959fa6376255ab4adf8adaeb2ee47ae6b679d2 (diff) |
Merge master into api_changes
Conflicts:
src/corelib/kernel/qmetatype.cpp
src/gui/kernel/qplatformsurface_qpa.cpp
tests/auto/corelib/tools/qtimeline/qtimeline.pro
Change-Id: Iff3fff34eeeb06f02369767ddfce44cfde505178
Diffstat (limited to 'src/platformsupport/themes/genericunix/qgenericunixthemes.cpp')
-rw-r--r-- | src/platformsupport/themes/genericunix/qgenericunixthemes.cpp | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp index 602dd6264a..597dbde74f 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -77,6 +77,8 @@ void ResourceHelper::clear() \ingroup qpa */ +const char *QGenericUnixTheme::name = "generic"; + // Helper to return the icon theme paths from XDG. QStringList QGenericUnixTheme::xdgIconThemePaths() { @@ -159,6 +161,8 @@ static inline bool readKdeSystemPalette(const QSettings &kdeSettings, QPalette * \ingroup qpa */ +const char *QKdeTheme::name = "kde"; + QKdeTheme::QKdeTheme(const QString &kdeHome, int kdeVersion) : m_kdeHome(kdeHome), m_kdeVersion(kdeVersion), m_toolButtonStyle(Qt::ToolButtonTextBesideIcon), m_toolBarIconSize(0) @@ -329,6 +333,8 @@ QPlatformTheme *QKdeTheme::createKdeTheme() \ingroup qpa */ +const char *QGnomeTheme::name = "gnome"; + QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const { switch (hint) { @@ -358,23 +364,38 @@ QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const \brief Creates a UNIX theme according to the detected desktop environment. */ -QPlatformTheme *QGenericUnixTheme::createUnixTheme() +QPlatformTheme *QGenericUnixTheme::createUnixTheme(const QString &name) +{ + if (name == QLatin1String(QGenericUnixTheme::name)) + return new QGenericUnixTheme; + if (name == QLatin1String(QKdeTheme::name)) + if (QPlatformTheme *kdeTheme = QKdeTheme::createKdeTheme()) + return kdeTheme; + if (name == QLatin1String(QGnomeTheme::name)) + return new QGnomeTheme; + return new QGenericUnixTheme; +} + +QStringList QGenericUnixTheme::themeNames() { - QPlatformTheme *result = 0; + QStringList result; if (QGuiApplication::desktopSettingsAware()) { switch (QGenericUnixServices::desktopEnvironment()) { - case QGenericUnixServices::DE_UNKNOWN: - break; case QGenericUnixServices::DE_KDE: - result = QKdeTheme::createKdeTheme(); + result.push_back(QLatin1String(QKdeTheme::name)); break; case QGenericUnixServices::DE_GNOME: - result = new QGnomeTheme; + result.push_back(QLatin1String(QGnomeTheme::name)); + break; + case QGenericUnixServices::DE_UNKNOWN: break; } - } - if (!result) - result = new QGenericUnixTheme; + const QByteArray session = qgetenv("DESKTOP_SESSION"); + if (!session.isEmpty() && session != "default") + result.push_back(QString::fromLocal8Bit(session)); + } // desktopSettingsAware + if (result.isEmpty()) + result.push_back(QLatin1String(QGenericUnixTheme::name)); return result; } |