Files
amnezia-client/client/ui/controllers/settingsController.h
T

133 lines
4.2 KiB
C++
Raw Normal View History

#ifndef SETTINGSCONTROLLER_H
#define SETTINGSCONTROLLER_H
#include <QObject>
#include "ui/models/containers_model.h"
#include "ui/models/languageModel.h"
#include "ui/models/servers_model.h"
#include "ui/models/sites_model.h"
#include "ui/models/appSplitTunnelingModel.h"
class SettingsController : public QObject
{
Q_OBJECT
public:
explicit SettingsController(const QSharedPointer<ServersModel> &serversModel,
const QSharedPointer<ContainersModel> &containersModel,
const QSharedPointer<LanguageModel> &languageModel,
const QSharedPointer<SitesModel> &sitesModel,
const QSharedPointer<AppSplitTunnelingModel> &appSplitTunnelingModel,
const std::shared_ptr<Settings> &settings, QObject *parent = nullptr);
Q_PROPERTY(QString primaryDns READ getPrimaryDns WRITE setPrimaryDns NOTIFY primaryDnsChanged)
Q_PROPERTY(QString secondaryDns READ getSecondaryDns WRITE setSecondaryDns NOTIFY secondaryDnsChanged)
2023-08-08 19:10:14 +05:00
Q_PROPERTY(bool isLoggingEnabled READ isLoggingEnabled WRITE toggleLogging NOTIFY loggingStateChanged)
2024-05-12 18:04:14 +03:00
Q_PROPERTY(bool isNotificationPermissionGranted READ isNotificationPermissionGranted NOTIFY onNotificationStateChanged)
Q_PROPERTY(bool isDevModeEnabled READ isDevModeEnabled NOTIFY devModeEnabled)
Q_PROPERTY(QString gatewayEndpoint READ getGatewayEndpoint WRITE setGatewayEndpoint NOTIFY gatewayEndpointChanged)
Q_PROPERTY(bool isDevGatewayEnv READ isDevGatewayEnv WRITE toggleDevGatewayEnv NOTIFY devGatewayEnvChanged)
public slots:
2023-08-08 19:10:14 +05:00
void toggleAmneziaDns(bool enable);
bool isAmneziaDnsEnabled();
QString getPrimaryDns();
void setPrimaryDns(const QString &dns);
QString getSecondaryDns();
void setSecondaryDns(const QString &dns);
2023-08-08 19:10:14 +05:00
bool isLoggingEnabled();
void toggleLogging(bool enable);
void openLogsFolder();
2024-09-09 20:53:44 +04:00
void openServiceLogsFolder();
2023-08-30 15:10:44 +05:00
void exportLogsFile(const QString &fileName);
2024-09-09 20:53:44 +04:00
void exportServiceLogsFile(const QString &fileName);
void clearLogs();
2023-08-30 15:10:44 +05:00
void backupAppConfig(const QString &fileName);
void restoreAppConfig(const QString &fileName);
void restoreAppConfigFromData(const QByteArray &data);
QString getAppVersion();
void clearSettings();
2023-08-08 19:10:14 +05:00
bool isAutoConnectEnabled();
void toggleAutoConnect(bool enable);
2023-08-24 14:53:52 +05:00
bool isAutoStartEnabled();
void toggleAutoStart(bool enable);
bool isStartMinimizedEnabled();
void toggleStartMinimized(bool enable);
bool isScreenshotsEnabled();
void toggleScreenshotsEnabled(bool enable);
bool isCameraPresent();
2024-04-25 20:01:00 +07:00
bool isKillSwitchEnabled();
void toggleKillSwitch(bool enable);
2024-05-12 18:04:14 +03:00
bool isNotificationPermissionGranted();
void requestNotificationPermission();
QString getInstallationUuid();
void enableDevMode();
bool isDevModeEnabled();
void resetGatewayEndpoint();
void setGatewayEndpoint(const QString &endpoint);
QString getGatewayEndpoint();
bool isDevGatewayEnv();
void toggleDevGatewayEnv(bool enabled);
2024-09-09 14:36:33 +03:00
bool isOnTv();
signals:
void primaryDnsChanged();
void secondaryDnsChanged();
void loggingStateChanged();
void restoreBackupFinished();
void changeSettingsFinished(const QString &finishedMessage);
2023-08-08 19:10:14 +05:00
void changeSettingsErrorOccurred(const QString &errorMessage);
void saveFile(const QString &fileName, const QString &data);
void importBackupFromOutside(QString filePath);
void amneziaDnsToggled(bool enable);
2024-03-20 21:22:29 +07:00
void loggingDisableByWatcher();
2024-05-12 18:04:14 +03:00
void onNotificationStateChanged();
void devModeEnabled();
void gatewayEndpointChanged(const QString &endpoint);
void devGatewayEnvChanged(bool enabled);
private:
QSharedPointer<ServersModel> m_serversModel;
QSharedPointer<ContainersModel> m_containersModel;
QSharedPointer<LanguageModel> m_languageModel;
QSharedPointer<SitesModel> m_sitesModel;
QSharedPointer<AppSplitTunnelingModel> m_appSplitTunnelingModel;
std::shared_ptr<Settings> m_settings;
QString m_appVersion;
2024-03-20 21:22:29 +07:00
QDateTime m_loggingDisableDate;
bool m_isDevModeEnabled = false;
2024-03-20 21:22:29 +07:00
void checkIfNeedDisableLogs();
};
#endif // SETTINGSCONTROLLER_H