Android: move setSystemUiVisibility() to QAndroidPlatformWindow

Move calls for handling system UI visibility to QAndroidPlatformWindow
where they belongs.

Change-Id: I3802cf9d205ee6678f71b787c5ea4804d3aaeb29
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Assam Boudjelthia 2024-11-26 19:39:10 +02:00
parent 5c37d3f06b
commit a2385e5c9d
4 changed files with 15 additions and 20 deletions

View File

@ -94,7 +94,6 @@ static const char m_methodErrorMsg[] = "Can't find method \"%s%s\"";
Q_CONSTINIT static QBasicAtomicInt startQtAndroidPluginCalled = Q_BASIC_ATOMIC_INITIALIZER(0);
Q_DECLARE_JNI_CLASS(QtWindowInterface, "org/qtproject/qt/android/QtWindowInterface")
Q_DECLARE_JNI_CLASS(QtAccessibilityInterface, "org/qtproject/qt/android/QtAccessibilityInterface");
namespace QtAndroid
@ -183,14 +182,6 @@ namespace QtAndroid
return m_applicationClass;
}
// TODO move calls from here to where they logically belong
void setSystemUiVisibility(SystemUiVisibility uiVisibility)
{
AndroidBackendRegister *reg = QtAndroid::backendRegister();
reg->callInterface<QtJniTypes::QtWindowInterface, void>("setSystemUiVisibility",
jint(uiVisibility));
}
bool isQtApplication()
{
// Returns true if the app is a Qt app, i.e. Qt controls the whole app and

View File

@ -50,14 +50,6 @@ namespace QtAndroid
AAssetManager *assetManager();
jclass applicationClass();
// Keep synchronized with flags in ActivityDelegate.java
enum SystemUiVisibility {
SYSTEM_UI_VISIBILITY_NORMAL = 0,
SYSTEM_UI_VISIBILITY_FULLSCREEN = 1,
SYSTEM_UI_VISIBILITY_TRANSLUCENT = 2
};
void setSystemUiVisibility(SystemUiVisibility uiVisibility);
jobject createBitmap(QImage img, JNIEnv *env = nullptr);
jobject createBitmap(int width, int height, QImage::Format format, JNIEnv *env);
jobject createBitmapDrawable(jobject bitmap, JNIEnv *env = nullptr);

View File

@ -16,6 +16,7 @@ QT_BEGIN_NAMESPACE
Q_LOGGING_CATEGORY(lcQpaWindow, "qt.qpa.window")
Q_DECLARE_JNI_CLASS(QtWindowInterface, "org/qtproject/qt/android/QtWindowInterface")
Q_DECLARE_JNI_CLASS(QtInputInterface, "org/qtproject/qt/android/QtInputInterface")
Q_DECLARE_JNI_CLASS(QtInputConnectionListener,
"org/qtproject/qt/android/QtInputConnection$QtInputConnectionListener")
@ -257,12 +258,16 @@ void QAndroidPlatformWindow::updateSystemUiVisibility()
Qt::WindowFlags flags = window()->flags();
bool isNonRegularWindow = flags & (Qt::Popup | Qt::Dialog | Qt::Sheet) & ~Qt::Window;
if (!isNonRegularWindow) {
SystemUiVisibility visibility;
if (m_windowState & Qt::WindowFullScreen)
QtAndroid::setSystemUiVisibility(QtAndroid::SYSTEM_UI_VISIBILITY_FULLSCREEN);
visibility = SYSTEM_UI_VISIBILITY_FULLSCREEN;
else if (flags & Qt::ExpandedClientAreaHint)
QtAndroid::setSystemUiVisibility(QtAndroid::SYSTEM_UI_VISIBILITY_TRANSLUCENT);
visibility = SYSTEM_UI_VISIBILITY_TRANSLUCENT;
else
QtAndroid::setSystemUiVisibility(QtAndroid::SYSTEM_UI_VISIBILITY_NORMAL);
visibility = SYSTEM_UI_VISIBILITY_NORMAL;
QtAndroid::backendRegister()->callInterface<QtJniTypes::QtWindowInterface, void>(
"setSystemUiVisibility", jint(visibility));
}
}

View File

@ -31,6 +31,13 @@ public:
TextureView
};
// Keep synchronized with flags in ActivityDelegate.java
enum SystemUiVisibility {
SYSTEM_UI_VISIBILITY_NORMAL = 0,
SYSTEM_UI_VISIBILITY_FULLSCREEN = 1,
SYSTEM_UI_VISIBILITY_TRANSLUCENT = 2
};
explicit QAndroidPlatformWindow(QWindow *window);
void initialize() override;