Files
RedBear-OS/local/recipes/kde/kirigami/source/examples/staticcmake/src/main.cpp
T
2026-04-14 10:51:06 +01:00

62 lines
1.6 KiB
C++

/*
* SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifdef Q_OS_ANDROID
#include <QGuiApplication>
#else
#include <QApplication>
#endif
#include <QColor>
#include <QQmlApplicationEngine>
#include <QUrl>
#ifdef Q_OS_ANDROID
#include <QtAndroid>
// WindowManager.LayoutParams
#define FLAG_TRANSLUCENT_STATUS 0x04000000
#define FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 0x80000000
// View
#define SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 0x00002000
#endif
Q_IMPORT_PLUGIN(KirigamiPlugin)
Q_DECL_EXPORT int main(int argc, char *argv[])
{
// The desktop QQC2 style needs it to be a QApplication
#ifdef Q_OS_ANDROID
QGuiApplication app(argc, argv);
#else
QApplication app(argc, argv);
#endif
// qputenv("QML_IMPORT_TRACE", "1");
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
if (engine.rootObjects().isEmpty()) {
return -1;
}
// HACK to color the system bar on Android, use qtandroidextras and call the appropriate Java methods
#ifdef Q_OS_ANDROID
QtAndroid::runOnAndroidThread([=]() {
QAndroidJniObject window = QtAndroid::androidActivity().callObjectMethod("getWindow", "()Landroid/view/Window;");
window.callMethod<void>("addFlags", "(I)V", FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.callMethod<void>("clearFlags", "(I)V", FLAG_TRANSLUCENT_STATUS);
window.callMethod<void>("setStatusBarColor", "(I)V", QColor("#2196f3").rgba());
window.callMethod<void>("setNavigationBarColor", "(I)V", QColor("#2196f3").rgba());
});
#endif
return app.exec();
}