citra_qt: Add single line mode for game list

This single line mode is aimed at restoring the intended behavior with Small or None icons. Line breaks will be replaced with commas (Region row) or spaces (Name row). One can toggle this option in UI configuration.
This commit is contained in:
zhupengfei 2019-08-20 20:03:15 +08:00
parent b078122167
commit 4144f4480d
No known key found for this signature in database
GPG key ID: DD129E108BD09378
5 changed files with 21 additions and 2 deletions

View file

@ -319,6 +319,7 @@ void Config::ReadValues() {
UISettings::values.game_list_row_2 = UISettings::GameListText{row_2};
UISettings::values.game_list_hide_no_icon = ReadSetting("hideNoIcon", false).toBool();
UISettings::values.game_list_single_line_mode = ReadSetting("singleLineMode", false).toBool();
qt_config->endGroup();
qt_config->beginGroup("Paths");
@ -589,6 +590,7 @@ void Config::SaveValues() {
WriteSetting("row1", static_cast<int>(UISettings::values.game_list_row_1), 2);
WriteSetting("row2", static_cast<int>(UISettings::values.game_list_row_2), 0);
WriteSetting("hideNoIcon", UISettings::values.game_list_hide_no_icon, false);
WriteSetting("singleLineMode", UISettings::values.game_list_single_line_mode, false);
qt_config->endGroup();
qt_config->beginGroup("Paths");

View file

@ -47,6 +47,7 @@ void ConfigureUi::SetConfiguration() {
ui->row_2_text_combobox->setCurrentIndex(static_cast<int>(UISettings::values.game_list_row_2) +
1);
ui->toggle_hide_no_icon->setChecked(UISettings::values.game_list_hide_no_icon);
ui->toggle_single_line_mode->setChecked(UISettings::values.game_list_single_line_mode);
}
void ConfigureUi::ApplyConfiguration() {
@ -59,6 +60,7 @@ void ConfigureUi::ApplyConfiguration() {
UISettings::values.game_list_row_2 =
static_cast<UISettings::GameListText>(ui->row_2_text_combobox->currentIndex() - 1);
UISettings::values.game_list_hide_no_icon = ui->toggle_hide_no_icon->isChecked();
UISettings::values.game_list_single_line_mode = ui->toggle_single_line_mode->isChecked();
}
void ConfigureUi::OnLanguageChanged(int index) {

View file

@ -185,6 +185,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="toggle_single_line_mode">
<property name="text">
<string>Single Line Mode</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>

View file

@ -104,9 +104,11 @@ static QString GetRegionFromSMDH(const Loader::SMDH& smdh) {
return QObject::tr("All regions");
}
const QString separator =
UISettings::values.game_list_single_line_mode ? QStringLiteral(", ") : QStringLiteral("\n");
QString result = QObject::tr(regions_map.at(regions.front()));
for (auto region = ++regions.begin(); region != regions.end(); ++region) {
result += QStringLiteral("\n") + QObject::tr(regions_map.at(*region));
result += separator + QObject::tr(regions_map.at(*region));
}
return result;
}
@ -200,7 +202,12 @@ public:
QString row2;
auto row_2_id = UISettings::values.game_list_row_2;
if (row_2_id != UISettings::GameListText::NoText) {
row2 = (row1.isEmpty() ? "" : "\n ") + display_texts.at(row_2_id);
if (!row1.isEmpty()) {
row2 = UISettings::values.game_list_single_line_mode
? QStringLiteral(" ")
: QStringLiteral("\n ");
}
row2 += display_texts.at(row_2_id);
}
return QString(row1 + row2);
} else {

View file

@ -85,6 +85,7 @@ struct Values {
GameListText game_list_row_1;
GameListText game_list_row_2;
bool game_list_hide_no_icon;
bool game_list_single_line_mode;
u16 screenshot_resolution_factor;