#ifndef CONNECTCONTROL_H #define CONNECTCONTROL_H #include #include #include #include #include namespace Ui { class Connecter; } enum ConnectState { CS_DISCONNECT, CS_CONNECTING, CS_CONNECTED, }; class Connecter : public QWidget { Q_OBJECT public: explicit Connecter(QWidget* parent = nullptr); ~Connecter(); public: void RunWorker(ClientCore* clientCore); void SetRemoteCall(const std::function& call); void HandleClients(const InfoClientVec& clients); signals: void sendConnect(ConnectState cs); void sigDoConnect(const QString& ip, quint16 port); void sigDisConnect(); private: void InitControl(); void Connect(); void setState(ConnectState cs); void RefreshClient(); void Disconnect(); void ShowContextMenu(const QPoint& pos); std::string getCurClient(); private: Ui::Connecter* ui; bool connceted_{false}; std::function remoteCall_; ClientCore* clientCore_; private: QMenu* menu_; SocketWorker* sockWorker_{}; QStandardItemModel* model_; }; #endif // CONNECTCONTROL_H