diff options
| author | Léo Lam <leolino.lam@gmail.com> | 2018-01-26 13:33:15 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-01-26 13:33:15 +0100 |
| commit | 0eaf3deb1e3e904794c0be17fcb25538fb12d3da (patch) | |
| tree | 4bc37fc8369448e53092088b2421338a6182f0ec /Source/Core/DolphinQt2/Config/GeckoCodeWidget.cpp | |
| parent | 28176d011700f5cdda82b636e496b4d12f78cacf (diff) | |
| parent | ee90893bfe959611aea31a364d674e5842155822 (diff) | |
Merge pull request #6322 from spycrab/qt_gecko_input
Qt/GeckoCodeWidget: Add option to add/remove gecko codes from UI
Diffstat (limited to 'Source/Core/DolphinQt2/Config/GeckoCodeWidget.cpp')
| -rw-r--r-- | Source/Core/DolphinQt2/Config/GeckoCodeWidget.cpp | 73 |
1 files changed, 71 insertions, 2 deletions
diff --git a/Source/Core/DolphinQt2/Config/GeckoCodeWidget.cpp b/Source/Core/DolphinQt2/Config/GeckoCodeWidget.cpp index 0b04439e92..92f2c03af2 100644 --- a/Source/Core/DolphinQt2/Config/GeckoCodeWidget.cpp +++ b/Source/Core/DolphinQt2/Config/GeckoCodeWidget.cpp @@ -6,6 +6,7 @@ #include <QFontDatabase> #include <QFormLayout> +#include <QHBoxLayout> #include <QLabel> #include <QListWidget> #include <QMessageBox> @@ -17,6 +18,7 @@ #include "Common/IniFile.h" #include "Core/ConfigManager.h" #include "Core/GeckoCodeConfig.h" +#include "DolphinQt2/Config/CheatCodeEditor.h" #include "DolphinQt2/Config/CheatWarningWidget.h" #include "DolphinQt2/GameList/GameFile.h" @@ -59,9 +61,14 @@ void GeckoCodeWidget::CreateWidgets() m_code_view->setReadOnly(true); m_code_view->setFixedHeight(line_height * 10); + m_add_code = new QPushButton(tr("&Add New Code...")); + m_edit_code = new QPushButton(tr("&Edit Code...")); + m_remove_code = new QPushButton(tr("&Remove Code")); m_download_codes = new QPushButton(tr("Download Codes (WiiRD Database)")); + m_download_codes->setEnabled(!m_game_id.empty()); - m_download_codes->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + m_edit_code->setEnabled(false); + m_remove_code->setEnabled(false); auto* layout = new QVBoxLayout; @@ -85,7 +92,15 @@ void GeckoCodeWidget::CreateWidgets() layout->addLayout(info_layout); layout->addWidget(m_code_description); layout->addWidget(m_code_view); - layout->addWidget(m_download_codes, 0, Qt::AlignRight); + + QHBoxLayout* btn_layout = new QHBoxLayout; + + btn_layout->addWidget(m_add_code); + btn_layout->addWidget(m_edit_code); + btn_layout->addWidget(m_remove_code); + btn_layout->addWidget(m_download_codes); + + layout->addLayout(btn_layout); setLayout(layout); } @@ -96,6 +111,8 @@ void GeckoCodeWidget::ConnectWidgets() &GeckoCodeWidget::OnSelectionChanged); connect(m_code_list, &QListWidget::itemChanged, this, &GeckoCodeWidget::OnItemChanged); + connect(m_add_code, &QPushButton::pressed, this, &GeckoCodeWidget::AddCode); + connect(m_edit_code, &QPushButton::pressed, this, &GeckoCodeWidget::EditCode); connect(m_download_codes, &QPushButton::pressed, this, &GeckoCodeWidget::DownloadCodes); connect(m_warning, &CheatWarningWidget::OpenCheatEnableSettings, this, @@ -106,6 +123,9 @@ void GeckoCodeWidget::OnSelectionChanged() { auto items = m_code_list->selectedItems(); + m_edit_code->setEnabled(!items.empty()); + m_remove_code->setEnabled(!items.empty()); + if (items.empty()) return; @@ -136,6 +156,55 @@ void GeckoCodeWidget::OnItemChanged(QListWidgetItem* item) SaveCodes(); } +void GeckoCodeWidget::AddCode() +{ + Gecko::GeckoCode code; + code.enabled = true; + + CheatCodeEditor ed; + ed.SetGeckoCode(&code); + + if (ed.exec()) + { + m_gecko_codes.push_back(std::move(code)); + SaveCodes(); + UpdateList(); + } +} + +void GeckoCodeWidget::EditCode() +{ + const auto* item = m_code_list->currentItem(); + + if (item == nullptr) + return; + + int row = m_code_list->row(item); + + CheatCodeEditor ed; + + ed.SetGeckoCode(&m_gecko_codes[row]); + + if (ed.exec()) + { + SaveCodes(); + UpdateList(); + } +} + +void GeckoCodeWidget::RemoveCode() +{ + const auto* item = m_code_list->currentItem(); + + if (item == nullptr) + return; + + m_gecko_codes.erase(m_gecko_codes.begin() + m_code_list->row(item)); + + UpdateList(); + SaveCodes(); +} + void GeckoCodeWidget::SaveCodes() { IniFile game_ini_local; |
