Warning: That file was not part of the compilation database. It may have many parsing errors.

1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtCore module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#ifndef QJNIHELPERS_H
41#define QJNIHELPERS_H
42
43//
44// W A R N I N G
45// -------------
46//
47// This file is not part of the Qt API. It exists purely as an
48// implementation detail. This header file may change from version to
49// version without notice, or even be removed.
50//
51// We mean it.
52//
53
54#include <jni.h>
55#include <functional>
56#include <QtCore/private/qglobal_p.h>
57#include <QHash>
58#include <QMetaType>
59
60QT_BEGIN_NAMESPACE
61
62class QRunnable;
63class QStringList;
64
65namespace QtAndroidPrivate
66{
67 class Q_CORE_EXPORT ActivityResultListener
68 {
69 public:
70 virtual ~ActivityResultListener();
71 virtual bool handleActivityResult(jint requestCode, jint resultCode, jobject data) = 0;
72 };
73
74 class Q_CORE_EXPORT NewIntentListener
75 {
76 public:
77 virtual ~NewIntentListener();
78 virtual bool handleNewIntent(JNIEnv *env, jobject intent) = 0;
79 };
80
81 class Q_CORE_EXPORT ResumePauseListener
82 {
83 public:
84 virtual ~ResumePauseListener();
85 virtual void handlePause();
86 virtual void handleResume();
87 };
88
89 class Q_CORE_EXPORT GenericMotionEventListener
90 {
91 public:
92 virtual ~GenericMotionEventListener();
93 virtual bool handleGenericMotionEvent(jobject event) = 0;
94 };
95
96 class Q_CORE_EXPORT KeyEventListener
97 {
98 public:
99 virtual ~KeyEventListener();
100 virtual bool handleKeyEvent(jobject event) = 0;
101 };
102
103 class Q_CORE_EXPORT OnBindListener
104 {
105 public:
106 virtual ~OnBindListener() {}
107 virtual jobject onBind(jobject intent) = 0;
108 };
109
110 enum class PermissionsResult {
111 Granted,
112 Denied
113 };
114 typedef QHash<QString, QtAndroidPrivate::PermissionsResult> PermissionsHash;
115 typedef std::function<void()> Runnable;
116 typedef std::function<void(const PermissionsHash &)> PermissionsResultFunc;
117
118 Q_CORE_EXPORT jobject activity();
119 Q_CORE_EXPORT jobject service();
120 Q_CORE_EXPORT jobject context();
121 Q_CORE_EXPORT JavaVM *javaVM();
122 Q_CORE_EXPORT jint initJNI(JavaVM *vm, JNIEnv *env);
123 jobject classLoader();
124 Q_CORE_EXPORT jint androidSdkVersion();
125 Q_CORE_EXPORT void runOnAndroidThread(const Runnable &runnable, JNIEnv *env);
126 Q_CORE_EXPORT void runOnAndroidThreadSync(const Runnable &runnable, JNIEnv *env, int timeoutMs = INT_MAX);
127 Q_CORE_EXPORT void runOnUiThread(QRunnable *runnable, JNIEnv *env);
128 Q_CORE_EXPORT void requestPermissions(JNIEnv *env, const QStringList &permissions, const PermissionsResultFunc &callbackFunc, bool directCall = false);
129 Q_CORE_EXPORT PermissionsHash requestPermissionsSync(JNIEnv *env, const QStringList &permissions, int timeoutMs = INT_MAX);
130 Q_CORE_EXPORT PermissionsResult checkPermission(const QString &permission);
131 Q_CORE_EXPORT bool shouldShowRequestPermissionRationale(const QString &permission);
132
133 Q_CORE_EXPORT void handleActivityResult(jint requestCode, jint resultCode, jobject data);
134 Q_CORE_EXPORT void registerActivityResultListener(ActivityResultListener *listener);
135 Q_CORE_EXPORT void unregisterActivityResultListener(ActivityResultListener *listener);
136
137 Q_CORE_EXPORT void handleNewIntent(JNIEnv *env, jobject intent);
138 Q_CORE_EXPORT void registerNewIntentListener(NewIntentListener *listener);
139 Q_CORE_EXPORT void unregisterNewIntentListener(NewIntentListener *listener);
140
141 Q_CORE_EXPORT void handlePause();
142 Q_CORE_EXPORT void handleResume();
143 Q_CORE_EXPORT void registerResumePauseListener(ResumePauseListener *listener);
144 Q_CORE_EXPORT void unregisterResumePauseListener(ResumePauseListener *listener);
145
146 Q_CORE_EXPORT void registerGenericMotionEventListener(GenericMotionEventListener *listener);
147 Q_CORE_EXPORT void unregisterGenericMotionEventListener(GenericMotionEventListener *listener);
148
149 Q_CORE_EXPORT void registerKeyEventListener(KeyEventListener *listener);
150 Q_CORE_EXPORT void unregisterKeyEventListener(KeyEventListener *listener);
151
152 Q_CORE_EXPORT void hideSplashScreen(JNIEnv *env, int duration = 0);
153
154
155 Q_CORE_EXPORT void waitForServiceSetup();
156 Q_CORE_EXPORT int acuqireServiceSetup(int flags);
157 Q_CORE_EXPORT void setOnBindListener(OnBindListener *listener);
158 Q_CORE_EXPORT jobject callOnBindListener(jobject intent);
159
160}
161
162QT_END_NAMESPACE
163
164Q_DECLARE_METATYPE(QtAndroidPrivate::PermissionsHash)
165
166#endif // QJNIHELPERS_H
167

Warning: That file was not part of the compilation database. It may have many parsing errors.