#ifndef SERVER_CONFIGURING_PROGRESS_LOGIC_H #define SERVER_CONFIGURING_PROGRESS_LOGIC_H #include #include "PageLogicBase.h" #include "core/defs.h" using namespace amnezia; class UiLogic; class ServerConfiguringProgressLogic : public PageLogicBase { Q_OBJECT AUTO_PROPERTY(double, progressBarValue) AUTO_PROPERTY(bool, labelWaitInfoVisible) AUTO_PROPERTY(QString, labelWaitInfoText) AUTO_PROPERTY(bool, progressBarVisible) AUTO_PROPERTY(int, progressBarMaximum) AUTO_PROPERTY(bool, progressBarTextVisible) AUTO_PROPERTY(QString, progressBarText) AUTO_PROPERTY(bool, labelServerBusyVisible) AUTO_PROPERTY(QString, labelServerBusyText) AUTO_PROPERTY(bool, pushButtonCancelVisible) public: Q_INVOKABLE void onPushButtonCancelClicked(); private: struct ProgressFunc { std::function setVisibleFunc; std::function setValueFunc; std::function getValueFunc; std::function getMaximumFunc; std::function setTextVisibleFunc; std::function setTextFunc; }; struct PageFunc { std::function setEnabledFunc; }; struct ButtonFunc { std::function setVisibleFunc; }; struct LabelFunc { std::function setVisibleFunc; std::function setTextFunc; }; public: explicit ServerConfiguringProgressLogic(UiLogic *uiLogic, QObject *parent = nullptr); ~ServerConfiguringProgressLogic() = default; friend class OpenVpnLogic; friend class ShadowSocksLogic; friend class CloakLogic; friend class UiLogic; void onUpdatePage() override; ErrorCode doInstallAction(const std::function &action); ErrorCode doInstallAction(const std::function &action, const PageFunc &page, const ProgressFunc &progress, const ButtonFunc &saveButton, const LabelFunc &waitInfo, const LabelFunc &serverBusyInfo, const ButtonFunc &cancelButton); signals: void cancelDoInstallAction(const bool cancel); }; #endif // SERVER_CONFIGURING_PROGRESS_LOGIC_H