summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorspycrab <spycrab@users.noreply.github.com>2017-08-30 21:00:59 +0200
committerspycrab <spycrab@users.noreply.github.com>2017-09-15 19:01:23 +0200
commit5aecd61ede39efab8adfe228615da76176cfaaa5 (patch)
treea595b752118cad3acefd98e1389b5103d1e6a95b /Source
parent8687f6aae7928d4fc2268c1c0251f051503612af (diff)
Qt/Settings: Implement cheat settings
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/DolphinQt2/Config/CheatWarningWidget.cpp45
-rw-r--r--Source/Core/DolphinQt2/Config/CheatWarningWidget.h7
-rw-r--r--Source/Core/DolphinQt2/Settings.cpp14
-rw-r--r--Source/Core/DolphinQt2/Settings.h5
-rw-r--r--Source/Core/DolphinQt2/Settings/GeneralPane.cpp4
5 files changed, 47 insertions, 28 deletions
diff --git a/Source/Core/DolphinQt2/Config/CheatWarningWidget.cpp b/Source/Core/DolphinQt2/Config/CheatWarningWidget.cpp
index c47bb93bd4..b365e3048b 100644
--- a/Source/Core/DolphinQt2/Config/CheatWarningWidget.cpp
+++ b/Source/Core/DolphinQt2/Config/CheatWarningWidget.cpp
@@ -6,35 +6,34 @@
#include <QHBoxLayout>
#include <QLabel>
-#include <QMessageBox>
#include <QPixmap>
#include <QPushButton>
#include <QStyle>
-#include <QTimer>
#include "Core/ConfigManager.h"
#include "Core/Core.h"
+#include "DolphinQt2/Settings.h"
CheatWarningWidget::CheatWarningWidget(const std::string& game_id) : m_game_id(game_id)
{
CreateWidgets();
ConnectWidgets();
- setHidden(true);
+ connect(&Settings::Instance(), &Settings::EnableCheatsChanged,
+ [this] { Update(Core::IsRunning()); });
+ connect(this, &CheatWarningWidget::EmulationStarted, [this] { Update(true); });
+ connect(this, &CheatWarningWidget::EmulationStopped, [this] { Update(false); });
- connect(this, &CheatWarningWidget::CheatEnableToggled, this,
- &CheatWarningWidget::CheatEnableToggled);
- connect(this, &CheatWarningWidget::EmulationStarted, this,
- &CheatWarningWidget::CheatEnableToggled);
- connect(this, &CheatWarningWidget::EmulationStopped, this,
- &CheatWarningWidget::CheatEnableToggled);
+ Update(Core::IsRunning());
}
void CheatWarningWidget::CreateWidgets()
{
auto* icon = new QLabel;
- QPixmap warning_icon = style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(24, 24);
+ const auto size = 1.5 * QFontMetrics(font()).height();
+
+ QPixmap warning_icon = style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(size, size);
icon->setPixmap(warning_icon);
@@ -46,34 +45,38 @@ void CheatWarningWidget::CreateWidgets()
auto* layout = new QHBoxLayout;
layout->addWidget(icon);
- layout->addWidget(m_text);
+ layout->addWidget(m_text, 1);
layout->addWidget(m_config_button);
+ layout->setContentsMargins(0, 0, 0, 0);
+
setLayout(layout);
}
-void CheatWarningWidget::Update()
+void CheatWarningWidget::Update(bool running)
{
- bool cheats_enabled = SConfig::GetInstance().bEnableCheats;
-
- bool hide = true;
+ bool hide_widget = true;
+ bool hide_config_button = true;
- if (Core::IsRunning() && SConfig::GetInstance().GetGameID() == m_game_id)
+ if (running && SConfig::GetInstance().GetGameID() == m_game_id)
{
- hide = false;
+ hide_widget = false;
m_text->setText(tr("Changing cheats will only take effect when the game is restarted."));
}
- if (!cheats_enabled)
+ if (!Settings::Instance().GetCheatsEnabled())
{
- hide = false;
+ hide_widget = false;
+ hide_config_button = false;
m_text->setText(tr("Dolphin's cheat system is currently disabled."));
}
- m_config_button->setHidden(hide);
+ setHidden(hide_widget);
+ m_config_button->setHidden(hide_config_button);
}
void CheatWarningWidget::ConnectWidgets()
{
- connect(m_config_button, &QPushButton::pressed, [this] { emit OpenCheatEnableSettings(); });
+ connect(m_config_button, &QPushButton::pressed, this,
+ &CheatWarningWidget::OpenCheatEnableSettings);
}
diff --git a/Source/Core/DolphinQt2/Config/CheatWarningWidget.h b/Source/Core/DolphinQt2/Config/CheatWarningWidget.h
index 77f8506824..15b3334620 100644
--- a/Source/Core/DolphinQt2/Config/CheatWarningWidget.h
+++ b/Source/Core/DolphinQt2/Config/CheatWarningWidget.h
@@ -10,7 +10,6 @@
class QLabel;
class QPushButton;
-class QTimer;
class CheatWarningWidget : public QWidget
{
@@ -20,18 +19,16 @@ public:
signals:
void OpenCheatEnableSettings();
- void CheatEnableToggled();
void EmulationStarted();
void EmulationStopped();
private:
- const std::string& m_game_id;
-
void CreateWidgets();
void ConnectWidgets();
- void Update();
+ void Update(bool running);
QLabel* m_text;
QPushButton* m_config_button;
+ const std::string m_game_id;
};
diff --git a/Source/Core/DolphinQt2/Settings.cpp b/Source/Core/DolphinQt2/Settings.cpp
index fbc283c267..7e5a16c6e8 100644
--- a/Source/Core/DolphinQt2/Settings.cpp
+++ b/Source/Core/DolphinQt2/Settings.cpp
@@ -203,3 +203,17 @@ void Settings::ResetNetPlayServer(NetPlayServer* server)
{
m_server.reset(server);
}
+
+bool Settings::GetCheatsEnabled() const
+{
+ return SConfig::GetInstance().bEnableCheats;
+}
+
+void Settings::SetCheatsEnabled(bool enabled)
+{
+ if (SConfig::GetInstance().bEnableCheats != enabled)
+ {
+ SConfig::GetInstance().bEnableCheats = enabled;
+ emit EnableCheatsChanged(enabled);
+ }
+}
diff --git a/Source/Core/DolphinQt2/Settings.h b/Source/Core/DolphinQt2/Settings.h
index 4de0b88be6..42964ec0fd 100644
--- a/Source/Core/DolphinQt2/Settings.h
+++ b/Source/Core/DolphinQt2/Settings.h
@@ -77,6 +77,10 @@ public:
NetPlayServer* GetNetPlayServer();
void ResetNetPlayServer(NetPlayServer* server = nullptr);
+ // Cheats
+ bool GetCheatsEnabled() const;
+ void SetCheatsEnabled(bool enabled);
+
// Other
GameListModel* GetGameListModel() const;
@@ -90,6 +94,7 @@ signals:
void NANDRefresh();
void LogVisibilityChanged(bool visible);
void LogConfigVisibilityChanged(bool visible);
+ void EnableCheatsChanged(bool enabled);
private:
std::unique_ptr<NetPlayClient> m_client;
diff --git a/Source/Core/DolphinQt2/Settings/GeneralPane.cpp b/Source/Core/DolphinQt2/Settings/GeneralPane.cpp
index 9e092f4668..a89ecfe65d 100644
--- a/Source/Core/DolphinQt2/Settings/GeneralPane.cpp
+++ b/Source/Core/DolphinQt2/Settings/GeneralPane.cpp
@@ -145,7 +145,7 @@ void GeneralPane::LoadConfig()
m_checkbox_enable_analytics->setChecked(SConfig::GetInstance().m_analytics_enabled);
#endif
m_checkbox_dualcore->setChecked(SConfig::GetInstance().bCPUThread);
- m_checkbox_cheats->setChecked(SConfig::GetInstance().bEnableCheats);
+ m_checkbox_cheats->setChecked(Settings::Instance().GetCheatsEnabled());
int selection = qRound(SConfig::GetInstance().m_EmulationSpeed * 10);
if (selection < m_combobox_speedlimit->count())
m_combobox_speedlimit->setCurrentIndex(selection);
@@ -177,7 +177,7 @@ void GeneralPane::OnSaveConfig()
SConfig::GetInstance().m_analytics_enabled = m_checkbox_enable_analytics->isChecked();
#endif
SConfig::GetInstance().bCPUThread = m_checkbox_dualcore->isChecked();
- SConfig::GetInstance().bEnableCheats = m_checkbox_cheats->isChecked();
+ Settings::Instance().SetCheatsEnabled(m_checkbox_cheats->isChecked());
SConfig::GetInstance().m_EmulationSpeed = m_combobox_speedlimit->currentIndex() * 0.1f;
int engine_value = 0;
if (m_radio_interpreter->isChecked())