QML ServerContainers page refact

This commit is contained in:
pokamest 2021-09-16 16:19:14 +03:00
parent 9ae2e3fba2
commit 0faf6c8599
90 changed files with 5651 additions and 125 deletions

View file

@ -8,3 +8,16 @@ PageLogicBase::PageLogicBase(UiLogic *logic, QObject *parent):
{
}
Page PageLogicBase::pageForProto(Protocol p)
{
switch (p) {
case Protocol::OpenVpn: return Page::OpenVpnSettings;
case Protocol::ShadowSocks: return Page::ShadowSocksSettings;
case Protocol::OpenVpn: return Page::OpenVpnSettings;
case Protocol::OpenVpn: return Page::OpenVpnSettings;
default:
break;
}
}

View file

@ -20,6 +20,7 @@ public:
~PageLogicBase() = default;
Q_INVOKABLE virtual void updatePage() {}
Q_INVOKABLE Page pageForProto(amnezia::Protocol p);
protected:
UiLogic *uiLogic() const { return m_uiLogic; }

View file

@ -1,4 +1,4 @@
#include "ServerContainersLogic.h"
#include "ServerContainersLogic.h"
#include "ShareConnectionLogic.h"
#include "protocols/CloakLogic.h"
#include "protocols/OpenVpnLogic.h"
@ -50,8 +50,11 @@ void ServerContainersLogic::updateServerContainersPage()
{
set_progressBarProtocolsContainerReinstallVisible(false);
ContainersModel *model = qobject_cast<ContainersModel *>(uiLogic()->containersModel());
model->setSelectedServerIndex(uiLogic()->selectedServerIndex);
ContainersModel *c_model = qobject_cast<ContainersModel *>(uiLogic()->containersModel());
c_model->setSelectedServerIndex(uiLogic()->selectedServerIndex);
ProtocolsModel *p_model = qobject_cast<ProtocolsModel *>(uiLogic()->protocolsModel());
p_model->setSelectedServerIndex(uiLogic()->selectedServerIndex);
auto containers = m_settings.containers(uiLogic()->selectedServerIndex);
DockerContainer defaultContainer = m_settings.defaultContainer(uiLogic()->selectedServerIndex);
@ -118,6 +121,16 @@ void ServerContainersLogic::updateServerContainersPage()
}
}
void ServerContainersLogic::onPushButtonProtoSettingsClicked(amnezia::DockerContainer c, amnezia::Protocol p)
{
uiLogic()->selectedDockerContainer = c;
uiLogic()->protocolLogic(p)->updateProtocolPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, p),
uiLogic()->selectedDockerContainer,
m_settings.haveAuthData(uiLogic()->selectedServerIndex));
emit uiLogic()->goToPage(Page::OpenVpnSettings);
}
void ServerContainersLogic::setupProtocolsPageConnections()
{
@ -245,50 +258,50 @@ void ServerContainersLogic::setupProtocolsPageConnections()
}
}
void ServerContainersLogic::onPushButtonProtoCloakOpenVpnContOpenvpnConfigClicked()
{
uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverCloak;
uiLogic()->openVpnLogic()->updateOpenVpnPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::OpenVpn),
uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
uiLogic()->goToPage(Page::OpenVpnSettings);
}
//void ServerContainersLogic::onPushButtonProtoCloakOpenVpnContOpenvpnConfigClicked()
//{
// uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverCloak;
// uiLogic()->openVpnLogic()->updateOpenVpnPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::OpenVpn),
// uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
// uiLogic()->goToPage(Page::OpenVpnSettings);
//}
void ServerContainersLogic::onPushButtonProtoCloakOpenVpnContSsConfigClicked()
{
uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverCloak;
uiLogic()->shadowSocksLogic()->updateShadowSocksPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::ShadowSocks),
uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
uiLogic()->goToPage(Page::ShadowSocksSettings);
}
//void ServerContainersLogic::onPushButtonProtoCloakOpenVpnContSsConfigClicked()
//{
// uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverCloak;
// uiLogic()->shadowSocksLogic()->updateShadowSocksPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::ShadowSocks),
// uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
// uiLogic()->goToPage(Page::ShadowSocksSettings);
//}
void ServerContainersLogic::onPushButtonProtoCloakOpenVpnContCloakConfigClicked()
{
uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverCloak;
uiLogic()->cloakLogic()->updateCloakPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::Cloak),
uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
uiLogic()->goToPage(Page::CloakSettings);
}
//void ServerContainersLogic::onPushButtonProtoCloakOpenVpnContCloakConfigClicked()
//{
// uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverCloak;
// uiLogic()->cloakLogic()->updateCloakPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::Cloak),
// uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
// uiLogic()->goToPage(Page::CloakSettings);
//}
void ServerContainersLogic::onPushButtonProtoOpenVpnContOpenvpnConfigClicked()
{
uiLogic()->selectedDockerContainer = DockerContainer::OpenVpn;
uiLogic()->openVpnLogic()->updateOpenVpnPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::OpenVpn),
uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
uiLogic()->goToPage(Page::OpenVpnSettings);
}
//void ServerContainersLogic::onPushButtonProtoOpenVpnContOpenvpnConfigClicked()
//{
// uiLogic()->selectedDockerContainer = DockerContainer::OpenVpn;
// uiLogic()->openVpnLogic()->updateOpenVpnPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::OpenVpn),
// uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
// uiLogic()->goToPage(Page::OpenVpnSettings);
//}
void ServerContainersLogic::onPushButtonProtoSsOpenVpnContOpenvpnConfigClicked()
{
uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverShadowSocks;
uiLogic()->openVpnLogic()->updateOpenVpnPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::OpenVpn),
uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
uiLogic()->goToPage(Page::OpenVpnSettings);
}
//void ServerContainersLogic::onPushButtonProtoSsOpenVpnContOpenvpnConfigClicked()
//{
// uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverShadowSocks;
// uiLogic()->openVpnLogic()->updateOpenVpnPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::OpenVpn),
// uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
// uiLogic()->goToPage(Page::OpenVpnSettings);
//}
void ServerContainersLogic::onPushButtonProtoSsOpenVpnContSsConfigClicked()
{
uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverShadowSocks;
uiLogic()->shadowSocksLogic()->updateShadowSocksPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::ShadowSocks),
uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
uiLogic()->goToPage(Page::ShadowSocksSettings);
}
//void ServerContainersLogic::onPushButtonProtoSsOpenVpnContSsConfigClicked()
//{
// uiLogic()->selectedDockerContainer = DockerContainer::OpenVpnOverShadowSocks;
// uiLogic()->shadowSocksLogic()->updateShadowSocksPage(m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::ShadowSocks),
// uiLogic()->selectedDockerContainer, m_settings.haveAuthData(uiLogic()->selectedServerIndex));
// uiLogic()->goToPage(Page::ShadowSocksSettings);
//}

