Files
amnezia-client/client/platforms/android/android_controller.h
T

62 lines
2.0 KiB
C++
Raw Normal View History

2021-11-26 17:43:02 +03:00
#ifndef ANDROID_CONTROLLER_H
#define ANDROID_CONTROLLER_H
2022-12-23 17:32:20 +03:00
#include <QJniObject>
2021-11-26 17:43:02 +03:00
#include "protocols/vpnprotocol.h"
2023-01-18 15:54:19 +03:00
2021-11-26 17:43:02 +03:00
using namespace amnezia;
2022-12-23 17:32:20 +03:00
class AndroidController : public QObject
2021-11-26 17:43:02 +03:00
{
Q_OBJECT
public:
explicit AndroidController();
static AndroidController *instance();
2021-11-26 17:43:02 +03:00
bool initialize();
2021-11-26 17:43:02 +03:00
ErrorCode start(const QJsonObject &vpnConfig);
2021-11-26 17:43:02 +03:00
void stop();
void setNotificationText(const QString &title, const QString &message, int timerSec);
void saveFile(const QString& fileName, const QString &data);
2023-02-22 14:22:03 +03:00
void startQrReaderActivity();
2021-11-26 17:43:02 +03:00
signals:
void connectionStateChanged(Vpn::ConnectionState state);
void status(bool isVpnConnected);
void serviceDisconnected();
void serviceError();
void vpnPermissionRejected();
void vpnConnected();
void vpnDisconnected();
void statisticsUpdated(quint64 rxBytes, quint64 txBytes);
void configImported();
void importConfigFromOutside(QString &data);
void serviceIsAlive(bool connected);
2021-11-26 17:43:02 +03:00
private:
bool isWaitingInitStatus = true;
void qtAndroidControllerInitialized();
// JNI functions called by Android
static void onStatus(JNIEnv *env, jobject thiz, jboolean isVpnConnected);
static void onServiceDisconnected(JNIEnv *env, jobject thiz);
static void onServiceError(JNIEnv *env, jobject thiz);
static void onVpnPermissionRejected(JNIEnv *env, jobject thiz);
static void onVpnConnected(JNIEnv *env, jobject thiz);
static void onVpnDisconnected(JNIEnv *env, jobject thiz);
static void onStatisticsUpdate(JNIEnv *env, jobject thiz, jlong rxBytes, jlong txBytes);
static void onConfigImported(JNIEnv *env, jobject thiz);
template <typename Ret, typename ...Args>
static auto callActivityMethod(const char *methodName, const char *signature,
const std::function<Ret()> &defValue, Args &&...args);
template <typename ...Args>
static void callActivityMethod(const char *methodName, const char *signature, Args &&...args);
2021-11-26 17:43:02 +03:00
};
#endif // ANDROID_CONTROLLER_H