summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/android')
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.cpp5
-rw-r--r--src/plugins/platforms/android/qandroidplatformtheme.cpp18
-rw-r--r--src/plugins/platforms/android/qandroidplatformtheme.h2
3 files changed, 18 insertions, 7 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp
index 07bdf95bf4..d94da65dde 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.cpp
+++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp
@@ -79,8 +79,11 @@ void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteA
if (resource == "QtActivity")
return QtAndroid::activity();
if (resource == "AndroidStyleData") {
- if (m_androidStyle)
+ if (m_androidStyle) {
+ if (m_androidStyle->m_styleData.isEmpty())
+ m_androidStyle->m_styleData = AndroidStyle::loadStyleData();
return &m_androidStyle->m_styleData;
+ }
else
return Q_NULLPTR;
}
diff --git a/src/plugins/platforms/android/qandroidplatformtheme.cpp b/src/plugins/platforms/android/qandroidplatformtheme.cpp
index e729309ad9..f1ddcefef6 100644
--- a/src/plugins/platforms/android/qandroidplatformtheme.cpp
+++ b/src/plugins/platforms/android/qandroidplatformtheme.cpp
@@ -176,7 +176,7 @@ static void setPaletteColor(const QVariantMap &object,
}
}
-static std::shared_ptr<AndroidStyle> loadAndroidStyle(QPalette *defaultPalette)
+QJsonObject AndroidStyle::loadStyleData()
{
QString stylePath(QLatin1String(qgetenv("MINISTRO_ANDROID_STYLE_PATH")));
const QLatin1Char slashChar('/');
@@ -198,21 +198,29 @@ static std::shared_ptr<AndroidStyle> loadAndroidStyle(QPalette *defaultPalette)
QFile f(stylePath + QLatin1String("style.json"));
if (!f.open(QIODevice::ReadOnly))
- return std::shared_ptr<AndroidStyle>();
+ return QJsonObject();
QJsonParseError error;
QJsonDocument document = QJsonDocument::fromJson(f.readAll(), &error);
if (document.isNull()) {
qCritical() << error.errorString();
- return std::shared_ptr<AndroidStyle>();
+ return QJsonObject();
}
if (!document.isObject()) {
qCritical() << "Style.json does not contain a valid style.";
- return std::shared_ptr<AndroidStyle>();
+ return QJsonObject();
}
+ return document.object();
+}
+
+static std::shared_ptr<AndroidStyle> loadAndroidStyle(QPalette *defaultPalette)
+{
std::shared_ptr<AndroidStyle> style(new AndroidStyle);
- style->m_styleData = document.object();
+ style->m_styleData = AndroidStyle::loadStyleData();
+ if (style->m_styleData.isEmpty())
+ return std::shared_ptr<AndroidStyle>();
+
for (QJsonObject::const_iterator objectIterator = style->m_styleData.constBegin();
objectIterator != style->m_styleData.constEnd();
++objectIterator) {
diff --git a/src/plugins/platforms/android/qandroidplatformtheme.h b/src/plugins/platforms/android/qandroidplatformtheme.h
index e842e672d6..2069910136 100644
--- a/src/plugins/platforms/android/qandroidplatformtheme.h
+++ b/src/plugins/platforms/android/qandroidplatformtheme.h
@@ -46,12 +46,12 @@ QT_BEGIN_NAMESPACE
struct AndroidStyle
{
+ static QJsonObject loadStyleData();
QJsonObject m_styleData;
QPalette m_standardPalette;
QHash<int, QPalette> m_palettes;
QHash<int, QFont> m_fonts;
QHash<QByteArray, QFont> m_QWidgetsFonts;
- QHash<QByteArray, QFont> m_QWidgetsPalettes;
};
class QAndroidPlatformNativeInterface;