QML gui refact started
This commit is contained in:
parent
febf9cfafb
commit
135b96a280
35 changed files with 1700 additions and 523 deletions
147
client/ui/pages_logic/AppSettingsLogic.cpp
Normal file
147
client/ui/pages_logic/AppSettingsLogic.cpp
Normal file
|
@ -0,0 +1,147 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "ui/qautostart.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "AppSettingsLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
AppSettingsLogic::AppSettingsLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic),
|
||||
m_checkBoxAppSettingsAutostartChecked{false},
|
||||
m_checkBoxAppSettingsAutoconnectChecked{false},
|
||||
m_checkBoxAppSettingsStartMinimizedChecked{false}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void AppSettingsLogic::updateAppSettingsPage()
|
||||
{
|
||||
setCheckBoxAppSettingsAutostartChecked(Autostart::isAutostart());
|
||||
setCheckBoxAppSettingsAutoconnectChecked(m_settings.isAutoConnect());
|
||||
setCheckBoxAppSettingsStartMinimizedChecked(m_settings.isStartMinimized());
|
||||
|
||||
QString ver = QString("%1: %2 (%3)")
|
||||
.arg(tr("Software version"))
|
||||
.arg(QString(APP_MAJOR_VERSION))
|
||||
.arg(__DATE__);
|
||||
setLabelAppSettingsVersionText(ver);
|
||||
}
|
||||
|
||||
bool AppSettingsLogic::getCheckBoxAppSettingsAutostartChecked() const
|
||||
{
|
||||
return m_checkBoxAppSettingsAutostartChecked;
|
||||
}
|
||||
|
||||
void AppSettingsLogic::setCheckBoxAppSettingsAutostartChecked(bool checkBoxAppSettingsAutostartChecked)
|
||||
{
|
||||
if (m_checkBoxAppSettingsAutostartChecked != checkBoxAppSettingsAutostartChecked) {
|
||||
m_checkBoxAppSettingsAutostartChecked = checkBoxAppSettingsAutostartChecked;
|
||||
emit checkBoxAppSettingsAutostartCheckedChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool AppSettingsLogic::getCheckBoxAppSettingsAutoconnectChecked() const
|
||||
{
|
||||
return m_checkBoxAppSettingsAutoconnectChecked;
|
||||
}
|
||||
|
||||
void AppSettingsLogic::setCheckBoxAppSettingsAutoconnectChecked(bool checkBoxAppSettingsAutoconnectChecked)
|
||||
{
|
||||
if (m_checkBoxAppSettingsAutoconnectChecked != checkBoxAppSettingsAutoconnectChecked) {
|
||||
m_checkBoxAppSettingsAutoconnectChecked = checkBoxAppSettingsAutoconnectChecked;
|
||||
emit checkBoxAppSettingsAutoconnectCheckedChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool AppSettingsLogic::getCheckBoxAppSettingsStartMinimizedChecked() const
|
||||
{
|
||||
return m_checkBoxAppSettingsStartMinimizedChecked;
|
||||
}
|
||||
|
||||
void AppSettingsLogic::setCheckBoxAppSettingsStartMinimizedChecked(bool checkBoxAppSettingsStartMinimizedChecked)
|
||||
{
|
||||
if (m_checkBoxAppSettingsStartMinimizedChecked != checkBoxAppSettingsStartMinimizedChecked) {
|
||||
m_checkBoxAppSettingsStartMinimizedChecked = checkBoxAppSettingsStartMinimizedChecked;
|
||||
emit checkBoxAppSettingsStartMinimizedCheckedChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void AppSettingsLogic::onCheckBoxAppSettingsAutostartToggled(bool checked)
|
||||
{
|
||||
if (!checked) {
|
||||
setCheckBoxAppSettingsAutoconnectChecked(false);
|
||||
}
|
||||
Autostart::setAutostart(checked);
|
||||
}
|
||||
|
||||
void AppSettingsLogic::onCheckBoxAppSettingsAutoconnectToggled(bool checked)
|
||||
{
|
||||
m_settings.setAutoConnect(checked);
|
||||
}
|
||||
|
||||
void AppSettingsLogic::onCheckBoxAppSettingsStartMinimizedToggled(bool checked)
|
||||
{
|
||||
m_settings.setStartMinimized(checked);
|
||||
}
|
||||
|
||||
void AppSettingsLogic::setLabelAppSettingsVersionText(const QString &labelAppSettingsVersionText)
|
||||
{
|
||||
if (m_labelAppSettingsVersionText != labelAppSettingsVersionText) {
|
||||
m_labelAppSettingsVersionText = labelAppSettingsVersionText;
|
||||
emit labelAppSettingsVersionTextChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QString AppSettingsLogic::getLabelAppSettingsVersionText() const
|
||||
{
|
||||
return m_labelAppSettingsVersionText;
|
||||
}
|
||||
|
||||
void AppSettingsLogic::onPushButtonAppSettingsOpenLogsChecked()
|
||||
{
|
||||
Debug::openLogsFolder();
|
||||
}
|
68
client/ui/pages_logic/AppSettingsLogic.h
Normal file
68
client/ui/pages_logic/AppSettingsLogic.h
Normal file
|
@ -0,0 +1,68 @@
|
|||
#ifndef APP_SETTINGS_LOGIC_H
|
||||
#define APP_SETTINGS_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class AppSettingsLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Q_INVOKABLE void updateAppSettingsPage();
|
||||
|
||||
Q_PROPERTY(bool checkBoxAppSettingsAutostartChecked READ getCheckBoxAppSettingsAutostartChecked WRITE setCheckBoxAppSettingsAutostartChecked NOTIFY checkBoxAppSettingsAutostartCheckedChanged)
|
||||
Q_PROPERTY(bool checkBoxAppSettingsAutoconnectChecked READ getCheckBoxAppSettingsAutoconnectChecked WRITE setCheckBoxAppSettingsAutoconnectChecked NOTIFY checkBoxAppSettingsAutoconnectCheckedChanged)
|
||||
Q_PROPERTY(bool checkBoxAppSettingsStartMinimizedChecked READ getCheckBoxAppSettingsStartMinimizedChecked WRITE setCheckBoxAppSettingsStartMinimizedChecked NOTIFY checkBoxAppSettingsStartMinimizedCheckedChanged)
|
||||
|
||||
Q_PROPERTY(QString labelAppSettingsVersionText READ getLabelAppSettingsVersionText WRITE setLabelAppSettingsVersionText NOTIFY labelAppSettingsVersionTextChanged)
|
||||
|
||||
Q_INVOKABLE void onCheckBoxAppSettingsAutostartToggled(bool checked);
|
||||
Q_INVOKABLE void onCheckBoxAppSettingsAutoconnectToggled(bool checked);
|
||||
Q_INVOKABLE void onCheckBoxAppSettingsStartMinimizedToggled(bool checked);
|
||||
|
||||
Q_INVOKABLE void onPushButtonAppSettingsOpenLogsChecked();
|
||||
|
||||
public:
|
||||
explicit AppSettingsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~AppSettingsLogic() = default;
|
||||
|
||||
|
||||
bool getCheckBoxAppSettingsAutostartChecked() const;
|
||||
void setCheckBoxAppSettingsAutostartChecked(bool checkBoxAppSettingsAutostartChecked);
|
||||
bool getCheckBoxAppSettingsAutoconnectChecked() const;
|
||||
void setCheckBoxAppSettingsAutoconnectChecked(bool checkBoxAppSettingsAutoconnectChecked);
|
||||
bool getCheckBoxAppSettingsStartMinimizedChecked() const;
|
||||
void setCheckBoxAppSettingsStartMinimizedChecked(bool checkBoxAppSettingsStartMinimizedChecked);
|
||||
|
||||
QString getLabelAppSettingsVersionText() const;
|
||||
void setLabelAppSettingsVersionText(const QString &labelAppSettingsVersionText);
|
||||
|
||||
signals:
|
||||
void checkBoxAppSettingsAutostartCheckedChanged();
|
||||
void checkBoxAppSettingsAutoconnectCheckedChanged();
|
||||
void checkBoxAppSettingsStartMinimizedCheckedChanged();
|
||||
|
||||
void labelAppSettingsVersionTextChanged();
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
bool m_checkBoxAppSettingsAutostartChecked;
|
||||
bool m_checkBoxAppSettingsAutoconnectChecked;
|
||||
bool m_checkBoxAppSettingsStartMinimizedChecked;
|
||||
|
||||
QString m_labelAppSettingsVersionText;
|
||||
|
||||
};
|
||||
#endif // APP_SETTINGS_LOGIC_H
|
66
client/ui/pages_logic/GeneralSettingsLogic.cpp
Normal file
66
client/ui/pages_logic/GeneralSettingsLogic.cpp
Normal file
|
@ -0,0 +1,66 @@
|
|||
//#include <QApplication>
|
||||
//#include <QClipboard>
|
||||
//#include <QDebug>
|
||||
//#include <QDesktopServices>
|
||||
//#include <QFileDialog>
|
||||
//#include <QHBoxLayout>
|
||||
//#include <QHostInfo>
|
||||
//#include <QItemSelectionModel>
|
||||
//#include <QJsonDocument>
|
||||
//#include <QJsonObject>
|
||||
//#include <QKeyEvent>
|
||||
//#include <QMenu>
|
||||
//#include <QMessageBox>
|
||||
//#include <QMetaEnum>
|
||||
//#include <QSysInfo>
|
||||
//#include <QThread>
|
||||
//#include <QTimer>
|
||||
//#include <QRegularExpression>
|
||||
//#include <QSaveFile>
|
||||
|
||||
#include "GeneralSettingsLogic.h"
|
||||
#include "../uilogic.h"
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
GeneralSettingsLogic::GeneralSettingsLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void GeneralSettingsLogic::updateGeneralSettingPage()
|
||||
{
|
||||
setPushButtonGeneralSettingsShareConnectionEnable(m_settings.haveAuthData(m_settings.defaultServerIndex()));
|
||||
}
|
||||
|
||||
bool GeneralSettingsLogic::getPushButtonGeneralSettingsShareConnectionEnable() const
|
||||
{
|
||||
return m_pushButtonGeneralSettingsShareConnectionEnable;
|
||||
}
|
||||
|
||||
void GeneralSettingsLogic::setPushButtonGeneralSettingsShareConnectionEnable(bool pushButtonGeneralSettingsShareConnectionEnable)
|
||||
{
|
||||
if (m_pushButtonGeneralSettingsShareConnectionEnable != pushButtonGeneralSettingsShareConnectionEnable) {
|
||||
m_pushButtonGeneralSettingsShareConnectionEnable = pushButtonGeneralSettingsShareConnectionEnable;
|
||||
emit pushButtonGeneralSettingsShareConnectionEnableChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void GeneralSettingsLogic::onPushButtonGeneralSettingsServerSettingsClicked()
|
||||
{
|
||||
m_uiLogic->selectedServerIndex = m_settings.defaultServerIndex();
|
||||
m_uiLogic->goToPage(Page::ServerSettings);
|
||||
}
|
||||
|
||||
void GeneralSettingsLogic::onPushButtonGeneralSettingsShareConnectionClicked()
|
||||
{
|
||||
m_uiLogic->selectedServerIndex = m_settings.defaultServerIndex();
|
||||
m_uiLogic->selectedDockerContainer = m_settings.defaultContainer(m_uiLogic->selectedServerIndex);
|
||||
|
||||
m_uiLogic->updateSharingPage(m_uiLogic->selectedServerIndex, m_settings.serverCredentials(m_uiLogic->selectedServerIndex), m_uiLogic->selectedDockerContainer);
|
||||
m_uiLogic->goToPage(Page::ShareConnection);
|
||||
}
|
48
client/ui/pages_logic/GeneralSettingsLogic.h
Normal file
48
client/ui/pages_logic/GeneralSettingsLogic.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
#ifndef GENERAL_SETTINGS_LOGIC_H
|
||||
#define GENERAL_SETTINGS_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class GeneralSettingsLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Q_INVOKABLE void updateGeneralSettingPage();
|
||||
|
||||
Q_PROPERTY(bool pushButtonGeneralSettingsShareConnectionEnable READ getPushButtonGeneralSettingsShareConnectionEnable WRITE setPushButtonGeneralSettingsShareConnectionEnable NOTIFY pushButtonGeneralSettingsShareConnectionEnableChanged)
|
||||
|
||||
Q_INVOKABLE void onPushButtonGeneralSettingsServerSettingsClicked();
|
||||
Q_INVOKABLE void onPushButtonGeneralSettingsShareConnectionClicked();
|
||||
|
||||
public:
|
||||
explicit GeneralSettingsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~GeneralSettingsLogic() = default;
|
||||
|
||||
|
||||
|
||||
bool getPushButtonGeneralSettingsShareConnectionEnable() const;
|
||||
void setPushButtonGeneralSettingsShareConnectionEnable(bool pushButtonGeneralSettingsShareConnectionEnable);
|
||||
|
||||
signals:
|
||||
void pushButtonGeneralSettingsShareConnectionEnableChanged();
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
bool m_pushButtonGeneralSettingsShareConnectionEnable;
|
||||
|
||||
};
|
||||
#endif // GENERAL_SETTINGS_LOGIC_H
|
101
client/ui/pages_logic/NetworkSettingsLogic.cpp
Normal file
101
client/ui/pages_logic/NetworkSettingsLogic.cpp
Normal file
|
@ -0,0 +1,101 @@
|
|||
//#include <QApplication>
|
||||
//#include <QClipboard>
|
||||
//#include <QDebug>
|
||||
//#include <QDesktopServices>
|
||||
//#include <QFileDialog>
|
||||
//#include <QHBoxLayout>
|
||||
//#include <QHostInfo>
|
||||
//#include <QItemSelectionModel>
|
||||
//#include <QJsonDocument>
|
||||
//#include <QJsonObject>
|
||||
//#include <QKeyEvent>
|
||||
//#include <QMenu>
|
||||
//#include <QMessageBox>
|
||||
//#include <QMetaEnum>
|
||||
//#include <QSysInfo>
|
||||
//#include <QThread>
|
||||
//#include <QTimer>
|
||||
//#include <QRegularExpression>
|
||||
//#include <QSaveFile>
|
||||
|
||||
#include "defines.h"
|
||||
#include "NetworkSettingsLogic.h"
|
||||
#include "utils.h"
|
||||
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
NetworkSettingsLogic::NetworkSettingsLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic),
|
||||
m_ipAddressValidatorRegex{Utils::ipAddressRegExp().pattern()}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void NetworkSettingsLogic::updateNetworkSettingsPage()
|
||||
{
|
||||
setLineEditNetworkSettingsDns1Text(m_settings.primaryDns());
|
||||
setLineEditNetworkSettingsDns2Text(m_settings.secondaryDns());
|
||||
}
|
||||
|
||||
QString NetworkSettingsLogic::getLineEditNetworkSettingsDns1Text() const
|
||||
{
|
||||
return m_lineEditNetworkSettingsDns1Text;
|
||||
}
|
||||
|
||||
void NetworkSettingsLogic::setLineEditNetworkSettingsDns1Text(const QString &lineEditNetworkSettingsDns1Text)
|
||||
{
|
||||
if (m_lineEditNetworkSettingsDns1Text != lineEditNetworkSettingsDns1Text) {
|
||||
m_lineEditNetworkSettingsDns1Text = lineEditNetworkSettingsDns1Text;
|
||||
emit lineEditNetworkSettingsDns1TextChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QString NetworkSettingsLogic::getLineEditNetworkSettingsDns2Text() const
|
||||
{
|
||||
return m_lineEditNetworkSettingsDns2Text;
|
||||
}
|
||||
|
||||
void NetworkSettingsLogic::setLineEditNetworkSettingsDns2Text(const QString &lineEditNetworkSettingsDns2Text)
|
||||
{
|
||||
if (m_lineEditNetworkSettingsDns2Text != lineEditNetworkSettingsDns2Text) {
|
||||
m_lineEditNetworkSettingsDns2Text = lineEditNetworkSettingsDns2Text;
|
||||
emit lineEditNetworkSettingsDns2TextChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkSettingsLogic::onLineEditNetworkSettingsDns1EditFinished(const QString &text)
|
||||
{
|
||||
QRegExp reg{getIpAddressValidatorRegex()};
|
||||
if (reg.exactMatch(text)) {
|
||||
m_settings.setPrimaryDns(text);
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkSettingsLogic::onLineEditNetworkSettingsDns2EditFinished(const QString &text)
|
||||
{
|
||||
QRegExp reg{getIpAddressValidatorRegex()};
|
||||
if (reg.exactMatch(text)) {
|
||||
m_settings.setSecondaryDns(text);
|
||||
}
|
||||
}
|
||||
|
||||
void NetworkSettingsLogic::onPushButtonNetworkSettingsResetdns1Clicked()
|
||||
{
|
||||
m_settings.setPrimaryDns(m_settings.cloudFlareNs1);
|
||||
updateNetworkSettingsPage();
|
||||
}
|
||||
|
||||
void NetworkSettingsLogic::onPushButtonNetworkSettingsResetdns2Clicked()
|
||||
{
|
||||
m_settings.setSecondaryDns(m_settings.cloudFlareNs2);
|
||||
updateNetworkSettingsPage();
|
||||
}
|
||||
|
||||
QString NetworkSettingsLogic::getIpAddressValidatorRegex() const
|
||||
{
|
||||
return m_ipAddressValidatorRegex;
|
||||
}
|
61
client/ui/pages_logic/NetworkSettingsLogic.h
Normal file
61
client/ui/pages_logic/NetworkSettingsLogic.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
#ifndef NETWORK_SETTINGS_LOGIC_H
|
||||
#define NETWORK_SETTINGS_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class NetworkSettingsLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Q_INVOKABLE void updateNetworkSettingsPage();
|
||||
|
||||
Q_PROPERTY(QString lineEditNetworkSettingsDns1Text READ getLineEditNetworkSettingsDns1Text WRITE setLineEditNetworkSettingsDns1Text NOTIFY lineEditNetworkSettingsDns1TextChanged)
|
||||
Q_PROPERTY(QString lineEditNetworkSettingsDns2Text READ getLineEditNetworkSettingsDns2Text WRITE setLineEditNetworkSettingsDns2Text NOTIFY lineEditNetworkSettingsDns2TextChanged)
|
||||
|
||||
Q_PROPERTY(QString ipAddressValidatorRegex READ getIpAddressValidatorRegex CONSTANT)
|
||||
|
||||
Q_INVOKABLE void onLineEditNetworkSettingsDns1EditFinished(const QString& text);
|
||||
Q_INVOKABLE void onLineEditNetworkSettingsDns2EditFinished(const QString& text);
|
||||
Q_INVOKABLE void onPushButtonNetworkSettingsResetdns1Clicked();
|
||||
Q_INVOKABLE void onPushButtonNetworkSettingsResetdns2Clicked();
|
||||
|
||||
public:
|
||||
explicit NetworkSettingsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~NetworkSettingsLogic() = default;
|
||||
|
||||
|
||||
|
||||
QString getLineEditNetworkSettingsDns1Text() const;
|
||||
void setLineEditNetworkSettingsDns1Text(const QString &lineEditNetworkSettingsDns1Text);
|
||||
QString getLineEditNetworkSettingsDns2Text() const;
|
||||
void setLineEditNetworkSettingsDns2Text(const QString &lineEditNetworkSettingsDns2Text);
|
||||
|
||||
QString getIpAddressValidatorRegex() const;
|
||||
|
||||
signals:
|
||||
void lineEditNetworkSettingsDns1TextChanged();
|
||||
void lineEditNetworkSettingsDns2TextChanged();
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
QString m_lineEditNetworkSettingsDns1Text;
|
||||
QString m_lineEditNetworkSettingsDns2Text;
|
||||
|
||||
QString m_ipAddressValidatorRegex;
|
||||
};
|
||||
#endif // NETWORK_SETTINGS_LOGIC_H
|
54
client/ui/pages_logic/NewServerLogic.cpp
Normal file
54
client/ui/pages_logic/NewServerLogic.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "NewServerLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
NewServerLogic::NewServerLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
35
client/ui/pages_logic/NewServerLogic.h
Normal file
35
client/ui/pages_logic/NewServerLogic.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
#ifndef NEW_SERVER_LOGIC_H
|
||||
#define NEW_SERVER_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class NewServerLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit NewServerLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~NewServerLogic() = default;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif // NEW_SERVER_LOGIC_H
|
54
client/ui/pages_logic/ProtocolSettingsLogic.cpp
Normal file
54
client/ui/pages_logic/ProtocolSettingsLogic.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "ProtocolSettingsLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
ProtocolSettingsLogic::ProtocolSettingsLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
35
client/ui/pages_logic/ProtocolSettingsLogic.h
Normal file
35
client/ui/pages_logic/ProtocolSettingsLogic.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
#ifndef PROTOCOL_SETTINGS_LOGIC_H
|
||||
#define PROTOCOL_SETTINGS_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class ProtocolSettingsLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ProtocolSettingsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~ProtocolSettingsLogic() = default;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif // PROTOCOL_SETTINGS_LOGIC_H
|
54
client/ui/pages_logic/ServerListLogic.cpp
Normal file
54
client/ui/pages_logic/ServerListLogic.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "ServerListLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
ServerListLogic::ServerListLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
34
client/ui/pages_logic/ServerListLogic.h
Normal file
34
client/ui/pages_logic/ServerListLogic.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#ifndef SERVER_LIST_LOGIC_H
|
||||
#define SERVER_LIST_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class ServerListLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ServerListLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~ServerListLogic() = default;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
|
||||
};
|
||||
#endif // SERVER_LIST_LOGIC_H
|
54
client/ui/pages_logic/ServerSettingsLogic.cpp
Normal file
54
client/ui/pages_logic/ServerSettingsLogic.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "ServerSettingsLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
ServerSettingsLogic::ServerSettingsLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
35
client/ui/pages_logic/ServerSettingsLogic.h
Normal file
35
client/ui/pages_logic/ServerSettingsLogic.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
#ifndef SERVER_SETTINGS_LOGIC_H
|
||||
#define SERVER_SETTINGS_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class ServerSettingsLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ServerSettingsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~ServerSettingsLogic() = default;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif // SERVER_SETTINGS_LOGIC_H
|
54
client/ui/pages_logic/ServerVpnProtocolsLogic.cpp
Normal file
54
client/ui/pages_logic/ServerVpnProtocolsLogic.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "ServerVpnProtocolsLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
ServerVpnProtocolsLogic::ServerVpnProtocolsLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
35
client/ui/pages_logic/ServerVpnProtocolsLogic.h
Normal file
35
client/ui/pages_logic/ServerVpnProtocolsLogic.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
#ifndef SERVER_VPN_PROTOCOLS_LOGIC_H
|
||||
#define SERVER_VPN_PROTOCOLS_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class ServerVpnProtocolsLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ServerVpnProtocolsLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~ServerVpnProtocolsLogic() = default;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif // SERVER_VPN_PROTOCOLS_LOGIC_H
|
54
client/ui/pages_logic/ShareConnectionLogic.cpp
Normal file
54
client/ui/pages_logic/ShareConnectionLogic.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "ShareConnectionLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
ShareConnectionLogic::ShareConnectionLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
35
client/ui/pages_logic/ShareConnectionLogic.h
Normal file
35
client/ui/pages_logic/ShareConnectionLogic.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
#ifndef SHARE_CONNECTION_LOGIC_H
|
||||
#define SHARE_CONNECTION_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class ShareConnectionLogic: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ShareConnectionLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~ShareConnectionLogic() = default;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif // SHARE_CONNECTION_LOGIC_H
|
202
client/ui/pages_logic/SitesLogic.cpp
Normal file
202
client/ui/pages_logic/SitesLogic.cpp
Normal file
|
@ -0,0 +1,202 @@
|
|||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QHostInfo>
|
||||
|
||||
|
||||
#include "SitesLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#include "../uilogic.h"
|
||||
#include "../sites_model.h"
|
||||
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
SitesLogic::SitesLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic),
|
||||
m_labelSitesAddCustomText{},
|
||||
m_tableViewSitesModel{nullptr},
|
||||
m_lineEditSitesAddCustomText{}
|
||||
{
|
||||
sitesModels.insert(Settings::VpnOnlyForwardSites, new SitesModel(Settings::VpnOnlyForwardSites));
|
||||
sitesModels.insert(Settings::VpnAllExceptSites, new SitesModel(Settings::VpnAllExceptSites));
|
||||
}
|
||||
|
||||
void SitesLogic::updateSitesPage()
|
||||
{
|
||||
Settings::RouteMode m = m_settings.routeMode();
|
||||
if (m == Settings::VpnAllSites) return;
|
||||
|
||||
if (m == Settings::VpnOnlyForwardSites) {
|
||||
setLabelSitesAddCustomText(tr("These sites will be opened using VPN"));
|
||||
}
|
||||
if (m == Settings::VpnAllExceptSites) {
|
||||
setLabelSitesAddCustomText(tr("These sites will be excepted from VPN"));
|
||||
}
|
||||
|
||||
setTableViewSitesModel(sitesModels.value(m));
|
||||
sitesModels.value(m)->resetCache();
|
||||
}
|
||||
|
||||
QString SitesLogic::getLabelSitesAddCustomText() const
|
||||
{
|
||||
return m_labelSitesAddCustomText;
|
||||
}
|
||||
|
||||
void SitesLogic::setLabelSitesAddCustomText(const QString &labelSitesAddCustomText)
|
||||
{
|
||||
if (m_labelSitesAddCustomText != labelSitesAddCustomText) {
|
||||
m_labelSitesAddCustomText = labelSitesAddCustomText;
|
||||
emit labelSitesAddCustomTextChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QObject* SitesLogic::getTableViewSitesModel() const
|
||||
{
|
||||
return m_tableViewSitesModel;
|
||||
}
|
||||
|
||||
void SitesLogic::setTableViewSitesModel(QObject* tableViewSitesModel)
|
||||
{
|
||||
if (m_tableViewSitesModel != tableViewSitesModel) {
|
||||
m_tableViewSitesModel = tableViewSitesModel;
|
||||
emit tableViewSitesModelChanged();
|
||||
}
|
||||
}
|
||||
|
||||
QString SitesLogic::getLineEditSitesAddCustomText() const
|
||||
{
|
||||
return m_lineEditSitesAddCustomText;
|
||||
}
|
||||
|
||||
void SitesLogic::setLineEditSitesAddCustomText(const QString &lineEditSitesAddCustomText)
|
||||
{
|
||||
if (m_lineEditSitesAddCustomText != lineEditSitesAddCustomText) {
|
||||
m_lineEditSitesAddCustomText = lineEditSitesAddCustomText;
|
||||
emit lineEditSitesAddCustomTextChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void SitesLogic::onPushButtonAddCustomSitesClicked()
|
||||
{
|
||||
if (m_uiLogic->getRadioButtonVpnModeAllSitesChecked()) {
|
||||
return;
|
||||
}
|
||||
Settings::RouteMode mode = m_settings.routeMode();
|
||||
|
||||
QString newSite = getLineEditSitesAddCustomText();
|
||||
|
||||
if (newSite.isEmpty()) return;
|
||||
if (!newSite.contains(".")) return;
|
||||
|
||||
if (!Utils::ipAddressWithSubnetRegExp().exactMatch(newSite)) {
|
||||
// get domain name if it present
|
||||
newSite.replace("https://", "");
|
||||
newSite.replace("http://", "");
|
||||
newSite.replace("ftp://", "");
|
||||
|
||||
newSite = newSite.split("/", QString::SkipEmptyParts).first();
|
||||
}
|
||||
|
||||
const auto &cbProcess = [this, mode](const QString &newSite, const QString &ip) {
|
||||
m_settings.addVpnSite(mode, newSite, ip);
|
||||
|
||||
if (!ip.isEmpty()) {
|
||||
m_uiLogic->m_vpnConnection->addRoutes(QStringList() << ip);
|
||||
m_uiLogic->m_vpnConnection->flushDns();
|
||||
}
|
||||
else if (Utils::ipAddressWithSubnetRegExp().exactMatch(newSite)) {
|
||||
m_uiLogic->m_vpnConnection->addRoutes(QStringList() << newSite);
|
||||
m_uiLogic->m_vpnConnection->flushDns();
|
||||
}
|
||||
|
||||
updateSitesPage();
|
||||
};
|
||||
|
||||
const auto &cbResolv = [this, cbProcess](const QHostInfo &hostInfo){
|
||||
const QList<QHostAddress> &addresses = hostInfo.addresses();
|
||||
QString ipv4Addr;
|
||||
for (const QHostAddress &addr: hostInfo.addresses()) {
|
||||
if (addr.protocol() == QAbstractSocket::NetworkLayerProtocol::IPv4Protocol) {
|
||||
cbProcess(hostInfo.hostName(), addr.toString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
setLineEditSitesAddCustomText("");
|
||||
|
||||
if (Utils::ipAddressWithSubnetRegExp().exactMatch(newSite)) {
|
||||
cbProcess(newSite, "");
|
||||
return;
|
||||
}
|
||||
else {
|
||||
cbProcess(newSite, "");
|
||||
updateSitesPage();
|
||||
QHostInfo::lookupHost(newSite, this, cbResolv);
|
||||
}
|
||||
}
|
||||
|
||||
void SitesLogic::onPushButtonSitesDeleteClicked(int row)
|
||||
{
|
||||
Settings::RouteMode mode = m_settings.routeMode();
|
||||
|
||||
auto siteModel = qobject_cast<SitesModel*> (getTableViewSitesModel());
|
||||
if (!siteModel) {
|
||||
return;
|
||||
}
|
||||
if (row < 0 || row >= siteModel->rowCount()) {
|
||||
return;
|
||||
}
|
||||
|
||||
{
|
||||
QStringList sites;
|
||||
sites.append(siteModel->data(row, 0).toString());
|
||||
m_settings.removeVpnSites(mode, sites);
|
||||
}
|
||||
|
||||
if (m_uiLogic->m_vpnConnection->connectionState() == VpnProtocol::Connected) {
|
||||
QStringList ips;
|
||||
ips.append(siteModel->data(row, 1).toString());
|
||||
m_uiLogic->m_vpnConnection->deleteRoutes(ips);
|
||||
m_uiLogic->m_vpnConnection->flushDns();
|
||||
}
|
||||
|
||||
updateSitesPage();
|
||||
}
|
||||
|
||||
void SitesLogic::onPushButtonSitesImportClicked(const QString& fileName)
|
||||
{
|
||||
QFile file(QUrl{fileName}.toLocalFile());
|
||||
if (!file.open(QIODevice::ReadOnly)) {
|
||||
qDebug() << "Can't open file " << QUrl{fileName}.toLocalFile();
|
||||
return;
|
||||
}
|
||||
|
||||
Settings::RouteMode mode = m_settings.routeMode();
|
||||
|
||||
QStringList ips;
|
||||
while (!file.atEnd()) {
|
||||
QString line = file.readLine();
|
||||
|
||||
int pos = 0;
|
||||
QRegExp rx = Utils::ipAddressWithSubnetRegExp();
|
||||
while ((pos = rx.indexIn(line, pos)) != -1) {
|
||||
ips << rx.cap(0);
|
||||
pos += rx.matchedLength();
|
||||
}
|
||||
}
|
||||
|
||||
m_settings.addVpnIps(mode, ips);
|
||||
|
||||
m_uiLogic->m_vpnConnection->addRoutes(QStringList() << ips);
|
||||
m_uiLogic->m_vpnConnection->flushDns();
|
||||
|
||||
updateSitesPage();
|
||||
}
|
||||
|
60
client/ui/pages_logic/SitesLogic.h
Normal file
60
client/ui/pages_logic/SitesLogic.h
Normal file
|
@ -0,0 +1,60 @@
|
|||
#ifndef SITES_LOGIC_H
|
||||
#define SITES_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
class SitesModel;
|
||||
|
||||
class SitesLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Q_INVOKABLE void updateSitesPage();
|
||||
|
||||
Q_PROPERTY(QString labelSitesAddCustomText READ getLabelSitesAddCustomText WRITE setLabelSitesAddCustomText NOTIFY labelSitesAddCustomTextChanged)
|
||||
Q_PROPERTY(QObject* tableViewSitesModel READ getTableViewSitesModel NOTIFY tableViewSitesModelChanged)
|
||||
Q_PROPERTY(QString lineEditSitesAddCustomText READ getLineEditSitesAddCustomText WRITE setLineEditSitesAddCustomText NOTIFY lineEditSitesAddCustomTextChanged)
|
||||
|
||||
Q_INVOKABLE void onPushButtonAddCustomSitesClicked();
|
||||
Q_INVOKABLE void onPushButtonSitesDeleteClicked(int row);
|
||||
Q_INVOKABLE void onPushButtonSitesImportClicked(const QString &fileName);
|
||||
|
||||
public:
|
||||
explicit SitesLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~SitesLogic() = default;
|
||||
|
||||
|
||||
|
||||
QString getLabelSitesAddCustomText() const;
|
||||
void setLabelSitesAddCustomText(const QString &labelSitesAddCustomText);
|
||||
QObject* getTableViewSitesModel() const;
|
||||
void setTableViewSitesModel(QObject *tableViewSitesModel);
|
||||
QString getLineEditSitesAddCustomText() const;
|
||||
void setLineEditSitesAddCustomText(const QString &lineEditSitesAddCustomText);
|
||||
|
||||
signals:
|
||||
void labelSitesAddCustomTextChanged();
|
||||
void tableViewSitesModelChanged();
|
||||
void lineEditSitesAddCustomTextChanged();
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
QString m_labelSitesAddCustomText;
|
||||
QObject* m_tableViewSitesModel;
|
||||
QString m_lineEditSitesAddCustomText;
|
||||
|
||||
QMap<Settings::RouteMode, SitesModel *> sitesModels;
|
||||
};
|
||||
#endif // SITES_LOGIC_H
|
54
client/ui/pages_logic/VpnLogic.cpp
Normal file
54
client/ui/pages_logic/VpnLogic.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "VpnLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
VpnLogic::VpnLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
34
client/ui/pages_logic/VpnLogic.h
Normal file
34
client/ui/pages_logic/VpnLogic.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
#ifndef VPN_LOGIC_H
|
||||
#define VPN_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class VpnLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit VpnLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~VpnLogic() = default;
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif // VPN_LOGIC_H
|
54
client/ui/pages_logic/WizardLogic.cpp
Normal file
54
client/ui/pages_logic/WizardLogic.cpp
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <QApplication>
|
||||
#include <QClipboard>
|
||||
#include <QDebug>
|
||||
#include <QDesktopServices>
|
||||
#include <QFileDialog>
|
||||
#include <QHBoxLayout>
|
||||
#include <QHostInfo>
|
||||
#include <QItemSelectionModel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QKeyEvent>
|
||||
#include <QMenu>
|
||||
#include <QMessageBox>
|
||||
#include <QMetaEnum>
|
||||
#include <QSysInfo>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QRegularExpression>
|
||||
#include <QSaveFile>
|
||||
|
||||
//#include "configurators/cloak_configurator.h"
|
||||
//#include "configurators/vpn_configurator.h"
|
||||
//#include "configurators/openvpn_configurator.h"
|
||||
//#include "configurators/shadowsocks_configurator.h"
|
||||
//#include "configurators/ssh_configurator.h"
|
||||
|
||||
//#include "core/servercontroller.h"
|
||||
//#include "core/server_defs.h"
|
||||
//#include "core/errorstrings.h"
|
||||
|
||||
//#include "protocols/protocols_defs.h"
|
||||
//#include "protocols/shadowsocksvpnprotocol.h"
|
||||
|
||||
#include "debug.h"
|
||||
#include "defines.h"
|
||||
#include "WizardLogic.h"
|
||||
#include "utils.h"
|
||||
#include "vpnconnection.h"
|
||||
#include <functional>
|
||||
|
||||
#if defined Q_OS_MAC || defined Q_OS_LINUX
|
||||
#include "ui/macos_util.h"
|
||||
#endif
|
||||
|
||||
using namespace amnezia;
|
||||
using namespace PageEnumNS;
|
||||
|
||||
|
||||
WizardLogic::WizardLogic(UiLogic *uiLogic, QObject *parent):
|
||||
QObject(parent),
|
||||
m_uiLogic(uiLogic)
|
||||
{
|
||||
|
||||
}
|
35
client/ui/pages_logic/WizardLogic.h
Normal file
35
client/ui/pages_logic/WizardLogic.h
Normal file
|
@ -0,0 +1,35 @@
|
|||
#ifndef WIZARD_LOGIC_H
|
||||
#define WIZARD_LOGIC_H
|
||||
|
||||
#include "../pages.h"
|
||||
#include "settings.h"
|
||||
|
||||
class UiLogic;
|
||||
|
||||
class WizardLogic : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WizardLogic(UiLogic *uiLogic, QObject *parent = nullptr);
|
||||
~WizardLogic() = default;
|
||||
|
||||
|
||||
signals:
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
|
||||
|
||||
private:
|
||||
Settings m_settings;
|
||||
UiLogic *m_uiLogic;
|
||||
|
||||
|
||||
|
||||
};
|
||||
#endif // WIZARD_LOGIC_H
|
Loading…
Add table
Add a link
Reference in a new issue