Qt: Show dialog on startup for settings version mismatch

For the QMessageBox to appear, error reporting is performed again after
main window creation.
This commit is contained in:
Albert Liu 2020-10-07 20:43:50 -07:00
parent 9d2687e7d4
commit 94d7d4cead
5 changed files with 28 additions and 2 deletions

View File

@ -55,6 +55,8 @@ int main(int argc, char* argv[])
window->startupUpdateCheck();
}
window->reportSettingsVersionMismatchString();
int result = app.exec();
window.reset();

View File

@ -1088,6 +1088,13 @@ void MainWindow::startupUpdateCheck()
checkForUpdates(false);
}
void MainWindow::reportSettingsVersionMismatchString()
{
const QString mismatch_str = QString::fromStdString(m_host_interface->GetSettingsVersionMismatchString());
if (!mismatch_str.isEmpty())
reportError(mismatch_str);
}
void MainWindow::updateDebugMenuVisibility()
{
const bool visible = m_host_interface->GetBoolSettingValue("Main", "ShowDebugMenu", false);

View File

@ -30,6 +30,10 @@ public:
/// Performs update check if enabled in settings.
void startupUpdateCheck();
/// Reports m_host_interface's settings version mismatch string. Does nothing if string is empty (no settings version
/// mismatch detected).
void reportSettingsVersionMismatchString();
public Q_SLOTS:
/// Updates debug menu visibility (hides if disabled).
void updateDebugMenuVisibility();

View File

@ -1995,8 +1995,10 @@ void CommonHostInterface::CheckSettings(SettingsInterface& si)
if (settings_version == SETTINGS_VERSION)
return;
ReportFormattedError("Settings version %d does not match expected version %d, resetting", settings_version,
SETTINGS_VERSION);
m_settings_version_mismatch_str = StringUtil::StdStringFromFormat(
"Settings version %d does not match expected version %d, resetting", settings_version, SETTINGS_VERSION);
ReportError(m_settings_version_mismatch_str.c_str());
si.Clear();
si.SetIntValue("Main", "SettingsVersion", SETTINGS_VERSION);
SetDefaultSettings(si);
@ -2101,6 +2103,11 @@ void CommonHostInterface::CheckForSettingsChanges(const Settings& old_settings)
UpdateInputMap();
}
const std::string& CommonHostInterface::GetSettingsVersionMismatchString() const
{
return m_settings_version_mismatch_str;
}
void CommonHostInterface::SetTimerResolutionIncreased(bool enabled)
{
if (m_timer_resolution_increased == enabled)

View File

@ -174,6 +174,10 @@ public:
/// Reloads post processing shaders with the current configuration.
void ReloadPostProcessingShaders();
/// Returns an empty string if no settings version mismatch was detected, non-empty otherwise. Should not be called
/// before CheckSettings(SettingsInterface& si).
const std::string& GetSettingsVersionMismatchString() const;
protected:
enum : u32
{
@ -371,6 +375,8 @@ private:
// running in batch mode? i.e. exit after stopping emulation
bool m_batch_mode = false;
std::string m_settings_version_mismatch_str;
#ifdef WITH_DISCORD_PRESENCE
// discord rich presence
bool m_discord_presence_enabled = false;