diff options
| author | Star Rauchenberger <fefferburbia@gmail.com> | 2024-06-06 15:54:41 -0400 |
|---|---|---|
| committer | Star Rauchenberger <fefferburbia@gmail.com> | 2024-06-06 15:54:41 -0400 |
| commit | 8ddab49cc13d809ca75dcd7f645661a3d3cb05c4 (patch) | |
| tree | ba1e5f3237dbb7cdc939c35e193f5e6e46845a77 /src/tracker_frame.cpp | |
| parent | ac38dd0a5c394eefc39b7a8cf7b96762f18c8b31 (diff) | |
| parent | 6f5287b3921c843a6b322ccbdfcbef00a8f16980 (diff) | |
| download | lingo-ap-tracker-8ddab49cc13d809ca75dcd7f645661a3d3cb05c4.tar.gz lingo-ap-tracker-8ddab49cc13d809ca75dcd7f645661a3d3cb05c4.tar.bz2 lingo-ap-tracker-8ddab49cc13d809ca75dcd7f645661a3d3cb05c4.zip | |
Merge branch 'subway'
Diffstat (limited to 'src/tracker_frame.cpp')
| -rw-r--r-- | src/tracker_frame.cpp | 82 |
1 files changed, 69 insertions, 13 deletions
| diff --git a/src/tracker_frame.cpp b/src/tracker_frame.cpp index d64e0d3..107ae49 100644 --- a/src/tracker_frame.cpp +++ b/src/tracker_frame.cpp | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #include "tracker_frame.h" | 1 | #include "tracker_frame.h" |
| 2 | 2 | ||
| 3 | #include <wx/aboutdlg.h> | ||
| 3 | #include <wx/choicebk.h> | 4 | #include <wx/choicebk.h> |
| 5 | #include <wx/notebook.h> | ||
| 4 | #include <wx/webrequest.h> | 6 | #include <wx/webrequest.h> |
| 5 | 7 | ||
| 6 | #include <nlohmann/json.hpp> | 8 | #include <nlohmann/json.hpp> |
| @@ -10,6 +12,7 @@ | |||
| 10 | #include "ap_state.h" | 12 | #include "ap_state.h" |
| 11 | #include "connection_dialog.h" | 13 | #include "connection_dialog.h" |
| 12 | #include "settings_dialog.h" | 14 | #include "settings_dialog.h" |
| 15 | #include "subway_map.h" | ||
| 13 | #include "tracker_config.h" | 16 | #include "tracker_config.h" |
| 14 | #include "tracker_panel.h" | 17 | #include "tracker_panel.h" |
| 15 | #include "version.h" | 18 | #include "version.h" |
| @@ -17,9 +20,12 @@ | |||
| 17 | enum TrackerFrameIds { | 20 | enum TrackerFrameIds { |
| 18 | ID_CONNECT = 1, | 21 | ID_CONNECT = 1, |
| 19 | ID_CHECK_FOR_UPDATES = 2, | 22 | ID_CHECK_FOR_UPDATES = 2, |
| 20 | ID_SETTINGS = 3 | 23 | ID_SETTINGS = 3, |
| 24 | ID_ZOOM_IN = 4, | ||
| 25 | ID_ZOOM_OUT = 5, | ||
| 21 | }; | 26 | }; |
| 22 | 27 | ||
| 28 | wxDEFINE_EVENT(STATE_RESET, wxCommandEvent); | ||
| 23 | wxDEFINE_EVENT(STATE_CHANGED, wxCommandEvent); | 29 | wxDEFINE_EVENT(STATE_CHANGED, wxCommandEvent); |
| 24 | wxDEFINE_EVENT(STATUS_CHANGED, wxCommandEvent); | 30 | wxDEFINE_EVENT(STATUS_CHANGED, wxCommandEvent); |
| 25 | 31 | ||
| @@ -35,12 +41,20 @@ TrackerFrame::TrackerFrame() | |||
| 35 | menuFile->Append(ID_SETTINGS, "&Settings"); | 41 | menuFile->Append(ID_SETTINGS, "&Settings"); |
| 36 | menuFile->Append(wxID_EXIT); | 42 | menuFile->Append(wxID_EXIT); |
| 37 | 43 | ||
| 44 | wxMenu *menuView = new wxMenu(); | ||
| 45 | zoom_in_menu_item_ = menuView->Append(ID_ZOOM_IN, "Zoom In\tCtrl-+"); | ||
| 46 | zoom_out_menu_item_ = menuView->Append(ID_ZOOM_OUT, "Zoom Out\tCtrl--"); | ||
| 47 | |||
| 48 | zoom_in_menu_item_->Enable(false); | ||
| 49 | zoom_out_menu_item_->Enable(false); | ||
| 50 | |||
| 38 | wxMenu *menuHelp = new wxMenu(); | 51 | wxMenu *menuHelp = new wxMenu(); |
| 39 | menuHelp->Append(wxID_ABOUT); | 52 | menuHelp->Append(wxID_ABOUT); |
| 40 | menuHelp->Append(ID_CHECK_FOR_UPDATES, "Check for Updates"); | 53 | menuHelp->Append(ID_CHECK_FOR_UPDATES, "Check for Updates"); |
| 41 | 54 | ||
| 42 | wxMenuBar *menuBar = new wxMenuBar(); | 55 | wxMenuBar *menuBar = new wxMenuBar(); |
| 43 | menuBar->Append(menuFile, "&File"); | 56 | menuBar->Append(menuFile, "&File"); |
| 57 | menuBar->Append(menuView, "&View"); | ||
| 44 | menuBar->Append(menuHelp, "&Help"); | 58 | menuBar->Append(menuHelp, "&Help"); |
| 45 | 59 | ||
| 46 | SetMenuBar(menuBar); | 60 | SetMenuBar(menuBar); |
| @@ -54,18 +68,26 @@ TrackerFrame::TrackerFrame() | |||
| 54 | Bind(wxEVT_MENU, &TrackerFrame::OnSettings, this, ID_SETTINGS); | 68 | Bind(wxEVT_MENU, &TrackerFrame::OnSettings, this, ID_SETTINGS); |
| 55 | Bind(wxEVT_MENU, &TrackerFrame::OnCheckForUpdates, this, | 69 | Bind(wxEVT_MENU, &TrackerFrame::OnCheckForUpdates, this, |
| 56 | ID_CHECK_FOR_UPDATES); | 70 | ID_CHECK_FOR_UPDATES); |
| 71 | Bind(wxEVT_MENU, &TrackerFrame::OnZoomIn, this, ID_ZOOM_IN); | ||
| 72 | Bind(wxEVT_MENU, &TrackerFrame::OnZoomOut, this, ID_ZOOM_OUT); | ||
| 73 | Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, &TrackerFrame::OnChangePage, this); | ||
| 74 | Bind(STATE_RESET, &TrackerFrame::OnStateReset, this); | ||
| 57 | Bind(STATE_CHANGED, &TrackerFrame::OnStateChanged, this); | 75 | Bind(STATE_CHANGED, &TrackerFrame::OnStateChanged, this); |
| 58 | Bind(STATUS_CHANGED, &TrackerFrame::OnStatusChanged, this); | 76 | Bind(STATUS_CHANGED, &TrackerFrame::OnStatusChanged, this); |
| 59 | 77 | ||
| 60 | wxChoicebook *choicebook = new wxChoicebook(this, wxID_ANY); | 78 | wxChoicebook *choicebook = new wxChoicebook(this, wxID_ANY); |
| 61 | achievements_pane_ = new AchievementsPane(this); | 79 | achievements_pane_ = new AchievementsPane(choicebook); |
| 62 | choicebook->AddPage(achievements_pane_, "Achievements"); | 80 | choicebook->AddPage(achievements_pane_, "Achievements"); |
| 63 | 81 | ||
| 64 | tracker_panel_ = new TrackerPanel(this); | 82 | notebook_ = new wxNotebook(this, wxID_ANY); |
| 83 | tracker_panel_ = new TrackerPanel(notebook_); | ||
| 84 | subway_map_ = new SubwayMap(notebook_); | ||
| 85 | notebook_->AddPage(tracker_panel_, "Map"); | ||
| 86 | notebook_->AddPage(subway_map_, "Subway"); | ||
| 65 | 87 | ||
| 66 | wxBoxSizer *top_sizer = new wxBoxSizer(wxHORIZONTAL); | 88 | wxBoxSizer *top_sizer = new wxBoxSizer(wxHORIZONTAL); |
| 67 | top_sizer->Add(choicebook, wxSizerFlags().Expand().Proportion(1)); | 89 | top_sizer->Add(choicebook, wxSizerFlags().Expand().Proportion(1)); |
| 68 | top_sizer->Add(tracker_panel_, wxSizerFlags().Expand().Proportion(3)); | 90 | top_sizer->Add(notebook_, wxSizerFlags().Expand().Proportion(3)); |
| 69 | 91 | ||
| 70 | SetSizerAndFit(top_sizer); | 92 | SetSizerAndFit(top_sizer); |
| 71 | SetSize(1280, 728); | 93 | SetSize(1280, 728); |
| @@ -96,17 +118,23 @@ void TrackerFrame::SetStatusMessage(std::string message) { | |||
| 96 | QueueEvent(event); | 118 | QueueEvent(event); |
| 97 | } | 119 | } |
| 98 | 120 | ||
| 121 | void TrackerFrame::ResetIndicators() { | ||
| 122 | QueueEvent(new wxCommandEvent(STATE_RESET)); | ||
| 123 | } | ||
| 124 | |||
| 99 | void TrackerFrame::UpdateIndicators() { | 125 | void TrackerFrame::UpdateIndicators() { |
| 100 | QueueEvent(new wxCommandEvent(STATE_CHANGED)); | 126 | QueueEvent(new wxCommandEvent(STATE_CHANGED)); |
| 101 | } | 127 | } |
| 102 | 128 | ||
| 103 | void TrackerFrame::OnAbout(wxCommandEvent &event) { | 129 | void TrackerFrame::OnAbout(wxCommandEvent &event) { |
| 104 | std::ostringstream message_text; | 130 | wxAboutDialogInfo about_info; |
| 105 | message_text << "Lingo Archipelago Tracker " << kTrackerVersion | 131 | about_info.SetName("Lingo Archipelago Tracker"); |
| 106 | << " by hatkirby"; | 132 | about_info.SetVersion(kTrackerVersion.ToString()); |
| 107 | 133 | about_info.AddDeveloper("hatkirby"); | |
| 108 | wxMessageBox(message_text.str(), "About lingo-ap-tracker", | 134 | about_info.AddArtist("Brenton Wildes"); |
| 109 | wxOK | wxICON_INFORMATION); | 135 | about_info.AddArtist("kinrah"); |
| 136 | |||
| 137 | wxAboutBox(about_info); | ||
| 110 | } | 138 | } |
| 111 | 139 | ||
| 112 | void TrackerFrame::OnExit(wxCommandEvent &event) { Close(true); } | 140 | void TrackerFrame::OnExit(wxCommandEvent &event) { Close(true); } |
| @@ -122,7 +150,8 @@ void TrackerFrame::OnConnect(wxCommandEvent &event) { | |||
| 122 | std::deque<ConnectionDetails> new_history; | 150 | std::deque<ConnectionDetails> new_history; |
| 123 | new_history.push_back(GetTrackerConfig().connection_details); | 151 | new_history.push_back(GetTrackerConfig().connection_details); |
| 124 | 152 | ||
| 125 | for (const ConnectionDetails& details : GetTrackerConfig().connection_history) { | 153 | for (const ConnectionDetails &details : |
| 154 | GetTrackerConfig().connection_history) { | ||
| 126 | if (details != GetTrackerConfig().connection_details) { | 155 | if (details != GetTrackerConfig().connection_details) { |
| 127 | new_history.push_back(details); | 156 | new_history.push_back(details); |
| 128 | } | 157 | } |
| @@ -158,9 +187,34 @@ void TrackerFrame::OnCheckForUpdates(wxCommandEvent &event) { | |||
| 158 | CheckForUpdates(/*manual=*/true); | 187 | CheckForUpdates(/*manual=*/true); |
| 159 | } | 188 | } |
| 160 | 189 | ||
| 190 | void TrackerFrame::OnZoomIn(wxCommandEvent &event) { | ||
| 191 | if (notebook_->GetSelection() == 1) { | ||
| 192 | subway_map_->Zoom(true); | ||
| 193 | } | ||
| 194 | } | ||
| 195 | |||
| 196 | void TrackerFrame::OnZoomOut(wxCommandEvent& event) { | ||
| 197 | if (notebook_->GetSelection() == 1) { | ||
| 198 | subway_map_->Zoom(false); | ||
| 199 | } | ||
| 200 | } | ||
| 201 | |||
| 202 | void TrackerFrame::OnChangePage(wxBookCtrlEvent &event) { | ||
| 203 | zoom_in_menu_item_->Enable(event.GetSelection() == 1); | ||
| 204 | zoom_out_menu_item_->Enable(event.GetSelection() == 1); | ||
| 205 | } | ||
| 206 | |||
| 207 | void TrackerFrame::OnStateReset(wxCommandEvent& event) { | ||
| 208 | tracker_panel_->UpdateIndicators(); | ||
| 209 | achievements_pane_->UpdateIndicators(); | ||
| 210 | subway_map_->OnConnect(); | ||
| 211 | Refresh(); | ||
| 212 | } | ||
| 213 | |||
| 161 | void TrackerFrame::OnStateChanged(wxCommandEvent &event) { | 214 | void TrackerFrame::OnStateChanged(wxCommandEvent &event) { |
| 162 | tracker_panel_->UpdateIndicators(); | 215 | tracker_panel_->UpdateIndicators(); |
| 163 | achievements_pane_->UpdateIndicators(); | 216 | achievements_pane_->UpdateIndicators(); |
| 217 | subway_map_->UpdateIndicators(); | ||
| 164 | Refresh(); | 218 | Refresh(); |
| 165 | } | 219 | } |
| 166 | 220 | ||
| @@ -192,8 +246,10 @@ void TrackerFrame::CheckForUpdates(bool manual) { | |||
| 192 | std::ostringstream message_text; | 246 | std::ostringstream message_text; |
| 193 | message_text << "There is a newer version of Lingo AP Tracker " | 247 | message_text << "There is a newer version of Lingo AP Tracker " |
| 194 | "available. You have " | 248 | "available. You have " |
| 195 | << kTrackerVersion << ", and the latest version is " | 249 | << kTrackerVersion.ToString() |
| 196 | << latest_version << ". Would you like to update?"; | 250 | << ", and the latest version is " |
| 251 | << latest_version.ToString() | ||
| 252 | << ". Would you like to update?"; | ||
| 197 | 253 | ||
| 198 | if (wxMessageBox(message_text.str(), "Update available", wxYES_NO) == | 254 | if (wxMessageBox(message_text.str(), "Update available", wxYES_NO) == |
| 199 | wxYES) { | 255 | wxYES) { |
