Defer update prompt if emulating, and show no update found on explicit click

This commit is contained in:
James 2017-10-14 18:35:45 +11:00 committed by James Rowe
parent 2e6c80d1aa
commit 7361ee9750
2 changed files with 35 additions and 0 deletions

View file

@ -390,6 +390,7 @@ void GMainWindow::OnDisplayTitleBars(bool show) {
} }
void GMainWindow::OnCheckForUpdates() { void GMainWindow::OnCheckForUpdates() {
explicit_update_check = true;
CheckForUpdates(); CheckForUpdates();
} }
@ -409,10 +410,29 @@ void GMainWindow::OnUpdateFound(bool found, bool error) {
if (!found) { if (!found) {
LOG_INFO(Frontend, "No updates found"); LOG_INFO(Frontend, "No updates found");
// If the user explicitly clicked the "Check for Updates" button, we are
// going to want to show them a prompt anyway.
if (explicit_update_check) {
explicit_update_check = false;
ShowNoUpdatePrompt();
}
return;
}
if (emulation_running && !explicit_update_check) {
LOG_INFO(Frontend, "Update found, deferring as game is running");
defer_update_prompt = true;
return; return;
} }
LOG_INFO(Frontend, "Update found!"); LOG_INFO(Frontend, "Update found!");
explicit_update_check = false;
ShowUpdatePrompt();
}
void GMainWindow::ShowUpdatePrompt() {
auto result = QMessageBox::question( auto result = QMessageBox::question(
this, tr("Update available!"), this, tr("Update available!"),
tr("An update for Citra is available. Do you wish to install it now?<br /><br />" tr("An update for Citra is available. Do you wish to install it now?<br /><br />"
@ -425,6 +445,11 @@ void GMainWindow::OnUpdateFound(bool found, bool error) {
} }
} }
void GMainWindow::ShowNoUpdatePrompt() {
QMessageBox::information(this, tr("No update found"), tr("No update has been found for Citra."),
QMessageBox::Ok, QMessageBox::Ok);
}
void GMainWindow::OnOpenUpdater() { void GMainWindow::OnOpenUpdater() {
updater->LaunchUI(); updater->LaunchUI();
} }
@ -584,6 +609,11 @@ void GMainWindow::ShutdownGame() {
emu_frametime_label->setVisible(false); emu_frametime_label->setVisible(false);
emulation_running = false; emulation_running = false;
if (defer_update_prompt) {
defer_update_prompt = false;
ShowUpdatePrompt();
}
} }
void GMainWindow::StoreRecentFile(const QString& filename) { void GMainWindow::StoreRecentFile(const QString& filename) {

View file

@ -83,6 +83,8 @@ private:
void ShowCallouts(); void ShowCallouts();
void ShowUpdaterWidgets(); void ShowUpdaterWidgets();
void ShowUpdatePrompt();
void ShowNoUpdatePrompt();
void CheckForUpdates(); void CheckForUpdates();
/** /**
@ -173,6 +175,9 @@ private:
WaitTreeWidget* waitTreeWidget; WaitTreeWidget* waitTreeWidget;
Updater* updater; Updater* updater;
bool explicit_update_check = false;
bool defer_update_prompt = false;
QAction* actions_recent_files[max_recent_files_item]; QAction* actions_recent_files[max_recent_files_item];
protected: protected: