Files
frelay/Gui/Control/ConnectControl.h

68 lines
1.5 KiB
C
Raw Normal View History

2025-06-19 17:01:25 +08:00
#ifndef CONNECTCONTROL_H
2025-06-15 14:31:54 +08:00
#define CONNECTCONTROL_H
#include <ClientCore.h>
#include <InfoClient.h>
#include <QMenu>
#include <QStandardItemModel>
#include <QWidget>
2025-06-27 22:13:52 +08:00
#include "GuiUtil/Config.h"
#include "GuiUtil/Public.h"
2025-06-15 14:31:54 +08:00
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);
2025-06-15 14:31:54 +08:00
void SetRemoteCall(const std::function<void(const QString& id)>& call);
void HandleClients(const InfoClientVec& clients);
2025-06-27 22:13:52 +08:00
void SetConfigPtr(std::shared_ptr<FrelayConfig> config);
2025-06-15 14:31:54 +08:00
signals:
void sendConnect(ConnectState cs);
void sigDoConnect(const QString& ip, quint16 port);
2025-06-20 14:39:03 +08:00
void sigDisConnect();
void sigConfirmUse();
2025-06-15 14:31:54 +08:00
private:
void InitControl();
void Connect();
void setState(ConnectState cs);
void RefreshClient();
2025-06-19 17:01:25 +08:00
void Disconnect();
2025-06-15 14:31:54 +08:00
void ShowContextMenu(const QPoint& pos);
std::string getCurClient();
2025-06-27 22:13:52 +08:00
bool parseIpPort(const QString& ipPort, QString& outIp, QString& outPort);
2025-06-15 14:31:54 +08:00
private:
Ui::Connecter* ui;
bool connceted_{false};
std::function<void(const QString& id)> remoteCall_;
ClientCore* clientCore_;
private:
QMenu* menu_;
SocketWorker* sockWorker_{};
HeatBeat* heatBeat_{};
2025-06-15 14:31:54 +08:00
QStandardItemModel* model_;
2025-06-27 22:13:52 +08:00
std::shared_ptr<FrelayConfig> config_;
2025-06-15 14:31:54 +08:00
};
#endif // CONNECTCONTROL_H