Files
amnezia-client/client/amnezia_application.h
T

122 lines
4.0 KiB
C++
Raw Normal View History

2022-08-25 12:47:02 +03:00
#ifndef AMNEZIA_APPLICATION_H
#define AMNEZIA_APPLICATION_H
#include <QCommandLineParser>
#include <QQmlApplicationEngine>
#include <QQmlContext>
2023-08-13 11:28:32 +05:00
#include <QThread>
2023-08-30 15:10:44 +05:00
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
#include <QGuiApplication>
#else
#include <QApplication>
#endif
2022-08-25 12:47:02 +03:00
#include "settings.h"
#include "vpnconnection.h"
2022-08-25 12:47:02 +03:00
2022-08-25 17:35:28 +03:00
#include "configurators/vpn_configurator.h"
2023-05-15 13:38:17 +08:00
#include "ui/controllers/connectionController.h"
2023-06-13 20:03:20 +09:00
#include "ui/controllers/exportController.h"
2023-05-22 22:11:20 +08:00
#include "ui/controllers/importController.h"
2023-06-13 20:03:20 +09:00
#include "ui/controllers/installController.h"
#include "ui/controllers/pageController.h"
#include "ui/controllers/settingsController.h"
2023-08-08 19:10:14 +05:00
#include "ui/controllers/sitesController.h"
2023-09-06 22:20:59 +05:00
#include "ui/controllers/systemController.h"
2023-06-13 20:03:20 +09:00
#include "ui/models/containers_model.h"
#include "ui/models/languageModel.h"
#include "ui/models/protocols/cloakConfigModel.h"
2023-07-14 13:14:50 +09:00
#include "ui/notificationhandler.h"
#ifdef Q_OS_WINDOWS
#include "ui/models/protocols/ikev2ConfigModel.h"
#endif
#include "ui/models/protocols/openvpnConfigModel.h"
#include "ui/models/protocols/shadowsocksConfigModel.h"
#include "ui/models/protocols/wireguardConfigModel.h"
#include "ui/models/protocols_model.h"
2023-06-13 20:03:20 +09:00
#include "ui/models/servers_model.h"
#include "ui/models/services/sftpConfigModel.h"
2023-08-08 19:10:14 +05:00
#include "ui/models/sites_model.h"
2022-08-25 12:47:02 +03:00
2022-08-29 01:32:42 +03:00
#define amnApp (static_cast<AmneziaApplication *>(QCoreApplication::instance()))
2022-08-26 00:35:03 +03:00
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
2023-08-31 16:00:41 +05:00
#define AMNEZIA_BASE_CLASS QGuiApplication
2022-08-26 00:35:03 +03:00
#else
#define AMNEZIA_BASE_CLASS SingleApplication
#define QAPPLICATION_CLASS QApplication
#include "singleapplication.h"
2022-08-25 12:47:02 +03:00
#endif
class AmneziaApplication : public AMNEZIA_BASE_CLASS
{
Q_OBJECT
public:
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
AmneziaApplication(int &argc, char *argv[]);
#else
AmneziaApplication(int &argc, char *argv[], bool allowSecondary = false,
SingleApplication::Options options = SingleApplication::User, int timeout = 1000,
const QString &userData = {});
2022-08-25 12:47:02 +03:00
#endif
virtual ~AmneziaApplication();
void init();
void registerTypes();
void loadFonts();
void loadTranslator();
void updateTranslator(const QLocale &locale);
2022-08-31 16:54:46 +03:00
bool parseCommands();
2022-08-25 12:47:02 +03:00
2022-08-29 01:32:42 +03:00
QQmlApplicationEngine *qmlEngine() const;
signals:
void translationsUpdated();
2022-08-25 12:47:02 +03:00
private:
void initModels();
void initControllers();
2022-08-31 16:54:46 +03:00
QQmlApplicationEngine *m_engine {};
2022-08-25 12:47:02 +03:00
std::shared_ptr<Settings> m_settings;
2022-08-25 17:35:28 +03:00
std::shared_ptr<VpnConfigurator> m_configurator;
2022-08-25 12:47:02 +03:00
QSharedPointer<ContainerProps> m_containerProps;
QSharedPointer<ProtocolProps> m_protocolProps;
2022-08-26 00:35:03 +03:00
QSharedPointer<QTranslator> m_translator;
2022-08-25 12:47:02 +03:00
QCommandLineParser m_parser;
QSharedPointer<ContainersModel> m_containersModel;
QSharedPointer<ServersModel> m_serversModel;
QSharedPointer<LanguageModel> m_languageModel;
QSharedPointer<ProtocolsModel> m_protocolsModel;
2023-08-08 19:10:14 +05:00
QSharedPointer<SitesModel> m_sitesModel;
QScopedPointer<OpenVpnConfigModel> m_openVpnConfigModel;
QScopedPointer<ShadowSocksConfigModel> m_shadowSocksConfigModel;
QScopedPointer<CloakConfigModel> m_cloakConfigModel;
QScopedPointer<WireGuardConfigModel> m_wireguardConfigModel;
#ifdef Q_OS_WINDOWS
QScopedPointer<Ikev2ConfigModel> m_ikev2ConfigModel;
#endif
QScopedPointer<SftpConfigModel> m_sftpConfigModel;
2023-06-05 22:40:35 +08:00
QSharedPointer<VpnConnection> m_vpnConnection;
2023-08-09 18:17:29 +05:00
QThread m_vpnConnectionThread;
2023-07-14 13:14:50 +09:00
QScopedPointer<NotificationHandler> m_notificationHandler;
QScopedPointer<ConnectionController> m_connectionController;
2023-05-15 13:38:17 +08:00
QScopedPointer<PageController> m_pageController;
QScopedPointer<InstallController> m_installController;
2023-05-22 22:11:20 +08:00
QScopedPointer<ImportController> m_importController;
2023-06-13 20:03:20 +09:00
QScopedPointer<ExportController> m_exportController;
QScopedPointer<SettingsController> m_settingsController;
2023-08-08 19:10:14 +05:00
QScopedPointer<SitesController> m_sitesController;
2023-09-06 22:20:59 +05:00
QScopedPointer<SystemController> m_systemController;
2022-08-25 12:47:02 +03:00
};
#endif // AMNEZIA_APPLICATION_H