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.cpp59
1 files changed, 5 insertions, 54 deletions
diff --git a/src/tracker_frame.cpp b/src/tracker_frame.cpp index 9649c43..abc413d 100644 --- a/src/tracker_frame.cpp +++ b/src/tracker_frame.cpp
@@ -63,6 +63,9 @@ TrackerFrame::TrackerFrame()
63 AP_SetTrackerFrame(this); 63 AP_SetTrackerFrame(this);
64 IPC_SetTrackerFrame(this); 64 IPC_SetTrackerFrame(this);
65 65
66 updater_ = std::make_unique<Updater>(this);
67 updater_->Cleanup();
68
66 wxMenu *menuFile = new wxMenu(); 69 wxMenu *menuFile = new wxMenu();
67 menuFile->Append(ID_AP_CONNECT, "&Connect to Archipelago"); 70 menuFile->Append(ID_AP_CONNECT, "&Connect to Archipelago");
68 menuFile->Append(ID_IPC_CONNECT, "&Connect to Lingo"); 71 menuFile->Append(ID_IPC_CONNECT, "&Connect to Lingo");
@@ -143,7 +146,7 @@ TrackerFrame::TrackerFrame()
143 } 146 }
144 147
145 if (GetTrackerConfig().should_check_for_updates) { 148 if (GetTrackerConfig().should_check_for_updates) {
146 CheckForUpdates(/*manual=*/false); 149 updater_->CheckForUpdates(/*invisible=*/true);
147 } 150 }
148 151
149 SetStatusText(GetStatusMessage()); 152 SetStatusText(GetStatusMessage());
@@ -245,7 +248,7 @@ void TrackerFrame::OnSettings(wxCommandEvent &event) {
245} 248}
246 249
247void TrackerFrame::OnCheckForUpdates(wxCommandEvent &event) { 250void TrackerFrame::OnCheckForUpdates(wxCommandEvent &event) {
248 CheckForUpdates(/*manual=*/true); 251 updater_->CheckForUpdates(/*invisible=*/false);
249} 252}
250 253
251void TrackerFrame::OnZoomIn(wxCommandEvent &event) { 254void TrackerFrame::OnZoomIn(wxCommandEvent &event) {
@@ -345,55 +348,3 @@ void TrackerFrame::OnRedrawPosition(wxCommandEvent &event) {
345void TrackerFrame::OnConnectToAp(ApConnectEvent &event) { 348void TrackerFrame::OnConnectToAp(ApConnectEvent &event) {
346 AP_Connect(event.GetServer(), event.GetUser(), event.GetPass()); 349 AP_Connect(event.GetServer(), event.GetUser(), event.GetPass());
347} 350}
348
349void TrackerFrame::CheckForUpdates(bool manual) {
350 wxWebRequest request = wxWebSession::GetDefault().CreateRequest(
351 this, "https://code.fourisland.com/lingo-ap-tracker/plain/VERSION");
352
353 if (!request.IsOk()) {
354 if (manual) {
355 wxMessageBox("Could not check for updates.", "Error",
356 wxOK | wxICON_ERROR);
357 } else {
358 SetStatusText("Could not check for updates.");
359 }
360
361 return;
362 }
363
364 Bind(wxEVT_WEBREQUEST_STATE, [this, manual](wxWebRequestEvent &evt) {
365 if (evt.GetState() == wxWebRequest::State_Completed) {
366 std::string response = evt.GetResponse().AsString().ToStdString();
367
368 Version latest_version(response);
369 if (kTrackerVersion < latest_version) {
370 std::ostringstream message_text;
371 message_text << "There is a newer version of Lingo AP Tracker "
372 "available. You have "
373 << kTrackerVersion.ToString()
374 << ", and the latest version is "
375 << latest_version.ToString()
376 << ". Would you like to update?";
377
378 if (wxMessageBox(message_text.str(), "Update available", wxYES_NO) ==
379 wxYES) {
380 wxLaunchDefaultBrowser(
381 "https://code.fourisland.com/lingo-ap-tracker/about/"
382 "CHANGELOG.md");
383 }
384 } else if (manual) {
385 wxMessageBox("Lingo AP Tracker is up to date!", "Lingo AP Tracker",
386 wxOK);
387 }
388 } else if (evt.GetState() == wxWebRequest::State_Failed) {
389 if (manual) {
390 wxMessageBox("Could not check for updates.", "Error",
391 wxOK | wxICON_ERROR);
392 } else {
393 SetStatusText("Could not check for updates.");
394 }
395 }
396 });
397
398 request.Start();
399}