about summary refs log tree commit diff stats
path: root/src/tracker_frame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tracker_frame.cpp')
-rw-r--r--src/tracker_frame.cpp73
1 files changed, 35 insertions, 38 deletions
diff --git a/src/tracker_frame.cpp b/src/tracker_frame.cpp index a697f9a..dc6c283 100644 --- a/src/tracker_frame.cpp +++ b/src/tracker_frame.cpp
@@ -51,9 +51,8 @@ enum TrackerFrameIds {
51}; 51};
52 52
53wxDEFINE_EVENT(STATE_RESET, wxCommandEvent); 53wxDEFINE_EVENT(STATE_RESET, wxCommandEvent);
54wxDEFINE_EVENT(STATE_CHANGED, wxCommandEvent); 54wxDEFINE_EVENT(STATE_CHANGED, StateChangedEvent);
55wxDEFINE_EVENT(STATUS_CHANGED, wxCommandEvent); 55wxDEFINE_EVENT(STATUS_CHANGED, wxCommandEvent);
56wxDEFINE_EVENT(REDRAW_POSITION, wxCommandEvent);
57wxDEFINE_EVENT(CONNECT_TO_AP, ApConnectEvent); 56wxDEFINE_EVENT(CONNECT_TO_AP, ApConnectEvent);
58 57
59TrackerFrame::TrackerFrame() 58TrackerFrame::TrackerFrame()
@@ -112,7 +111,6 @@ TrackerFrame::TrackerFrame()
112 Bind(STATE_RESET, &TrackerFrame::OnStateReset, this); 111 Bind(STATE_RESET, &TrackerFrame::OnStateReset, this);
113 Bind(STATE_CHANGED, &TrackerFrame::OnStateChanged, this); 112 Bind(STATE_CHANGED, &TrackerFrame::OnStateChanged, this);
114 Bind(STATUS_CHANGED, &TrackerFrame::OnStatusChanged, this); 113 Bind(STATUS_CHANGED, &TrackerFrame::OnStatusChanged, this);
115 Bind(REDRAW_POSITION, &TrackerFrame::OnRedrawPosition, this);
116 Bind(CONNECT_TO_AP, &TrackerFrame::OnConnectToAp, this); 114 Bind(CONNECT_TO_AP, &TrackerFrame::OnConnectToAp, this);
117 115
118 wxSize logicalSize = FromDIP(wxSize(1280, 728)); 116 wxSize logicalSize = FromDIP(wxSize(1280, 728));
@@ -173,15 +171,8 @@ void TrackerFrame::ResetIndicators() {
173 QueueEvent(new wxCommandEvent(STATE_RESET)); 171 QueueEvent(new wxCommandEvent(STATE_RESET));
174} 172}
175 173
176void TrackerFrame::UpdateIndicators(UpdateIndicatorsMode mode) { 174void TrackerFrame::UpdateIndicators(StateUpdate state) {
177 auto evt = new wxCommandEvent(STATE_CHANGED); 175 QueueEvent(new StateChangedEvent(STATE_CHANGED, GetId(), std::move(state)));
178 evt->SetInt(static_cast<int>(mode));
179
180 QueueEvent(evt);
181}
182
183void TrackerFrame::RedrawPosition() {
184 QueueEvent(new wxCommandEvent(REDRAW_POSITION));
185} 176}
186 177
187void TrackerFrame::OnAbout(wxCommandEvent &event) { 178void TrackerFrame::OnAbout(wxCommandEvent &event) {
@@ -250,7 +241,8 @@ void TrackerFrame::OnSettings(wxCommandEvent &event) {
250 GetTrackerConfig().track_position = dlg.GetTrackPosition(); 241 GetTrackerConfig().track_position = dlg.GetTrackPosition();
251 GetTrackerConfig().Save(); 242 GetTrackerConfig().Save();
252 243
253 UpdateIndicators(); 244 UpdateIndicators(
245 StateUpdate{.cleared_locations = true, .player_position = true});
254 } 246 }
255} 247}
256 248
@@ -304,7 +296,7 @@ void TrackerFrame::OnSashPositionChanged(wxSplitterEvent& event) {
304void TrackerFrame::OnStateReset(wxCommandEvent &event) { 296void TrackerFrame::OnStateReset(wxCommandEvent &event) {
305 tracker_panel_->UpdateIndicators(); 297 tracker_panel_->UpdateIndicators();
306 achievements_pane_->UpdateIndicators(); 298 achievements_pane_->UpdateIndicators();
307 paintings_pane_->UpdateIndicators(); 299 paintings_pane_->ResetIndicators();
308 subway_map_->OnConnect(); 300 subway_map_->OnConnect();
309 if (panels_panel_ != nullptr) { 301 if (panels_panel_ != nullptr) {
310 notebook_->DeletePage(notebook_->FindPage(panels_panel_)); 302 notebook_->DeletePage(notebook_->FindPage(panels_panel_));
@@ -313,19 +305,10 @@ void TrackerFrame::OnStateReset(wxCommandEvent &event) {
313 Refresh(); 305 Refresh();
314} 306}
315 307
316void TrackerFrame::OnStateChanged(wxCommandEvent &event) { 308void TrackerFrame::OnStateChanged(StateChangedEvent &event) {
317 UpdateIndicatorsMode mode = static_cast<UpdateIndicatorsMode>(event.GetInt()); 309 const StateUpdate &state = event.GetState();
318 310
319 if (mode == kUPDATE_ALL_INDICATORS) { 311 if (state.open_panels_tab) {
320 tracker_panel_->UpdateIndicators();
321 achievements_pane_->UpdateIndicators();
322 paintings_pane_->UpdateIndicators();
323 subway_map_->UpdateIndicators();
324 if (panels_panel_ != nullptr) {
325 panels_panel_->UpdateIndicators();
326 }
327 Refresh();
328 } else if (mode == kUPDATE_ONLY_PANELS) {
329 if (panels_panel_ == nullptr) { 312 if (panels_panel_ == nullptr) {
330 panels_panel_ = new TrackerPanel(notebook_); 313 panels_panel_ = new TrackerPanel(notebook_);
331 panels_panel_->SetPanelsMode(); 314 panels_panel_->SetPanelsMode();
@@ -335,25 +318,39 @@ void TrackerFrame::OnStateChanged(wxCommandEvent &event) {
335 if (notebook_->GetSelection() == 2) { 318 if (notebook_->GetSelection() == 2) {
336 Refresh(); 319 Refresh();
337 } 320 }
338 }
339}
340
341void TrackerFrame::OnStatusChanged(wxCommandEvent &event) {
342 SetStatusText(wxString::FromUTF8(GetStatusMessage()));
343}
344 321
345void TrackerFrame::OnRedrawPosition(wxCommandEvent &event) {
346 if (!GetTrackerConfig().track_position) {
347 return; 322 return;
348 } 323 }
324
325 if (!state.items.empty() || !state.paintings.empty() ||
326 state.cleared_locations) {
327 tracker_panel_->UpdateIndicators();
328 subway_map_->UpdateIndicators();
329 if (panels_panel_ != nullptr) {
330 panels_panel_->UpdateIndicators();
331 }
332 Refresh();
333 } else if (state.player_position && GetTrackerConfig().track_position) {
334 if (notebook_->GetSelection() == 0) {
335 tracker_panel_->Refresh();
336 } else if (notebook_->GetSelection() == 2) {
337 panels_panel_->Refresh();
338 }
339 }
349 340
350 if (notebook_->GetSelection() == 0) { 341 if (state.achievements) {
351 tracker_panel_->Refresh(); 342 achievements_pane_->UpdateIndicators();
352 } else if (notebook_->GetSelection() == 2) { 343 }
353 panels_panel_->Refresh(); 344
345 if (!state.paintings.empty()) {
346 paintings_pane_->UpdateIndicators(state.paintings);
354 } 347 }
355} 348}
356 349
350void TrackerFrame::OnStatusChanged(wxCommandEvent &event) {
351 SetStatusText(wxString::FromUTF8(GetStatusMessage()));
352}
353
357void TrackerFrame::OnConnectToAp(ApConnectEvent &event) { 354void TrackerFrame::OnConnectToAp(ApConnectEvent &event) {
358 AP_Connect(event.GetServer(), event.GetUser(), event.GetPass()); 355 AP_Connect(event.GetServer(), event.GetUser(), event.GetPass());
359} 356}