diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-01-16 13:47:50 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-01-16 13:48:15 +0100 |
commit | 7497dc48e674ee155aeebf0986be5a929ce15877 (patch) | |
tree | 87f575b7ce612b7130b91fd4c9b4e3dc437ff612 /src/controls/Private/qquickcontrolsettings.cpp | |
parent | 46d983e08cdece92a62833dc74f37e2f11a66324 (diff) | |
parent | 5abfd7c00bc7ebfec2f059adc9bc22eb989ae10d (diff) | |
download | qtquickcontrols-7497dc48e674ee155aeebf0986be5a929ce15877.tar.gz |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
.qmake.conf
tests/auto/controls/data/tst_stackview.qml
Change-Id: I54b55d51452e812315f97bcdfd1a8e361a427f56
Diffstat (limited to 'src/controls/Private/qquickcontrolsettings.cpp')
-rw-r--r-- | src/controls/Private/qquickcontrolsettings.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/controls/Private/qquickcontrolsettings.cpp b/src/controls/Private/qquickcontrolsettings.cpp index bd02b87d..b73a7d43 100644 --- a/src/controls/Private/qquickcontrolsettings.cpp +++ b/src/controls/Private/qquickcontrolsettings.cpp @@ -35,10 +35,14 @@ #include <qquickitem.h> #include <qcoreapplication.h> #include <qqmlengine.h> +#include <qlibrary.h> #include <qdir.h> #include <QTouchDevice> #include <QGuiApplication> #include <QStyleHints> +#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) +#include <private/qjnihelpers_p.h> +#endif QT_BEGIN_NAMESPACE @@ -49,7 +53,8 @@ static QString defaultStyleName() if (QCoreApplication::instance()->inherits("QApplication")) return QLatin1String("Desktop"); #elif defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) - return QLatin1String("Android"); + if (QtAndroidPrivate::androidSdkVersion() >= 11) + return QLatin1String("Android"); #elif defined(Q_OS_IOS) return QLatin1String("iOS"); #elif defined(Q_OS_WINRT) @@ -126,11 +131,29 @@ QQuickControlSettings::QQuickControlSettings(QQmlEngine *engine) QString path = styleFilePath(); - if (!QDir(path).exists()) { + QDir dir(path); + if (!dir.exists()) { QString unknownStyle = m_name; m_name = defaultStyleName(); m_path = styleImportPath(engine, m_name); qWarning() << "WARNING: Cannot find style" << unknownStyle << "- fallback:" << styleFilePath(); + } else { + typedef bool (*StyleInitFunc)(); + typedef const char *(*StylePathFunc)(); + + foreach (const QString &fileName, dir.entryList()) { + if (QLibrary::isLibrary(fileName)) { + QLibrary lib(dir.absoluteFilePath(fileName)); + StyleInitFunc initFunc = (StyleInitFunc) lib.resolve("qt_quick_controls_style_init"); + if (initFunc) + initFunc(); + StylePathFunc pathFunc = (StylePathFunc) lib.resolve("qt_quick_controls_style_path"); + if (pathFunc) + m_path = QString::fromLocal8Bit(pathFunc()); + if (initFunc || pathFunc) + break; + } + } } connect(this, SIGNAL(styleNameChanged()), SIGNAL(styleChanged())); |