Wizard Logic added

TODO_REFACTs fixed
This commit is contained in:
pokamest 2021-09-06 11:44:03 +03:00
parent ace304914e
commit d90211ef48
7 changed files with 267 additions and 233 deletions

View file

@ -1,25 +1,6 @@
//#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"
#include "ShareConnectionLogic.h"
using namespace amnezia;
using namespace PageEnumNS;
@ -61,7 +42,6 @@ void GeneralSettingsLogic::onPushButtonGeneralSettingsShareConnectionClicked()
m_uiLogic->selectedServerIndex = m_settings.defaultServerIndex();
m_uiLogic->selectedDockerContainer = m_settings.defaultContainer(m_uiLogic->selectedServerIndex);
// TODO_REFACT
//m_uiLogic->updateSharingPage(m_uiLogic->selectedServerIndex, m_settings.serverCredentials(m_uiLogic->selectedServerIndex), m_uiLogic->selectedDockerContainer);
m_uiLogic->shareConnectionLogic()->updateSharingPage(m_uiLogic->selectedServerIndex, m_settings.serverCredentials(m_uiLogic->selectedServerIndex), m_uiLogic->selectedDockerContainer);
m_uiLogic->goToPage(Page::ShareConnection);
}

View file

@ -1,31 +1,9 @@
//#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 "ServerSettingsLogic.h"
#include "utils.h"
#include "vpnconnection.h"
#include <functional>
#include "../uilogic.h"
#include "ServerListLogic.h"
#include "ShareConnectionLogic.h"
#include "core/errorstrings.h"
#include <core/servercontroller.h>
@ -132,7 +110,7 @@ void ServerSettingsLogic::onPushButtonServerSettingsForgetServer()
m_uiLogic->selectedServerIndex = -1;
// TODO_REFACT updateServersListPage();
m_uiLogic->serverListLogic()->updateServersListPage();
if (m_settings.serversCount() == 0) {
m_uiLogic->setStartPage(Page::Start);
@ -281,7 +259,7 @@ void ServerSettingsLogic::onLineEditServerSettingsDescriptionEditingFinished()
QJsonObject server = m_settings.server(m_uiLogic->selectedServerIndex);
server.insert(config_key::description, newText);
m_settings.editServer(m_uiLogic->selectedServerIndex, server);
// TODO_REFACT updateServersListPage();
m_uiLogic->serverListLogic()->updateServersListPage();
}
QString ServerSettingsLogic::getPushButtonServerSettingsClearClientCacheText() const
@ -299,7 +277,6 @@ void ServerSettingsLogic::setPushButtonServerSettingsClearClientCacheText(const
void ServerSettingsLogic::onPushButtonServerSettingsShareFullClicked()
{
// TODO_REFACT
// m_uiLogic->updateSharingPage(m_uiLogic->selectedServerIndex, m_settings.serverCredentials(m_uiLogic->selectedServerIndex), DockerContainer::None);
m_uiLogic->shareConnectionLogic()->updateSharingPage(m_uiLogic->selectedServerIndex, m_settings.serverCredentials(m_uiLogic->selectedServerIndex), DockerContainer::None);
m_uiLogic->goToPage(Page::ShareConnection);
}

View file

@ -1,4 +1,4 @@
#include <QApplication>
#include <QApplication>
#include <QClipboard>
#include <QDebug>
#include <QDesktopServices>
@ -31,16 +31,14 @@
//#include "protocols/protocols_defs.h"
//#include "protocols/shadowsocksvpnprotocol.h"
#include "debug.h"
#include "defines.h"
//#include "debug.h"
//#include "defines.h"
#include "WizardLogic.h"
#include "utils.h"
#include "vpnconnection.h"
#include <functional>
//#include "utils.h"
//#include "vpnconnection.h"
//#include <functional>
#if defined Q_OS_MAC || defined Q_OS_LINUX
#include "ui/macos_util.h"
#endif
#include "../uilogic.h"
using namespace amnezia;
using namespace PageEnumNS;
@ -48,7 +46,129 @@ using namespace PageEnumNS;
WizardLogic::WizardLogic(UiLogic *uiLogic, QObject *parent):
QObject(parent),
m_uiLogic(uiLogic)
m_uiLogic(uiLogic),
m_radioButtonSetupWizardHighChecked{false},
m_radioButtonSetupWizardMediumChecked{true},
m_radioButtonSetupWizardLowChecked{false},
m_lineEditSetupWizardHighWebsiteMaskingText{},
m_checkBoxSetupWizardVpnModeChecked{false}
{
}
bool WizardLogic::getRadioButtonSetupWizardMediumChecked() const
{
return m_radioButtonSetupWizardMediumChecked;
}
void WizardLogic::setRadioButtonSetupWizardMediumChecked(bool radioButtonSetupWizardMediumChecked)
{
if (m_radioButtonSetupWizardMediumChecked != radioButtonSetupWizardMediumChecked) {
m_radioButtonSetupWizardMediumChecked = radioButtonSetupWizardMediumChecked;
emit radioButtonSetupWizardMediumCheckedChanged();
}
}
void WizardLogic::updateWizardHighPage()
{
setLineEditSetupWizardHighWebsiteMaskingText(protocols::cloak::defaultRedirSite);
}
QString WizardLogic::getLineEditSetupWizardHighWebsiteMaskingText() const
{
return m_lineEditSetupWizardHighWebsiteMaskingText;
}
void WizardLogic::setLineEditSetupWizardHighWebsiteMaskingText(const QString &lineEditSetupWizardHighWebsiteMaskingText)
{
if (m_lineEditSetupWizardHighWebsiteMaskingText != lineEditSetupWizardHighWebsiteMaskingText) {
m_lineEditSetupWizardHighWebsiteMaskingText = lineEditSetupWizardHighWebsiteMaskingText;
emit lineEditSetupWizardHighWebsiteMaskingTextChanged();
}
}
bool WizardLogic::getRadioButtonSetupWizardHighChecked() const
{
return m_radioButtonSetupWizardHighChecked;
}
void WizardLogic::setRadioButtonSetupWizardHighChecked(bool radioButtonSetupWizardHighChecked)
{
if (m_radioButtonSetupWizardHighChecked != radioButtonSetupWizardHighChecked) {
m_radioButtonSetupWizardHighChecked = radioButtonSetupWizardHighChecked;
emit radioButtonSetupWizardHighCheckedChanged();
}
}
bool WizardLogic::getRadioButtonSetupWizardLowChecked() const
{
return m_radioButtonSetupWizardLowChecked;
}
void WizardLogic::setRadioButtonSetupWizardLowChecked(bool radioButtonSetupWizardLowChecked)
{
if (m_radioButtonSetupWizardLowChecked != radioButtonSetupWizardLowChecked) {
m_radioButtonSetupWizardLowChecked = radioButtonSetupWizardLowChecked;
emit radioButtonSetupWizardLowCheckedChanged();
}
}
bool WizardLogic::getCheckBoxSetupWizardVpnModeChecked() const
{
return m_checkBoxSetupWizardVpnModeChecked;
}
void WizardLogic::setCheckBoxSetupWizardVpnModeChecked(bool checkBoxSetupWizardVpnModeChecked)
{
if (m_checkBoxSetupWizardVpnModeChecked != checkBoxSetupWizardVpnModeChecked) {
m_checkBoxSetupWizardVpnModeChecked = checkBoxSetupWizardVpnModeChecked;
emit checkBoxSetupWizardVpnModeCheckedChanged();
}
}
QMap<DockerContainer, QJsonObject> WizardLogic::getInstallConfigsFromWizardPage() const
{
QJsonObject cloakConfig {
{ config_key::container, amnezia::containerToString(DockerContainer::OpenVpnOverCloak) },
{ config_key::cloak, QJsonObject {
{ config_key::site, getLineEditSetupWizardHighWebsiteMaskingText() }}
}
};
QJsonObject ssConfig {
{ config_key::container, amnezia::containerToString(DockerContainer::OpenVpnOverShadowSocks) }
};
QJsonObject openVpnConfig {
{ config_key::container, amnezia::containerToString(DockerContainer::OpenVpn) }
};
QMap<DockerContainer, QJsonObject> containers;
if (getRadioButtonSetupWizardHighChecked()) {
containers.insert(DockerContainer::OpenVpnOverCloak, cloakConfig);
}
if (getRadioButtonSetupWizardMediumChecked()) {
containers.insert(DockerContainer::OpenVpnOverShadowSocks, ssConfig);
}
if (getRadioButtonSetupWizardLowChecked()) {
containers.insert(DockerContainer::OpenVpn, openVpnConfig);
}
return containers;
}
void WizardLogic::onPushButtonSetupWizardVpnModeFinishClicked()
{
m_uiLogic->installServer(getInstallConfigsFromWizardPage());
if (getCheckBoxSetupWizardVpnModeChecked()) {
m_settings.setRouteMode(Settings::VpnOnlyForwardSites);
} else {
m_settings.setRouteMode(Settings::VpnAllSites);
}
}
void WizardLogic::onPushButtonSetupWizardLowFinishClicked()
{
m_uiLogic->installServer(getInstallConfigsFromWizardPage());
}

View file

@ -10,13 +10,42 @@ class WizardLogic : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE void updateWizardHighPage();
Q_PROPERTY(bool radioButtonSetupWizardHighChecked READ getRadioButtonSetupWizardHighChecked WRITE setRadioButtonSetupWizardHighChecked NOTIFY radioButtonSetupWizardHighCheckedChanged)
Q_PROPERTY(bool radioButtonSetupWizardMediumChecked READ getRadioButtonSetupWizardMediumChecked WRITE setRadioButtonSetupWizardMediumChecked NOTIFY radioButtonSetupWizardMediumCheckedChanged)
Q_PROPERTY(bool radioButtonSetupWizardLowChecked READ getRadioButtonSetupWizardLowChecked WRITE setRadioButtonSetupWizardLowChecked NOTIFY radioButtonSetupWizardLowCheckedChanged)
Q_PROPERTY(bool checkBoxSetupWizardVpnModeChecked READ getCheckBoxSetupWizardVpnModeChecked WRITE setCheckBoxSetupWizardVpnModeChecked NOTIFY checkBoxSetupWizardVpnModeCheckedChanged)
Q_PROPERTY(QString lineEditSetupWizardHighWebsiteMaskingText READ getLineEditSetupWizardHighWebsiteMaskingText WRITE setLineEditSetupWizardHighWebsiteMaskingText NOTIFY lineEditSetupWizardHighWebsiteMaskingTextChanged)
Q_INVOKABLE void onPushButtonSetupWizardVpnModeFinishClicked();
Q_INVOKABLE void onPushButtonSetupWizardLowFinishClicked();
public:
explicit WizardLogic(UiLogic *uiLogic, QObject *parent = nullptr);
~WizardLogic() = default;
bool getRadioButtonSetupWizardMediumChecked() const;
void setRadioButtonSetupWizardMediumChecked(bool radioButtonSetupWizardMediumChecked);
QString getLineEditSetupWizardHighWebsiteMaskingText() const;
void setLineEditSetupWizardHighWebsiteMaskingText(const QString &lineEditSetupWizardHighWebsiteMaskingText);
bool getRadioButtonSetupWizardHighChecked() const;
void setRadioButtonSetupWizardHighChecked(bool radioButtonSetupWizardHighChecked);
bool getRadioButtonSetupWizardLowChecked() const;
void setRadioButtonSetupWizardLowChecked(bool radioButtonSetupWizardLowChecked);
bool getCheckBoxSetupWizardVpnModeChecked() const;
void setCheckBoxSetupWizardVpnModeChecked(bool checkBoxSetupWizardVpnModeChecked);
QMap<DockerContainer, QJsonObject> getInstallConfigsFromWizardPage() const;
signals:
void lineEditSetupWizardHighWebsiteMaskingTextChanged();
void radioButtonSetupWizardHighCheckedChanged();
void radioButtonSetupWizardMediumCheckedChanged();
void radioButtonSetupWizardLowCheckedChanged();
void checkBoxSetupWizardVpnModeCheckedChanged();
private:
@ -29,7 +58,11 @@ private:
Settings m_settings;
UiLogic *m_uiLogic;
bool m_radioButtonSetupWizardHighChecked;
bool m_radioButtonSetupWizardMediumChecked;
bool m_radioButtonSetupWizardLowChecked;
QString m_lineEditSetupWizardHighWebsiteMaskingText;
bool m_checkBoxSetupWizardVpnModeChecked;
};
#endif // WIZARD_LOGIC_H