#ifndef ONLINECONTROL_H
#define ONLINECONTROL_H

#include "InterfaceDefine.hpp"
#include <InfoClient.hpp>
#include <mutex>

class HeaderControl;
class LogControl;
class ClientCore;
class OnlineControl : public wxPanel
{
public:
    OnlineControl(wxWindow* parent, std::shared_ptr<ClientCore>& clientCore);
    ~OnlineControl() override;

public:
    void SetHeaderControl(HeaderControl* headerControl);
    void SetLogControl(LogControl* logControl);
    void SetConnectState(const wxString& state);
    void SetConnectServer(const wxString& server);
    void ClearClientsShow();

private:
    void Init();
    void InitCall();
    void OnFreshClients(wxCommandEvent& event);

private:
    void OnFreshClientsCall(const InfoClientVec& infoClientVec);

public:
    wxButton* btnFresh_;
    std::mutex mutex_;
    wxStaticText* lbCurState_;
    wxStaticText* elbCurState_;
    wxStaticText* lbCurPoint_;
    wxStaticText* elbCurPoint_;
    wxListBox* onLineList_;
    HeaderControl* headerControl_;
    LogControl* logControl_;
    std::shared_ptr<ClientCore> clientCore_;
};

#endif   // ONLINECONTROL_H