View file

@ -43,12 +43,14 @@ class ServerContainersLogic : public PageLogicBase
public:
Q_INVOKABLE void updateServerContainersPage();
Q_INVOKABLE void onPushButtonProtoCloakOpenVpnContOpenvpnConfigClicked();
Q_INVOKABLE void onPushButtonProtoCloakOpenVpnContSsConfigClicked();
Q_INVOKABLE void onPushButtonProtoCloakOpenVpnContCloakConfigClicked();
Q_INVOKABLE void onPushButtonProtoOpenVpnContOpenvpnConfigClicked();
Q_INVOKABLE void onPushButtonProtoSsOpenVpnContOpenvpnConfigClicked();
Q_INVOKABLE void onPushButtonProtoSsOpenVpnContSsConfigClicked();
// Q_INVOKABLE void onPushButtonProtoCloakOpenVpnContOpenvpnConfigClicked();
// Q_INVOKABLE void onPushButtonProtoCloakOpenVpnContSsConfigClicked();
// Q_INVOKABLE void onPushButtonProtoCloakOpenVpnContCloakConfigClicked();
// Q_INVOKABLE void onPushButtonProtoOpenVpnContOpenvpnConfigClicked();
// Q_INVOKABLE void onPushButtonProtoSsOpenVpnContOpenvpnConfigClicked();
// Q_INVOKABLE void onPushButtonProtoSsOpenVpnContSsConfigClicked();
Q_INVOKABLE void onPushButtonProtoSettingsClicked(amnezia::DockerContainer c, amnezia::Protocol p);
public:
explicit ServerContainersLogic(UiLogic *uiLogic, QObject *parent = nullptr);

View file

