// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QCOREAPPLICATION_PLATFORM_H #define QCOREAPPLICATION_PLATFORM_H // // W A R N I N G // ------------- // // This file is part of the native interface APIs. Usage of // this API may make your code source and binary incompatible // with future versions of Qt. // #include #include #include #if defined(Q_OS_ANDROID) || defined(Q_CLANG_QDOC) #include #if QT_CONFIG(future) && !defined(QT_NO_QOBJECT) #include #include #endif #endif // #if defined(Q_OS_ANDROID) || defined(Q_CLANG_QDOC) #if defined(Q_OS_ANDROID) class _jobject; typedef _jobject* jobject; #endif QT_BEGIN_NAMESPACE #if defined(Q_OS_ANDROID) Q_DECLARE_JNI_TYPE(Context, "Landroid/content/Context;") #endif namespace QNativeInterface { #if defined(Q_OS_ANDROID) || defined(Q_CLANG_QDOC) struct Q_CORE_EXPORT QAndroidApplication { QT_DECLARE_NATIVE_INTERFACE(QAndroidApplication, 1, QCoreApplication) #ifdef Q_CLANG_QDOC static jobject context(); #else static QtJniTypes::Context context(); #endif static bool isActivityContext(); static int sdkVersion(); static void hideSplashScreen(int duration = 0); #if QT_CONFIG(future) && !defined(QT_NO_QOBJECT) static QFuture runOnAndroidMainThread(const std::function &runnable, const QDeadlineTimer timeout = QDeadlineTimer::Forever); template std::enable_if_t && std::is_same_v, void>, QFuture> static runOnAndroidMainThread(const T &runnable, const QDeadlineTimer timeout = QDeadlineTimer::Forever) { std::function func = [runnable](){ runnable(); return QVariant(); }; return static_cast>(runOnAndroidMainThread(func, timeout)); } #endif }; #endif } QT_END_NAMESPACE #endif // QCOREAPPLICATION_PLATFORM_H