Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cheat list fixes #2555

Merged
merged 2 commits into from
Sep 1, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions src/duckstation-qt/cheatmanagerdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,8 @@ void CheatManagerDialog::connectUi()
connect(m_ui.watchTable, &QTableWidget::currentItemChanged, this, &CheatManagerDialog::watchCurrentItemChanged);
connect(m_ui.scanTable, &QTableWidget::itemChanged, this, &CheatManagerDialog::scanItemChanged);
connect(m_ui.watchTable, &QTableWidget::itemChanged, this, &CheatManagerDialog::watchItemChanged);

connect(QtHostInterface::GetInstance(), &QtHostInterface::cheatEnabled, this, &CheatManagerDialog::setCheatCheckState);
}

void CheatManagerDialog::showEvent(QShowEvent* event)
Expand Down Expand Up @@ -488,19 +490,24 @@ void CheatManagerDialog::activateCheat(u32 index)
}

const bool new_enabled = !cc.enabled;
QTreeWidgetItem* item = getItemForCheatIndex(index);
if (item)
{
QSignalBlocker sb(m_ui.cheatList);
item->setCheckState(0, new_enabled ? Qt::Checked : Qt::Unchecked);
}
setCheatCheckState(index, new_enabled);

QtHostInterface::GetInstance()->executeOnEmulationThread([index, new_enabled]() {
System::GetCheatList()->SetCodeEnabled(index, new_enabled);
QtHostInterface::GetInstance()->SaveCheatList();
});
}

void CheatManagerDialog::setCheatCheckState(u32 index, bool checked)
{
QTreeWidgetItem* item = getItemForCheatIndex(index);
if (item)
{
QSignalBlocker sb(m_ui.cheatList);
item->setCheckState(0, checked ? Qt::Checked : Qt::Unchecked);
}
}

void CheatManagerDialog::newCategoryClicked()
{
QString group_name = QInputDialog::getText(this, tr("Add Group"), tr("Group Name:"));
Expand Down
1 change: 1 addition & 0 deletions src/duckstation-qt/cheatmanagerdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ private Q_SLOTS:
void cheatListItemActivated(QTreeWidgetItem* item);
void cheatListItemChanged(QTreeWidgetItem* item, int column);
void activateCheat(u32 index);
void setCheatCheckState(u32 index, bool checked);
void newCategoryClicked();
void addCodeClicked();
void editCodeClicked();
Expand Down
1 change: 1 addition & 0 deletions src/duckstation-qt/qthostinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1279,6 +1279,7 @@ void QtHostInterface::setCheatEnabled(quint32 index, bool enabled)
}

SetCheatCodeState(index, enabled, g_settings.auto_load_cheats);
emit cheatEnabled(index, enabled);
}

void QtHostInterface::applyCheat(quint32 index)
Expand Down
1 change: 1 addition & 0 deletions src/duckstation-qt/qthostinterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ public Q_SLOTS:
void inputProfileLoaded();
void mouseModeRequested(bool relative, bool hide_cursor);
void achievementsLoaded(quint32 id, const QString& game_info_string, quint32 total, quint32 points);
void cheatEnabled(quint32 index, bool enabled);

public Q_SLOTS:
void setDefaultSettings();
Expand Down
2 changes: 2 additions & 0 deletions src/frontend-common/common_host_interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3891,6 +3891,8 @@ void CommonHostInterface::SetCheatCodeState(u32 index, bool enabled, bool save_t
return;

cc.enabled = enabled;
if (!enabled)
cc.ApplyOnDisable();

if (enabled)
{
Expand Down