From c0c2ee997f1962a474f341970e643da059e17298 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 2 Sep 2018 19:07:02 +0200 Subject: [PATCH] Quick GUI: Tweak styling for Android --- CMakeLists.txt | 5 +++++ quickgui/initiatequick.cpp | 30 +++++++++++++++++++++++++++++- resources/qml.qrc | 3 +++ resources/qtquickcontrols2.conf | 8 ++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 resources/qtquickcontrols2.conf diff --git a/CMakeLists.txt b/CMakeLists.txt index 141a1d9..1ac4da6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,6 +149,11 @@ endif() find_package(passwordfile 3.1.0 REQUIRED) use_password_file() +# require Qt AndroidExtras +if(ANDROID AND QUICK_GUI) + list(APPEND ADDITIONAL_QT_MODULES AndroidExtras) +endif() + # include modules to apply configuration if(WIDGETS_GUI OR QUICK_GUI) include(QtGuiConfig) diff --git a/quickgui/initiatequick.cpp b/quickgui/initiatequick.cpp index c331b4f..2aef28d 100644 --- a/quickgui/initiatequick.cpp +++ b/quickgui/initiatequick.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -18,10 +19,27 @@ #include #endif +#ifdef Q_OS_ANDROID +#include +#endif + using namespace ApplicationUtilities; namespace QtGui { +#ifdef Q_OS_ANDROID +namespace Android { +namespace WindowManager { +namespace LayoutParams { +enum RelevantFlags { + TranslucentStatus = 0x04000000, + DrawsSystemBarBackgrounds = 0x80000000, +}; +} +} +} +#endif + int runQuickGui(int argc, char *argv[], const QtConfigArguments &qtConfigArgs, const QString &file) { // init application @@ -63,11 +81,21 @@ int runQuickGui(int argc, char *argv[], const QtConfigArguments &qtConfigArgs, c // init Quick GUI QQmlApplicationEngine engine; Controller controller(settings, file); - QQmlContext *const context(engine.rootContext()); + auto *const context(engine.rootContext()); context->setContextProperty(QStringLiteral("userPaths"), userPaths); context->setContextProperty(QStringLiteral("nativeInterface"), &controller); engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml"))); +#ifdef Q_OS_ANDROID + QtAndroid::runOnAndroidThread([=]() { + QAndroidJniObject window = QtAndroid::androidActivity().callObjectMethod("getWindow", "()Landroid/view/Window;"); + window.callMethod("addFlags", "(I)V", Android::WindowManager::LayoutParams::DrawsSystemBarBackgrounds); + window.callMethod("clearFlags", "(I)V", Android::WindowManager::LayoutParams::TranslucentStatus); + window.callMethod("setStatusBarColor", "(I)V", QColor("#2196f3").rgba()); + window.callMethod("setNavigationBarColor", "(I)V", QColor("#2196f3").rgba()); + }); +#endif + // run event loop return a.exec(); } diff --git a/resources/qml.qrc b/resources/qml.qrc index 09a2168..44ea8fe 100644 --- a/resources/qml.qrc +++ b/resources/qml.qrc @@ -1,4 +1,7 @@ + + qtquickcontrols2.conf + ../qml/main.qml ../qml/BasicDialog.qml diff --git a/resources/qtquickcontrols2.conf b/resources/qtquickcontrols2.conf new file mode 100644 index 0000000..2d33cda --- /dev/null +++ b/resources/qtquickcontrols2.conf @@ -0,0 +1,8 @@ +[Material] +Primary=#2196F3 +Accent=#2196F3 +Theme=System + +[Universal] +Accent=#2196F3 +Theme=System