mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2025-01-17 22:25:37 +00:00
Qt: Add power off hotkey and confirmation message
This commit is contained in:
parent
27c9f2d834
commit
e4ff8b0936
|
@ -776,6 +776,7 @@ void HostInterface::SetDefaultSettings()
|
||||||
m_settings.increase_timer_resolution = true;
|
m_settings.increase_timer_resolution = true;
|
||||||
m_settings.start_paused = false;
|
m_settings.start_paused = false;
|
||||||
m_settings.save_state_on_exit = true;
|
m_settings.save_state_on_exit = true;
|
||||||
|
m_settings.confim_power_off = true;
|
||||||
|
|
||||||
m_settings.gpu_renderer = Settings::DEFAULT_GPU_RENDERER;
|
m_settings.gpu_renderer = Settings::DEFAULT_GPU_RENDERER;
|
||||||
m_settings.gpu_resolution_scale = 1;
|
m_settings.gpu_resolution_scale = 1;
|
||||||
|
|
|
@ -14,6 +14,7 @@ void Settings::Load(SettingsInterface& si)
|
||||||
increase_timer_resolution = si.GetBoolValue("General", "IncreaseTimerResolution", true);
|
increase_timer_resolution = si.GetBoolValue("General", "IncreaseTimerResolution", true);
|
||||||
start_paused = si.GetBoolValue("General", "StartPaused", false);
|
start_paused = si.GetBoolValue("General", "StartPaused", false);
|
||||||
save_state_on_exit = si.GetBoolValue("General", "SaveStateOnExit", true);
|
save_state_on_exit = si.GetBoolValue("General", "SaveStateOnExit", true);
|
||||||
|
confim_power_off = si.GetBoolValue("General", "ConfirmPowerOff", true);
|
||||||
|
|
||||||
cpu_execution_mode = ParseCPUExecutionMode(si.GetStringValue("CPU", "ExecutionMode", "Interpreter").c_str())
|
cpu_execution_mode = ParseCPUExecutionMode(si.GetStringValue("CPU", "ExecutionMode", "Interpreter").c_str())
|
||||||
.value_or(CPUExecutionMode::Interpreter);
|
.value_or(CPUExecutionMode::Interpreter);
|
||||||
|
@ -67,6 +68,7 @@ void Settings::Save(SettingsInterface& si) const
|
||||||
si.SetBoolValue("General", "IncreaseTimerResolution", increase_timer_resolution);
|
si.SetBoolValue("General", "IncreaseTimerResolution", increase_timer_resolution);
|
||||||
si.SetBoolValue("General", "StartPaused", start_paused);
|
si.SetBoolValue("General", "StartPaused", start_paused);
|
||||||
si.SetBoolValue("General", "SaveStateOnExit", save_state_on_exit);
|
si.SetBoolValue("General", "SaveStateOnExit", save_state_on_exit);
|
||||||
|
si.SetBoolValue("General", "ConfirmPowerOff", confim_power_off);
|
||||||
|
|
||||||
si.SetStringValue("CPU", "ExecutionMode", GetCPUExecutionModeName(cpu_execution_mode));
|
si.SetStringValue("CPU", "ExecutionMode", GetCPUExecutionModeName(cpu_execution_mode));
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ struct Settings
|
||||||
bool increase_timer_resolution = true;
|
bool increase_timer_resolution = true;
|
||||||
bool start_paused = false;
|
bool start_paused = false;
|
||||||
bool save_state_on_exit = true;
|
bool save_state_on_exit = true;
|
||||||
|
bool confim_power_off = true;
|
||||||
|
|
||||||
GPURenderer gpu_renderer = GPURenderer::Software;
|
GPURenderer gpu_renderer = GPURenderer::Software;
|
||||||
u32 gpu_resolution_scale = 1;
|
u32 gpu_resolution_scale = 1;
|
||||||
|
|
|
@ -28,6 +28,7 @@ ConsoleSettingsWidget::ConsoleSettingsWidget(QtHostInterface* host_interface, QW
|
||||||
100.0f);
|
100.0f);
|
||||||
SettingWidgetBinder::BindWidgetToBoolSetting(m_host_interface, m_ui.pauseOnStart, "General/StartPaused");
|
SettingWidgetBinder::BindWidgetToBoolSetting(m_host_interface, m_ui.pauseOnStart, "General/StartPaused");
|
||||||
SettingWidgetBinder::BindWidgetToBoolSetting(m_host_interface, m_ui.saveStateOnExit, "General/SaveStateOnExit");
|
SettingWidgetBinder::BindWidgetToBoolSetting(m_host_interface, m_ui.saveStateOnExit, "General/SaveStateOnExit");
|
||||||
|
SettingWidgetBinder::BindWidgetToBoolSetting(m_host_interface, m_ui.confirmPowerOff, "General/ConfirmPowerOff");
|
||||||
SettingWidgetBinder::BindWidgetToEnumSetting(m_host_interface, m_ui.cpuExecutionMode, "CPU/ExecutionMode",
|
SettingWidgetBinder::BindWidgetToEnumSetting(m_host_interface, m_ui.cpuExecutionMode, "CPU/ExecutionMode",
|
||||||
&Settings::ParseCPUExecutionMode, &Settings::GetCPUExecutionModeName);
|
&Settings::ParseCPUExecutionMode, &Settings::GetCPUExecutionModeName);
|
||||||
SettingWidgetBinder::BindWidgetToBoolSetting(m_host_interface, m_ui.cdromReadThread, "CDROM/ReadThread");
|
SettingWidgetBinder::BindWidgetToBoolSetting(m_host_interface, m_ui.cdromReadThread, "CDROM/ReadThread");
|
||||||
|
|
|
@ -160,6 +160,13 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="8" column="0" colspan="2">
|
||||||
|
<widget class="QCheckBox" name="confirmPowerOff">
|
||||||
|
<property name="text">
|
||||||
|
<string>Confirm Power Off</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
|
|
@ -433,6 +433,7 @@ std::vector<QtHostInterface::HotkeyInfo> QtHostInterface::getHotkeyList() const
|
||||||
{QStringLiteral("FastForward"), QStringLiteral("Toggle Fast Forward"), QStringLiteral("General")},
|
{QStringLiteral("FastForward"), QStringLiteral("Toggle Fast Forward"), QStringLiteral("General")},
|
||||||
{QStringLiteral("Fullscreen"), QStringLiteral("Toggle Fullscreen"), QStringLiteral("General")},
|
{QStringLiteral("Fullscreen"), QStringLiteral("Toggle Fullscreen"), QStringLiteral("General")},
|
||||||
{QStringLiteral("Pause"), QStringLiteral("Toggle Pause"), QStringLiteral("General")},
|
{QStringLiteral("Pause"), QStringLiteral("Toggle Pause"), QStringLiteral("General")},
|
||||||
|
{QStringLiteral("PowerOff"), QStringLiteral("Power Off System"), QStringLiteral("General")},
|
||||||
{QStringLiteral("ToggleSoftwareRendering"), QStringLiteral("Toggle Software Rendering"),
|
{QStringLiteral("ToggleSoftwareRendering"), QStringLiteral("Toggle Software Rendering"),
|
||||||
QStringLiteral("Graphics")},
|
QStringLiteral("Graphics")},
|
||||||
{QStringLiteral("IncreaseResolutionScale"), QStringLiteral("Increase Resolution Scale"),
|
{QStringLiteral("IncreaseResolutionScale"), QStringLiteral("Increase Resolution Scale"),
|
||||||
|
@ -486,6 +487,36 @@ void QtHostInterface::updateHotkeyInputMap()
|
||||||
pauseSystem(!m_paused);
|
pauseSystem(!m_paused);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
hk(QStringLiteral("PowerOff"), [this](bool pressed) {
|
||||||
|
if (!pressed && m_system)
|
||||||
|
{
|
||||||
|
if (m_settings.confim_power_off)
|
||||||
|
{
|
||||||
|
emit setFullscreenRequested(false);
|
||||||
|
|
||||||
|
QString confirmation_message = tr("Are you sure you want to stop emulation?");
|
||||||
|
if (m_settings.save_state_on_exit)
|
||||||
|
{
|
||||||
|
confirmation_message += "\n\n";
|
||||||
|
confirmation_message += tr("The current state will be saved.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!messageConfirmed(confirmation_message))
|
||||||
|
{
|
||||||
|
if (m_settings.display_fullscreen)
|
||||||
|
emit setFullscreenRequested(true);
|
||||||
|
else
|
||||||
|
emit focusDisplayWidgetRequested();
|
||||||
|
|
||||||
|
m_system->ResetPerformanceCounters();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
powerOffSystem();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
hk(QStringLiteral("ToggleSoftwareRendering"), [this](bool pressed) {
|
hk(QStringLiteral("ToggleSoftwareRendering"), [this](bool pressed) {
|
||||||
if (!pressed)
|
if (!pressed)
|
||||||
ToggleSoftwareRendering();
|
ToggleSoftwareRendering();
|
||||||
|
@ -655,6 +686,9 @@ void QtHostInterface::pauseSystem(bool paused)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!m_system)
|
||||||
|
return;
|
||||||
|
|
||||||
m_paused = paused;
|
m_paused = paused;
|
||||||
m_audio_stream->PauseOutput(paused);
|
m_audio_stream->PauseOutput(paused);
|
||||||
if (!paused)
|
if (!paused)
|
||||||
|
|
Loading…
Reference in a new issue