@ -7,7 +7,7 @@ using namespace amnezia;
using namespace PageEnumNS;
CloakLogic::CloakLogic(UiLogic *logic, QObject *parent):
PageLogicBase(logic, parent),
PageProtocolLogicBase(logic, parent),
m_comboBoxProtoCloakCipherText{"chacha20-poly1305"},
m_lineEditProtoCloakSiteText{"tile.openstreetmap.org"},
m_lineEditProtoCloakPortText{},
@ -24,7 +24,7 @@ CloakLogic::CloakLogic(UiLogic *logic, QObject *parent):
}
void CloakLogic::updateCloakPage(const QJsonObject &ckConfig, DockerContainer container, bool haveAuthData)
void CloakLogic::updateProtocolPage(const QJsonObject &ckConfig, DockerContainer container, bool haveAuthData)
{
set_widgetProtoCloakEnabled(haveAuthData);
set_pushButtonCloakSaveVisible(haveAuthData);
@ -42,7 +42,7 @@ void CloakLogic::updateCloakPage(const QJsonObject &ckConfig, DockerContainer co
set_lineEditProtoCloakPortEnabled(container == DockerContainer::OpenVpnOverCloak);
}
QJsonObject CloakLogic::getCloakConfigFromPage(QJsonObject oldConfig)
QJsonObject CloakLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
{
oldConfig.insert(config_key::cipher, comboBoxProtoCloakCipherText());
oldConfig.insert(config_key::site, lineEditProtoCloakSiteText());
@ -54,7 +54,7 @@ QJsonObject CloakLogic::getCloakConfigFromPage(QJsonObject oldConfig)
void CloakLogic::onPushButtonProtoCloakSaveClicked()
{
QJsonObject protocolConfig = m_settings.protocolConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer, Protocol::Cloak);
protocolConfig = getCloakConfigFromPage(protocolConfig);
protocolConfig = getProtocolConfigFromPage(protocolConfig);
QJsonObject containerConfig = m_settings.containerConfig(uiLogic()->selectedServerIndex, uiLogic()->selectedDockerContainer);
QJsonObject newContainerConfig = containerConfig;

View file

@ -1,11 +1,11 @@
#ifndef CLOAK_LOGIC_H
#define CLOAK_LOGIC_H
#include "../PageLogicBase.h"
#include "PageProtocolLogicBase.h"
class UiLogic;
class CloakLogic : public PageLogicBase
class CloakLogic : public PageProtocolLogicBase
{
Q_OBJECT
@ -29,8 +29,8 @@ public:
explicit CloakLogic(UiLogic *uiLogic, QObject *parent = nullptr);
~CloakLogic() = default;
void updateCloakPage(const QJsonObject &ckConfig, DockerContainer container, bool haveAuthData);
QJsonObject getCloakConfigFromPage(QJsonObject oldConfig);
void updateProtocolPage (const QJsonObject &ckConfig, DockerContainer container, bool haveAuthData) override;
QJsonObject getProtocolConfigFromPage(QJsonObject oldConfig) override;
private:
Settings m_settings;

View file

@ -7,7 +7,7 @@ using namespace amnezia;
using namespace PageEnumNS;
OpenVpnLogic::OpenVpnLogic(UiLogic *logic, QObject *parent):
PageLogicBase(logic, parent),
PageProtocolLogicBase(logic, parent),
m_lineEditProtoOpenVpnSubnetText{},
m_radioButtonProtoOpenVpnUdpChecked{false},
m_checkBoxProtoOpenVpnAutoEncryptionChecked{},
@ -34,7 +34,7 @@ OpenVpnLogic::OpenVpnLogic(UiLogic *logic, QObject *parent):
}
void OpenVpnLogic::updateOpenVpnPage(const QJsonObject &openvpnConfig, DockerContainer container, bool haveAuthData)
void OpenVpnLogic::updateProtocolPage(const QJsonObject &openvpnConfig, DockerContainer container, bool haveAuthData)
{
set_widgetProtoOpenVpnEnabled(haveAuthData);
set_pushButtonOpenvpnSaveVisible(haveAuthData);
@ -136,7 +136,7 @@ void OpenVpnLogic::onPushButtonProtoOpenVpnSaveClicked()
qDebug() << "Protocol saved with code:" << e << "for" << uiLogic()->selectedServerIndex << uiLogic()->selectedDockerContainer;
}
QJsonObject OpenVpnLogic::getOpenVpnConfigFromPage(QJsonObject oldConfig)
QJsonObject OpenVpnLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
{
oldConfig.insert(config_key::subnet_address, lineEditProtoOpenVpnSubnetText());
oldConfig.insert(config_key::transport_proto, radioButtonProtoOpenVpnUdpChecked() ? protocols::UDP : protocols::TCP);

View file

@ -1,11 +1,11 @@
#ifndef OPENVPN_LOGIC_H
#define OPENVPN_LOGIC_H
#include "../PageLogicBase.h"
#include "PageProtocolLogicBase.h"
class UiLogic;
class OpenVpnLogic : public PageLogicBase
class OpenVpnLogic : public PageProtocolLogicBase
{
Q_OBJECT
@ -42,8 +42,8 @@ public:
explicit OpenVpnLogic(UiLogic *uiLogic, QObject *parent = nullptr);
~OpenVpnLogic() = default;
void updateOpenVpnPage(const QJsonObject &openvpnConfig, DockerContainer container, bool haveAuthData);
QJsonObject getOpenVpnConfigFromPage(QJsonObject oldConfig);
void updateProtocolPage(const QJsonObject &openvpnConfig, DockerContainer container, bool haveAuthData) override;
QJsonObject getProtocolConfigFromPage(QJsonObject oldConfig) override;
private:
Settings m_settings;

View file

@ -0,0 +1,8 @@
#include "PageProtocolLogicBase.h"
PageProtocolLogicBase::PageProtocolLogicBase(UiLogic *logic, QObject *parent):
PageLogicBase(logic, parent)
{
}

View file

@ -0,0 +1,24 @@
#ifndef PAGE_PROTOCOL_LOGIC_BASE_H
#define PAGE_PROTOCOL_LOGIC_BASE_H
#include "settings.h"
#include "../PageLogicBase.h"
using namespace amnezia;
using namespace PageEnumNS;
class UiLogic;
class PageProtocolLogicBase : public PageLogicBase
{
Q_OBJECT
public:
explicit PageProtocolLogicBase(UiLogic *uiLogic, QObject *parent = nullptr);
~PageProtocolLogicBase() = default;
virtual void updateProtocolPage(const QJsonObject &config, DockerContainer container, bool haveAuthData) {}
virtual QJsonObject getProtocolConfigFromPage(QJsonObject oldConfig) { return QJsonObject(); }
};
#endif // PAGE_PROTOCOL_LOGIC_BASE_H

View file

@ -7,7 +7,7 @@ using namespace amnezia;
using namespace PageEnumNS;
ShadowSocksLogic::ShadowSocksLogic(UiLogic *logic, QObject *parent):
PageLogicBase(logic, parent),
PageProtocolLogicBase(logic, parent),
m_widgetProtoShadowSocksEnabled{false},
m_comboBoxProtoShadowSocksCipherText{"chacha20-poly1305"},
m_lineEditProtoShadowSocksPortText{},
@ -23,7 +23,7 @@ ShadowSocksLogic::ShadowSocksLogic(UiLogic *logic, QObject *parent):
}
void ShadowSocksLogic::updateShadowSocksPage(const QJsonObject &ssConfig, DockerContainer container, bool haveAuthData)
void ShadowSocksLogic::updateProtocolPage(const QJsonObject &ssConfig, DockerContainer container, bool haveAuthData)
{
set_widgetProtoShadowSocksEnabled(haveAuthData);
set_pushButtonShadowSocksSaveVisible(haveAuthData);
@ -38,7 +38,7 @@ void ShadowSocksLogic::updateShadowSocksPage(const QJsonObject &ssConfig, Docker
set_lineEditProtoShadowSocksPortEnabled(container == DockerContainer::OpenVpnOverShadowSocks);
}
QJsonObject ShadowSocksLogic::getShadowSocksConfigFromPage(QJsonObject oldConfig)
QJsonObject ShadowSocksLogic::getProtocolConfigFromPage(QJsonObject oldConfig)
{
oldConfig.insert(config_key::cipher, comboBoxProtoShadowSocksCipherText());
oldConfig.insert(config_key::port, lineEditProtoShadowSocksPortText());

View file

@ -1,11 +1,11 @@
#ifndef SHADOWSOCKS_LOGIC_H
#define SHADOWSOCKS_LOGIC_H
#include "../PageLogicBase.h"
#include "PageProtocolLogicBase.h"
class UiLogic;
class ShadowSocksLogic : public PageLogicBase
class ShadowSocksLogic : public PageProtocolLogicBase
{
Q_OBJECT
@ -28,8 +28,8 @@ public:
explicit ShadowSocksLogic(UiLogic *uiLogic, QObject *parent = nullptr);
~ShadowSocksLogic() = default;
void updateShadowSocksPage(const QJsonObject &ssConfig, DockerContainer container, bool haveAuthData);
QJsonObject getShadowSocksConfigFromPage(QJsonObject oldConfig);
void updateProtocolPage(const QJsonObject &ssConfig, DockerContainer container, bool haveAuthData) override;
QJsonObject getProtocolConfigFromPage(QJsonObject oldConfig) override;
private:
Settings m_settings;