#ifndef IUSERINTERFACE_H
#define IUSERINTERFACE_H

#include <memory>
#include <wx/aui/aui.h>
#include <wx/wx.h>

#include "ControlManager.h"
#include <ClientCore.h>

enum MenuID {
    ID_SaveLayout = 1000,
};

class UserInterface final : public wxFrame
{
public:
    explicit UserInterface(const wxString& title);
    ~UserInterface() override;

public:
    void OnClose(wxCloseEvent& event);

private:
    void InitUI();
    void InitMenu();
    void InitData();

private:
    void TryRestoreLayout();

private:
    void OnSaveLayout(wxCommandEvent& event);

private:
    wxAuiManager mgr_;
    wxMenuBar* menuBar_;
    wxString configDir_;
    wxString configPath_;
    std::shared_ptr<ClientCore> clientCore_;
    std::shared_ptr<ControlManager> controlMgr_;
};

#endif   // IUSERINTERFACE_H