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
parent 27d5e7c59d
commit 64425bfba6
2 changed files with 35 additions and 0 deletions

View File

@ -386,6 +386,7 @@ void GMainWindow::OnDisplayTitleBars(bool show) {
} }
void GMainWindow::OnCheckForUpdates() { void GMainWindow::OnCheckForUpdates() {
explicit_update_check = true;
CheckForUpdates(); CheckForUpdates();
} }
@ -405,10 +406,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 />"
@ -421,6 +441,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();
} }
@ -580,6 +605,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

@ -82,6 +82,8 @@ private:
void ShowCallouts(); void ShowCallouts();
void ShowUpdaterWidgets(); void ShowUpdaterWidgets();
void ShowUpdatePrompt();
void ShowNoUpdatePrompt();
void CheckForUpdates(); void CheckForUpdates();
/** /**
@ -170,6 +172,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: