amnezia-client/client/ui/pages_logic/VpnLogic.h

70 lines
2.3 KiB
C++

#ifndef VPN_LOGIC_H
#define VPN_LOGIC_H
#include "PageLogicBase.h"
#include "protocols/vpnprotocol.h"
class UiLogic;
class VpnLogic : public PageLogicBase
{
Q_OBJECT
AUTO_PROPERTY(bool, pushButtonConnectChecked)
AUTO_PROPERTY(QString, labelSpeedReceivedText)
AUTO_PROPERTY(QString, labelSpeedSentText)
AUTO_PROPERTY(QString, labelStateText)
AUTO_PROPERTY(QString, labelCurrentServer)
AUTO_PROPERTY(QString, labelCurrentService)
AUTO_PROPERTY(QString, labelCurrentDns)
AUTO_PROPERTY(bool, amneziaDnsEnabled)
AUTO_PROPERTY(bool, pushButtonConnectEnabled)
AUTO_PROPERTY(bool, pushButtonConnectVisible)
AUTO_PROPERTY(bool, widgetVpnModeEnabled)
AUTO_PROPERTY(bool, isContainerSupportedByCurrentPlatform)
AUTO_PROPERTY(bool, isContainerHaveAuthData)
AUTO_PROPERTY(QString, labelErrorText)
AUTO_PROPERTY(QString, labelVersionText)
AUTO_PROPERTY(bool, isCustomRoutesSupported)
AUTO_PROPERTY(bool, radioButtonVpnModeAllSitesChecked)
AUTO_PROPERTY(bool, radioButtonVpnModeForwardSitesChecked)
AUTO_PROPERTY(bool, radioButtonVpnModeExceptSitesChecked)
AUTO_PROPERTY(bool, labelLogEnabledVisible)
public:
Q_INVOKABLE void onUpdatePage() override;
Q_INVOKABLE void onRadioButtonVpnModeAllSitesClicked();
Q_INVOKABLE void onRadioButtonVpnModeForwardSitesClicked();
Q_INVOKABLE void onRadioButtonVpnModeExceptSitesClicked();
Q_INVOKABLE void onPushButtonConnectClicked();
public:
explicit VpnLogic(UiLogic *uiLogic, QObject *parent = nullptr);
~VpnLogic() = default;
bool getPushButtonConnectChecked() const;
void setPushButtonConnectChecked(bool pushButtonConnectChecked);
public slots:
void onConnect();
void onConnectWorker(int serverIndex, const ServerCredentials &credentials, DockerContainer container, const QJsonObject &containerConfig);
void onDisconnect();
void onBytesChanged(quint64 receivedBytes, quint64 sentBytes);
void onConnectionStateChanged(VpnProtocol::VpnConnectionState state);
void onVpnProtocolError(amnezia::ErrorCode errorCode);
signals:
void connectToVpn(int serverIndex,
const ServerCredentials &credentials, DockerContainer container, const QJsonObject &containerConfig);
void disconnectFromVpn();
};
#endif // VPN_LOGIC_H