Qt/GeneralPane: Disable certain options while emulation is running

This commit is contained in:
spycrab
2018-04-21 22:09:46 +02:00
parent 9dcc8131df
commit b2e5f1d85f
2 changed files with 21 additions and 0 deletions

View File

@ -18,6 +18,7 @@
#include "Core/Analytics.h" #include "Core/Analytics.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h"
#include "Core/PowerPC/PowerPC.h" #include "Core/PowerPC/PowerPC.h"
#include "DolphinQt2/Settings.h" #include "DolphinQt2/Settings.h"
#include "UICommon/AutoUpdate.h" #include "UICommon/AutoUpdate.h"
@ -38,6 +39,9 @@ GeneralPane::GeneralPane(QWidget* parent) : QWidget(parent)
LoadConfig(); LoadConfig();
ConnectLayout(); ConnectLayout();
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
&GeneralPane::OnEmulationStateChanged);
} }
void GeneralPane::CreateLayout() void GeneralPane::CreateLayout()
@ -59,6 +63,17 @@ void GeneralPane::CreateLayout()
setLayout(m_main_layout); setLayout(m_main_layout);
} }
void GeneralPane::OnEmulationStateChanged(Core::State state)
{
const bool running = state != Core::State::Uninitialized;
m_checkbox_dualcore->setEnabled(!running);
m_checkbox_cheats->setEnabled(!running);
m_radio_interpreter->setEnabled(!running);
m_radio_cached_interpreter->setEnabled(!running);
m_radio_jit->setEnabled(!running);
}
void GeneralPane::ConnectLayout() void GeneralPane::ConnectLayout()
{ {
connect(m_checkbox_dualcore, &QCheckBox::toggled, this, &GeneralPane::OnSaveConfig); connect(m_checkbox_dualcore, &QCheckBox::toggled, this, &GeneralPane::OnSaveConfig);

View File

@ -14,6 +14,11 @@ class QRadioButton;
class QSlider; class QSlider;
class QVBoxLayout; class QVBoxLayout;
namespace Core
{
enum class State;
}
class GeneralPane final : public QWidget class GeneralPane final : public QWidget
{ {
Q_OBJECT Q_OBJECT
@ -29,6 +34,7 @@ private:
void LoadConfig(); void LoadConfig();
void OnSaveConfig(); void OnSaveConfig();
void OnEmulationStateChanged(Core::State state);
// Widgets // Widgets
QVBoxLayout* m_main_layout; QVBoxLayout* m_main_layout;