mirror of https://github.com/PCSX2/pcsx2.git
CheatsSettings/PatchSettings: Add toggle for showing All CRCs
This used to be off by default, but was changed to show found patches/cheats for all CRCs for a game serial. However, this also clutters and shows cheats for CRCs that may not be applicable without a way to hide them. This puts this setting behind a toggle to choose if this should be enabled/disabled so the user has choice. Still defaults to enabled to keep current behavior.
This commit is contained in:
parent
44e2837efb
commit
6b12ca5b39
|
@ -23,6 +23,7 @@ GameCheatSettingsWidget::GameCheatSettingsWidget(SettingsWindow* dialog, QWidget
|
|||
|
||||
SettingsInterface* sif = m_dialog->getSettingsInterface();
|
||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.enableCheats, "EmuCore", "EnableCheats", false);
|
||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.allCRCsCheckbox, "EmuCore", "ShowCheatsForAllCRCs", false);
|
||||
updateListEnabled();
|
||||
|
||||
connect(m_ui.enableCheats, &QCheckBox::stateChanged, this, &GameCheatSettingsWidget::updateListEnabled);
|
||||
|
@ -31,6 +32,7 @@ GameCheatSettingsWidget::GameCheatSettingsWidget(SettingsWindow* dialog, QWidget
|
|||
connect(m_ui.reloadCheats, &QPushButton::clicked, this, &GameCheatSettingsWidget::onReloadClicked);
|
||||
connect(m_ui.enableAll, &QPushButton::clicked, this, [this]() { setStateForAll(true); });
|
||||
connect(m_ui.disableAll, &QPushButton::clicked, this, [this]() { setStateForAll(false); });
|
||||
connect(m_ui.allCRCsCheckbox, &QCheckBox::stateChanged, this, &GameCheatSettingsWidget::onReloadClicked);
|
||||
}
|
||||
|
||||
GameCheatSettingsWidget::~GameCheatSettingsWidget() = default;
|
||||
|
@ -78,6 +80,7 @@ void GameCheatSettingsWidget::updateListEnabled()
|
|||
m_ui.enableAll->setEnabled(cheats_enabled);
|
||||
m_ui.disableAll->setEnabled(cheats_enabled);
|
||||
m_ui.reloadCheats->setEnabled(cheats_enabled);
|
||||
m_ui.allCRCsCheckbox->setEnabled(cheats_enabled);
|
||||
}
|
||||
|
||||
void GameCheatSettingsWidget::disableAllCheats()
|
||||
|
@ -145,7 +148,8 @@ void GameCheatSettingsWidget::setStateRecursively(QTreeWidgetItem* parent, bool
|
|||
void GameCheatSettingsWidget::reloadList()
|
||||
{
|
||||
u32 num_unlabelled_codes = 0;
|
||||
m_patches = Patch::GetPatchInfo(m_dialog->getSerial(), m_dialog->getDiscCRC(), true, &num_unlabelled_codes);
|
||||
bool showAllCRCS = m_ui.allCRCsCheckbox->isChecked();
|
||||
m_patches = Patch::GetPatchInfo(m_dialog->getSerial(), m_dialog->getDiscCRC(), true, showAllCRCS, & num_unlabelled_codes);
|
||||
m_enabled_patches =
|
||||
m_dialog->getSettingsInterface()->GetStringList(Patch::CHEATS_CONFIG_SECTION, Patch::PATCH_ENABLE_CONFIG_KEY);
|
||||
|
||||
|
|
|
@ -84,6 +84,16 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="allCRCsCheckbox">
|
||||
<property name="text">
|
||||
<string>All CRCs</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include "QtHost.h"
|
||||
#include "QtUtils.h"
|
||||
#include "Settings/GamePatchSettingsWidget.h"
|
||||
#include "SettingWidgetBinder.h"
|
||||
#include "Settings/SettingsWindow.h"
|
||||
|
||||
#include "pcsx2/GameList.h"
|
||||
|
@ -57,6 +58,9 @@ GamePatchSettingsWidget::GamePatchSettingsWidget(SettingsWindow* dialog, QWidget
|
|||
setUnlabeledPatchesWarningVisibility(false);
|
||||
|
||||
connect(m_ui.reload, &QPushButton::clicked, this, &GamePatchSettingsWidget::onReloadClicked);
|
||||
connect(m_ui.allCRCsCheckbox, &QCheckBox::stateChanged, this, &GamePatchSettingsWidget::onReloadClicked);
|
||||
SettingsInterface* sif = m_dialog->getSettingsInterface();
|
||||
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.allCRCsCheckbox, "EmuCore", "ShowPatchesForAllCRCs", false);
|
||||
|
||||
reloadList();
|
||||
}
|
||||
|
@ -82,7 +86,8 @@ void GamePatchSettingsWidget::reloadList()
|
|||
{
|
||||
// Patches shouldn't have any unlabelled patch groups, because they're new.
|
||||
u32 number_of_unlabeled_patches = 0;
|
||||
std::vector<Patch::PatchInfo> patches = Patch::GetPatchInfo(m_dialog->getSerial(), m_dialog->getDiscCRC(), false, &number_of_unlabeled_patches);
|
||||
bool showAllCRCS = m_ui.allCRCsCheckbox->isChecked();
|
||||
std::vector<Patch::PatchInfo> patches = Patch::GetPatchInfo(m_dialog->getSerial(), m_dialog->getDiscCRC(), false, showAllCRCS, &number_of_unlabeled_patches);
|
||||
std::vector<std::string> enabled_list =
|
||||
m_dialog->getSettingsInterface()->GetStringList(Patch::PATCHES_CONFIG_SECTION, Patch::PATCH_ENABLE_CONFIG_KEY);
|
||||
|
||||
|
|
|
@ -52,6 +52,19 @@
|
|||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="allCRCsCheckbox">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>All CRCs</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
|
|
|
@ -2414,9 +2414,9 @@ void FullscreenUI::PopulatePatchesAndCheatsList(const std::string_view& serial,
|
|||
std::sort(list.begin(), list.end(), [](const Patch::PatchInfo& lhs, const Patch::PatchInfo& rhs) { return lhs.name < rhs.name; });
|
||||
};
|
||||
|
||||
s_game_patch_list = Patch::GetPatchInfo(serial, crc, false, nullptr);
|
||||
s_game_patch_list = Patch::GetPatchInfo(serial, crc, false, true, nullptr);
|
||||
sort_patches(s_game_patch_list);
|
||||
s_game_cheats_list = Patch::GetPatchInfo(serial, crc, true, &s_game_cheat_unlabelled_count);
|
||||
s_game_cheats_list = Patch::GetPatchInfo(serial, crc, true, true, &s_game_cheat_unlabelled_count);
|
||||
sort_patches(s_game_cheats_list);
|
||||
|
||||
pxAssert(s_game_settings_interface);
|
||||
|
|
|
@ -518,14 +518,14 @@ std::string_view Patch::PatchInfo::GetNameParentPart() const
|
|||
return ret;
|
||||
}
|
||||
|
||||
Patch::PatchInfoList Patch::GetPatchInfo(const std::string_view& serial, u32 crc, bool cheats, u32* num_unlabelled_patches)
|
||||
Patch::PatchInfoList Patch::GetPatchInfo(const std::string_view& serial, u32 crc, bool cheats, bool showAllCRCS, u32* num_unlabelled_patches)
|
||||
{
|
||||
PatchInfoList ret;
|
||||
|
||||
if (num_unlabelled_patches)
|
||||
*num_unlabelled_patches = 0;
|
||||
|
||||
EnumeratePnachFiles(serial, crc, cheats, true,
|
||||
EnumeratePnachFiles(serial, crc, cheats, showAllCRCS,
|
||||
[&ret, num_unlabelled_patches](const std::string& filename, const std::string& pnach_data) {
|
||||
ExtractPatchInfo(&ret, pnach_data, num_unlabelled_patches);
|
||||
});
|
||||
|
|
|
@ -81,7 +81,7 @@ namespace Patch
|
|||
extern const char* CHEATS_CONFIG_SECTION;
|
||||
extern const char* PATCH_ENABLE_CONFIG_KEY;
|
||||
|
||||
extern PatchInfoList GetPatchInfo(const std::string_view& serial, u32 crc, bool cheats, u32* num_unlabelled_patches);
|
||||
extern PatchInfoList GetPatchInfo(const std::string_view& serial, u32 crc, bool cheats, bool showAllCRCS, u32* num_unlabelled_patches);
|
||||
|
||||
/// Returns the path to a new cheat/patch pnach for the specified serial and CRC.
|
||||
extern std::string GetPnachFilename(const std::string_view& serial, u32 crc, bool cheats);
|
||||
|
|
Loading…
Reference in New Issue