Add per game configuration options (#6187)

* common: Move settings to common from core.

- Removes a dependency on core and input_common from common.

* code: Wrap settings values

* Port from yuzu to allow per game settings

* citra_qt: Initial per-game settings dialog

* citra_qt: Use new API for read/save of config values

* citra_qt: Per game audio settings

* citra_qt: Per game graphics settings

* citra_qt: Per game system settings

* citra_qt: Per game general settings

* citra_qt: Document and run clang format

* citra_qt: Make icon smaller and centered

* citra_qt: Remove version number

* Not sure how to extract that, can always add it back later

* citra_qt: Wrap UISettings

* citra_qt: Fix unthottled fps setting

* citra_qt: Remove margin in emulation tab

* citra_qt: Implement some suggestions

* Bring back speed switch hotkey

* Allow configuration when game is running

* Rename/adjust UI stuff

* citra_qt: Fix build with separate windows

* citra_qt: Address feedback

* citra_qt: Log per-game settings before launching games

* citra_qt: Add shader cache options

* Also fix android build

* citra_qt: Add DLC menu option

* citra_qt: Run clang-format

* citra_qt: Adjust for time offset

* citra_qt: Implement suggestions

* Run clang-format

Co-authored-by: bunnei <bunneidev@gmail.com>
This commit is contained in:
GPUCode 2022-12-08 13:27:25 +02:00 committed by GitHub
parent f261daf2fa
commit 48ee112ceb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
92 changed files with 3171 additions and 1546 deletions

View file

@ -160,17 +160,19 @@ public:
setData(qulonglong(program_id), ProgramIdRole);
setData(qulonglong(extdata_id), ExtdataIdRole);
if (UISettings::values.game_list_icon_size == UISettings::GameListIconSize::NoIcon) {
if (UISettings::values.game_list_icon_size.GetValue() ==
UISettings::GameListIconSize::NoIcon) {
// Do not display icons
setData(QPixmap(), Qt::DecorationRole);
}
bool large =
UISettings::values.game_list_icon_size == UISettings::GameListIconSize::LargeIcon;
bool large = UISettings::values.game_list_icon_size.GetValue() ==
UISettings::GameListIconSize::LargeIcon;
if (!Loader::IsValidSMDH(smdh_data)) {
// SMDH is not valid, set a default icon
if (UISettings::values.game_list_icon_size != UISettings::GameListIconSize::NoIcon)
if (UISettings::values.game_list_icon_size.GetValue() !=
UISettings::GameListIconSize::NoIcon)
setData(GetDefaultIcon(large), Qt::DecorationRole);
return;
}
@ -179,7 +181,8 @@ public:
memcpy(&smdh, smdh_data.data(), sizeof(Loader::SMDH));
// Get icon from SMDH
if (UISettings::values.game_list_icon_size != UISettings::GameListIconSize::NoIcon) {
if (UISettings::values.game_list_icon_size.GetValue() !=
UISettings::GameListIconSize::NoIcon) {
setData(GetQPixmapFromSMDH(smdh, large), Qt::DecorationRole);
}
@ -211,16 +214,17 @@ public:
QString::fromStdString(fmt::format("{:016X}", data(ProgramIdRole).toULongLong()))},
};
const QString& row1 = display_texts.at(UISettings::values.game_list_row_1).simplified();
const QString& row1 =
display_texts.at(UISettings::values.game_list_row_1.GetValue()).simplified();
if (role == SortRole)
return row1.toLower();
QString row2;
auto row_2_id = UISettings::values.game_list_row_2;
const auto row_2_id = UISettings::values.game_list_row_2.GetValue();
if (row_2_id != UISettings::GameListText::NoText) {
if (!row1.isEmpty()) {
row2 = UISettings::values.game_list_single_line_mode
row2 = UISettings::values.game_list_single_line_mode.GetValue()
? QStringLiteral(" ")
: QStringLiteral("\n ");
}
@ -355,7 +359,7 @@ public:
UISettings::GameDir* game_dir = &directory;
setData(QVariant(UISettings::values.game_dirs.indexOf(directory)), GameDirRole);
const int icon_size = IconSizes.at(UISettings::values.game_list_icon_size);
const int icon_size = IconSizes.at(UISettings::values.game_list_icon_size.GetValue());
switch (dir_type) {
case GameListItemType::InstalledDir:
setData(QIcon::fromTheme(QStringLiteral("sd_card")).pixmap(icon_size),
@ -398,7 +402,7 @@ public:
explicit GameListAddDir() {
setData(type(), TypeRole);
int icon_size = IconSizes.at(UISettings::values.game_list_icon_size);
int icon_size = IconSizes.at(UISettings::values.game_list_icon_size.GetValue());
setData(QIcon::fromTheme(QStringLiteral("plus")).pixmap(icon_size), Qt::DecorationRole);
setData(QObject::tr("Add New Game Directory"), Qt::DisplayRole);
}