#ifndef TRACKER_FRAME_H_86BD8DFB #define TRACKER_FRAME_H_86BD8DFB #include #ifndef WX_PRECOMP #include #endif #include #include "ap_state.h" #include "icons.h" #include "updater.h" class AchievementsPane; class ItemsPane; class LogDialog; class OptionsPane; class PaintingsPane; class SubwayMap; class TrackerPanel; class wxBookCtrlEvent; class wxNotebook; class wxSplitterEvent; class wxSplitterWindow; class ApConnectEvent : public wxEvent { public: ApConnectEvent(wxEventType eventType, int winid, std::string server, std::string user, std::string pass) : wxEvent(winid, eventType), ap_server_(std::move(server)), ap_user_(std::move(user)), ap_pass_(std::move(pass)) {} const std::string &GetServer() const { return ap_server_; } const std::string &GetUser() const { return ap_user_; } const std::string &GetPass() const { return ap_pass_; } virtual wxEvent *Clone() const { return new ApConnectEvent(*this); } private: std::string ap_server_; std::string ap_user_; std::string ap_pass_; }; struct StateUpdate { std::vector items; bool progression_items = false; std::vector paintings; bool achievements = false; bool open_panels_tab = false; bool cleared_locations = false; bool hunt_panels = false; bool player_position = false; }; class StateChangedEvent : public wxEvent { public: StateChangedEvent(wxEventType eventType, int winid, StateUpdate state) : wxEvent(winid, eventType), state_(std::move(state)) {} const StateUpdate &GetState() const { return state_; } virtual wxEvent *Clone() const { return new StateChangedEvent(*this); } private: StateUpdate state_; }; wxDECLARE_EVENT(STATE_RESET, wxCommandEvent); wxDECLARE_EVENT(STATE_CHANGED, StateChangedEvent); wxDECLARE_EVENT(STATUS_CHANGED, wxCommandEvent); wxDECLARE_EVENT(CONNECT_TO_AP, ApConnectEvent); class TrackerFrame : public wxFrame { public: TrackerFrame(); void ConnectToAp(std::string server, std::string user, std::string pass); void UpdateStatusMessage(); void ResetIndicators(); void UpdateIndicators(StateUpdate state); private: void OnExit(wxCommandEvent &event); void OnAbout(wxCommandEvent &event); void OnApConnect(wxCommandEvent &event); void OnIpcConnect(wxCommandEvent &event); void OnSettings(wxCommandEvent &event); void OnCheckForUpdates(wxCommandEvent &event); void OnZoomIn(wxCommandEvent &event); void OnZoomOut(wxCommandEvent &event); void OnOpenLogWindow(wxCommandEvent &event); void OnCloseLogWindow(wxCloseEvent &event); void OnChangePage(wxBookCtrlEvent &event); void OnOpenFile(wxCommandEvent &event); void OnSashPositionChanged(wxSplitterEvent &event); void OnStateReset(wxCommandEvent &event); void OnStateChanged(StateChangedEvent &event); void OnStatusChanged(wxCommandEvent &event); void OnConnectToAp(ApConnectEvent &event); std::unique_ptr updater_; wxSplitterWindow *splitter_window_; wxNotebook *notebook_; TrackerPanel *tracker_panel_; AchievementsPane *achievements_pane_; ItemsPane *items_pane_; OptionsPane *options_pane_; PaintingsPane *paintings_pane_; SubwayMap *subway_map_; TrackerPanel *panels_panel_ = nullptr; LogDialog *log_dialog_ = nullptr; wxMenuItem *zoom_in_menu_item_; wxMenuItem *zoom_out_menu_item_; IconCache icons_; }; #endif /* end of include guard: TRACKER_FRAME_H_86BD8DFB */