2023-06-16 13:43:55 +09:00
|
|
|
#ifndef SETTINGSCONTROLLER_H
|
|
|
|
|
#define SETTINGSCONTROLLER_H
|
|
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
|
|
|
|
|
#include "ui/models/containers_model.h"
|
2023-08-16 12:11:34 +05:00
|
|
|
#include "ui/models/languageModel.h"
|
2023-06-16 13:43:55 +09:00
|
|
|
#include "ui/models/servers_model.h"
|
2024-01-06 20:38:41 +07:00
|
|
|
#include "ui/models/sites_model.h"
|
2024-04-08 16:13:26 +05:00
|
|
|
#include "ui/models/appSplitTunnelingModel.h"
|
2023-06-16 13:43:55 +09:00
|
|
|
|
|
|
|
|
class SettingsController : public QObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
public:
|
|
|
|
|
explicit SettingsController(const QSharedPointer<ServersModel> &serversModel,
|
|
|
|
|
const QSharedPointer<ContainersModel> &containersModel,
|
2023-08-16 12:11:34 +05:00
|
|
|
const QSharedPointer<LanguageModel> &languageModel,
|
2024-01-06 20:38:41 +07:00
|
|
|
const QSharedPointer<SitesModel> &sitesModel,
|
2024-04-08 16:13:26 +05:00
|
|
|
const QSharedPointer<AppSplitTunnelingModel> &appSplitTunnelingModel,
|
2023-06-27 19:07:42 +09:00
|
|
|
const std::shared_ptr<Settings> &settings, QObject *parent = nullptr);
|
2023-06-16 13:43:55 +09:00
|
|
|
|
|
|
|
|
Q_PROPERTY(QString primaryDns READ getPrimaryDns WRITE setPrimaryDns NOTIFY primaryDnsChanged)
|
2023-06-27 19:07:42 +09:00
|
|
|
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)
|
2025-05-02 23:54:36 -07:00
|
|
|
Q_PROPERTY(bool isKillSwitchEnabled READ isKillSwitchEnabled WRITE toggleKillSwitch NOTIFY killSwitchEnabledChanged)
|
|
|
|
|
Q_PROPERTY(bool strictKillSwitchEnabled READ isStrictKillSwitchEnabled WRITE toggleStrictKillSwitch NOTIFY strictKillSwitchEnabledChanged)
|
2023-06-16 13:43:55 +09:00
|
|
|
|
2024-08-20 16:54:05 +07:00
|
|
|
Q_PROPERTY(bool isDevModeEnabled READ isDevModeEnabled NOTIFY devModeEnabled)
|
|
|
|
|
Q_PROPERTY(QString gatewayEndpoint READ getGatewayEndpoint WRITE setGatewayEndpoint NOTIFY gatewayEndpointChanged)
|
2024-09-09 16:27:29 +04:00
|
|
|
Q_PROPERTY(bool isDevGatewayEnv READ isDevGatewayEnv WRITE toggleDevGatewayEnv NOTIFY devGatewayEnvChanged)
|
2024-08-20 16:54:05 +07:00
|
|
|
|
2025-01-07 06:38:32 +03:00
|
|
|
Q_PROPERTY(bool isHomeAdLabelVisible READ isHomeAdLabelVisible NOTIFY isHomeAdLabelVisibleChanged)
|
2025-09-03 08:03:10 +04:00
|
|
|
Q_PROPERTY(bool startMinimized READ isStartMinimizedEnabled NOTIFY startMinimizedChanged)
|
2025-11-11 17:03:27 +03:00
|
|
|
Q_PROPERTY(int safeAreaTopMargin READ getSafeAreaTopMargin NOTIFY safeAreaTopMarginChanged)
|
|
|
|
|
Q_PROPERTY(int safeAreaBottomMargin READ getSafeAreaBottomMargin NOTIFY safeAreaBottomMarginChanged)
|
|
|
|
|
Q_PROPERTY(int imeHeight READ getImeHeight NOTIFY imeHeightChanged)
|
2025-01-07 06:38:32 +03:00
|
|
|
|
2023-06-16 13:43:55 +09:00
|
|
|
public slots:
|
2023-08-08 19:10:14 +05:00
|
|
|
void toggleAmneziaDns(bool enable);
|
2023-06-16 13:43:55 +09:00
|
|
|
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();
|
2023-07-14 22:59:49 +09:00
|
|
|
void toggleLogging(bool enable);
|
2023-06-16 13:43:55 +09:00
|
|
|
|
|
|
|
|
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);
|
2023-06-16 13:43:55 +09:00
|
|
|
void clearLogs();
|
|
|
|
|
|
2023-08-30 15:10:44 +05:00
|
|
|
void backupAppConfig(const QString &fileName);
|
|
|
|
|
void restoreAppConfig(const QString &fileName);
|
2024-03-14 04:22:10 +07:00
|
|
|
void restoreAppConfigFromData(const QByteArray &data);
|
2023-06-16 13:43:55 +09:00
|
|
|
|
|
|
|
|
QString getAppVersion();
|
|
|
|
|
|
2023-07-14 22:59:49 +09:00
|
|
|
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);
|
|
|
|
|
|
2026-01-30 06:19:50 +02:00
|
|
|
bool isNewsNotificationsEnabled();
|
|
|
|
|
void toggleNewsNotificationsEnabled(bool enable);
|
|
|
|
|
|
2023-10-01 12:06:50 +03:00
|
|
|
bool isScreenshotsEnabled();
|
|
|
|
|
void toggleScreenshotsEnabled(bool enable);
|
|
|
|
|
|
2024-01-20 18:16:45 +03:00
|
|
|
bool isCameraPresent();
|
|
|
|
|
|
2024-04-25 20:01:00 +07:00
|
|
|
bool isKillSwitchEnabled();
|
|
|
|
|
void toggleKillSwitch(bool enable);
|
|
|
|
|
|
2025-05-02 23:54:36 -07:00
|
|
|
bool isStrictKillSwitchEnabled();
|
|
|
|
|
void toggleStrictKillSwitch(bool enable);
|
|
|
|
|
|
2024-05-12 18:04:14 +03:00
|
|
|
bool isNotificationPermissionGranted();
|
|
|
|
|
void requestNotificationPermission();
|
|
|
|
|
|
2024-08-20 16:54:05 +07:00
|
|
|
QString getInstallationUuid();
|
|
|
|
|
|
|
|
|
|
void enableDevMode();
|
|
|
|
|
bool isDevModeEnabled();
|
|
|
|
|
|
|
|
|
|
void resetGatewayEndpoint();
|
|
|
|
|
void setGatewayEndpoint(const QString &endpoint);
|
|
|
|
|
QString getGatewayEndpoint();
|
2024-09-09 16:27:29 +04:00
|
|
|
bool isDevGatewayEnv();
|
|
|
|
|
void toggleDevGatewayEnv(bool enabled);
|
2024-08-20 16:54:05 +07:00
|
|
|
|
2024-09-09 14:36:33 +03:00
|
|
|
bool isOnTv();
|
2025-11-04 11:43:36 +08:00
|
|
|
bool isEdgeToEdgeEnabled();
|
|
|
|
|
int getStatusBarHeight();
|
|
|
|
|
int getNavigationBarHeight();
|
|
|
|
|
int getSafeAreaTopMargin();
|
|
|
|
|
int getSafeAreaBottomMargin();
|
2025-11-11 17:03:27 +03:00
|
|
|
int getImeHeight();
|
2024-09-09 14:36:33 +03:00
|
|
|
|
2025-01-07 06:38:32 +03:00
|
|
|
bool isHomeAdLabelVisible();
|
|
|
|
|
void disableHomeAdLabel();
|
|
|
|
|
|
2023-06-16 13:43:55 +09:00
|
|
|
signals:
|
|
|
|
|
void primaryDnsChanged();
|
|
|
|
|
void secondaryDnsChanged();
|
2023-07-14 22:59:49 +09:00
|
|
|
void loggingStateChanged();
|
2025-05-02 23:54:36 -07:00
|
|
|
void killSwitchEnabledChanged();
|
|
|
|
|
void strictKillSwitchEnabledChanged(bool enabled);
|
2023-06-16 13:43:55 +09:00
|
|
|
|
2023-07-31 00:13:08 +09:00
|
|
|
void restoreBackupFinished();
|
2023-08-16 12:11:34 +05:00
|
|
|
void changeSettingsFinished(const QString &finishedMessage);
|
2023-08-08 19:10:14 +05:00
|
|
|
void changeSettingsErrorOccurred(const QString &errorMessage);
|
2023-07-31 00:13:08 +09:00
|
|
|
|
2023-09-07 22:45:01 +05:00
|
|
|
void saveFile(const QString &fileName, const QString &data);
|
|
|
|
|
|
2023-09-13 16:11:08 +05:00
|
|
|
void importBackupFromOutside(QString filePath);
|
|
|
|
|
|
2023-12-08 13:50:03 +07:00
|
|
|
void amneziaDnsToggled(bool enable);
|
|
|
|
|
|
2024-03-20 21:22:29 +07:00
|
|
|
void loggingDisableByWatcher();
|
|
|
|
|
|
2024-05-12 18:04:14 +03:00
|
|
|
void onNotificationStateChanged();
|
|
|
|
|
|
2024-08-20 16:54:05 +07:00
|
|
|
void devModeEnabled();
|
|
|
|
|
void gatewayEndpointChanged(const QString &endpoint);
|
2024-09-09 16:27:29 +04:00
|
|
|
void devGatewayEnvChanged(bool enabled);
|
2025-11-11 17:03:27 +03:00
|
|
|
|
|
|
|
|
void imeHeightChanged(int height);
|
|
|
|
|
void safeAreaTopMarginChanged();
|
|
|
|
|
void safeAreaBottomMarginChanged();
|
2024-08-20 16:54:05 +07:00
|
|
|
|
2025-01-07 06:38:32 +03:00
|
|
|
void isHomeAdLabelVisibleChanged(bool visible);
|
2025-09-03 08:03:10 +04:00
|
|
|
void startMinimizedChanged();
|
2025-01-07 06:38:32 +03:00
|
|
|
|
2023-06-16 13:43:55 +09:00
|
|
|
private:
|
|
|
|
|
QSharedPointer<ServersModel> m_serversModel;
|
|
|
|
|
QSharedPointer<ContainersModel> m_containersModel;
|
2023-08-16 12:11:34 +05:00
|
|
|
QSharedPointer<LanguageModel> m_languageModel;
|
2024-01-06 20:38:41 +07:00
|
|
|
QSharedPointer<SitesModel> m_sitesModel;
|
2024-04-08 16:13:26 +05:00
|
|
|
QSharedPointer<AppSplitTunnelingModel> m_appSplitTunnelingModel;
|
2025-11-04 11:43:36 +08:00
|
|
|
|
|
|
|
|
mutable int m_cachedStatusBarHeight = -1;
|
|
|
|
|
mutable int m_cachedNavigationBarHeight = -1;
|
2025-11-12 10:57:53 +03:00
|
|
|
mutable bool m_cachedEdgeToEdgeEnabled = false;
|
|
|
|
|
mutable bool m_edgeToEdgeCached = false;
|
2025-11-11 17:03:27 +03:00
|
|
|
int m_imeHeight = 0;
|
2023-06-16 13:43:55 +09:00
|
|
|
std::shared_ptr<Settings> m_settings;
|
|
|
|
|
|
|
|
|
|
QString m_appVersion;
|
2024-03-20 21:22:29 +07:00
|
|
|
|
2025-08-01 07:54:58 +04:00
|
|
|
QString getPlatform();
|
|
|
|
|
|
2024-03-20 21:22:29 +07:00
|
|
|
QDateTime m_loggingDisableDate;
|
|
|
|
|
|
2024-08-20 16:54:05 +07:00
|
|
|
bool m_isDevModeEnabled = false;
|
|
|
|
|
|
2024-03-20 21:22:29 +07:00
|
|
|
void checkIfNeedDisableLogs();
|
2023-06-16 13:43:55 +09:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // SETTINGSCONTROLLER_H
|