#ifndef AMNEZIA_APPLICATION_H #define AMNEZIA_APPLICATION_H #include #include #include #include #include #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) #include #else #include #endif #include #include "core/controllers/coreController.h" #include "secureQSettings.h" #include "vpnConnection.h" #include "ui/models/containerProps.h" #include "ui/models/protocolProps.h" #define amnApp (static_cast(QCoreApplication::instance())) #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) #define AMNEZIA_BASE_CLASS QGuiApplication #else #define AMNEZIA_BASE_CLASS QApplication #endif class AmneziaApplication : public AMNEZIA_BASE_CLASS { Q_OBJECT public: AmneziaApplication(int &argc, char *argv[]); virtual ~AmneziaApplication(); void init(); void registerTypes(); void loadFonts(); bool parseCommands(); #if !defined(Q_OS_ANDROID) && !defined(Q_OS_IOS) && !defined(MACOS_NE) void startLocalServer(); #endif QQmlApplicationEngine *qmlEngine() const; QNetworkAccessManager *networkManager(); QClipboard *getClipboard(); public slots: void forceQuit(); private: static bool m_forceQuit; QQmlApplicationEngine *m_engine {}; SecureQSettings* m_settings; QScopedPointer m_coreController; QSharedPointer m_containerProps; QSharedPointer m_protocolProps; QCommandLineParser m_parser; QCommandLineOption m_optAutostart; QCommandLineOption m_optCleanup; QCommandLineOption m_optConnect; QCommandLineOption m_optImport; QSharedPointer m_vpnConnection; QThread m_vpnConnectionThread; QNetworkAccessManager *m_nam; protected: bool eventFilter(QObject *watched, QEvent *event) override; }; #endif // AMNEZIA_APPLICATION_H