From 1e8752759d16e129572cb7afd6cb30b2b4b5dc2e Mon Sep 17 00:00:00 2001
From: Connor McLaughlin <stenzek@gmail.com>
Date: Tue, 2 Feb 2021 01:46:16 +1000
Subject: [PATCH] NoGUI: Set default settings if missing

---
 src/duckstation-nogui/nogui_host_interface.cpp | 4 ++++
 src/duckstation-qt/qthostinterface.cpp         | 6 ++++++
 src/frontend-common/common_host_interface.cpp  | 9 ++++-----
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/duckstation-nogui/nogui_host_interface.cpp b/src/duckstation-nogui/nogui_host_interface.cpp
index 1eef98412..19db785c4 100644
--- a/src/duckstation-nogui/nogui_host_interface.cpp
+++ b/src/duckstation-nogui/nogui_host_interface.cpp
@@ -109,6 +109,10 @@ float NoGUIHostInterface::GetFloatSettingValue(const char* section, const char*
 void NoGUIHostInterface::LoadSettings()
 {
   m_settings_interface = std::make_unique<INISettingsInterface>(GetSettingsFileName());
+
+  if (!CommonHostInterface::CheckSettings(*m_settings_interface.get()))
+    AddOSDMessage("Settings version mismatch, settings have been reset to defaults.", 30.0f);
+
   CommonHostInterface::LoadSettings(*m_settings_interface.get());
   CommonHostInterface::FixIncompatibleSettings(false);
 }
diff --git a/src/duckstation-qt/qthostinterface.cpp b/src/duckstation-qt/qthostinterface.cpp
index 1dda607df..4c01d5e61 100644
--- a/src/duckstation-qt/qthostinterface.cpp
+++ b/src/duckstation-qt/qthostinterface.cpp
@@ -742,6 +742,12 @@ void QtHostInterface::SetDefaultSettings(SettingsInterface& si)
 {
   CommonHostInterface::SetDefaultSettings(si);
 
+  si.SetStringValue("Hotkeys", "PowerOff", "Keyboard/Escape");
+  si.SetStringValue("Hotkeys", "LoadSelectedSaveState", "Keyboard/F1");
+  si.SetStringValue("Hotkeys", "SaveSelectedSaveState", "Keyboard/F2");
+  si.SetStringValue("Hotkeys", "SelectPreviousSaveStateSlot", "Keyboard/F3");
+  si.SetStringValue("Hotkeys", "SelectNextSaveStateSlot", "Keyboard/F4");
+
   si.SetBoolValue("Main", "RenderToMainWindow", true);
 }
 
diff --git a/src/frontend-common/common_host_interface.cpp b/src/frontend-common/common_host_interface.cpp
index e849d1c4d..f8b83787d 100644
--- a/src/frontend-common/common_host_interface.cpp
+++ b/src/frontend-common/common_host_interface.cpp
@@ -2311,6 +2311,10 @@ void CommonHostInterface::SetDefaultSettings(SettingsInterface& si)
 {
   HostInterface::SetDefaultSettings(si);
 
+  // TODO: Maybe we should bind this to F1 in the future.
+  if (m_fullscreen_ui_enabled)
+    si.SetStringValue("Hotkeys", "OpenQuickMenu", "Keyboard/Escape");
+
   si.SetStringValue("Controller1", "ButtonUp", "Keyboard/W");
   si.SetStringValue("Controller1", "ButtonDown", "Keyboard/S");
   si.SetStringValue("Controller1", "ButtonLeft", "Keyboard/A");
@@ -2328,11 +2332,6 @@ void CommonHostInterface::SetDefaultSettings(SettingsInterface& si)
   si.SetStringValue("Hotkeys", "FastForward", "Keyboard/Tab");
   si.SetStringValue("Hotkeys", "TogglePause", "Keyboard/Pause");
   si.SetStringValue("Hotkeys", "ToggleFullscreen", "Keyboard/Alt+Return");
-  si.SetStringValue("Hotkeys", "PowerOff", "Keyboard/Escape");
-  si.SetStringValue("Hotkeys", "LoadSelectedSaveState", "Keyboard/F1");
-  si.SetStringValue("Hotkeys", "SaveSelectedSaveState", "Keyboard/F2");
-  si.SetStringValue("Hotkeys", "SelectPreviousSaveStateSlot", "Keyboard/F3");
-  si.SetStringValue("Hotkeys", "SelectNextSaveStateSlot", "Keyboard/F4");
   si.SetStringValue("Hotkeys", "Screenshot", "Keyboard/F10");
   si.SetStringValue("Hotkeys", "IncreaseResolutionScale", "Keyboard/PageUp");
   si.SetStringValue("Hotkeys", "DecreaseResolutionScale", "Keyboard/PageDown");