Merge pull request #4896 from zhaowenlan1779/game-list-fix-3

citra_qt: Misc game list updates/fixes
This commit is contained in:
James Rowe 2019-09-09 20:04:04 -06:00 committed by GitHub
commit d6f2bc8c04
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 27 additions and 9 deletions

View file

@ -319,6 +319,7 @@ void Config::ReadValues() {
UISettings::values.game_list_row_2 = UISettings::GameListText{row_2}; 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_hide_no_icon = ReadSetting("hideNoIcon", false).toBool();
UISettings::values.game_list_single_line_mode = ReadSetting("singleLineMode", false).toBool();
qt_config->endGroup(); qt_config->endGroup();
qt_config->beginGroup("Paths"); qt_config->beginGroup("Paths");
@ -589,6 +590,7 @@ void Config::SaveValues() {
WriteSetting("row1", static_cast<int>(UISettings::values.game_list_row_1), 2); 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("row2", static_cast<int>(UISettings::values.game_list_row_2), 0);
WriteSetting("hideNoIcon", UISettings::values.game_list_hide_no_icon, false); 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->endGroup();
qt_config->beginGroup("Paths"); 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) + ui->row_2_text_combobox->setCurrentIndex(static_cast<int>(UISettings::values.game_list_row_2) +
1); 1);
ui->toggle_hide_no_icon->setChecked(UISettings::values.game_list_hide_no_icon); 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() { void ConfigureUi::ApplyConfiguration() {
@ -59,6 +60,7 @@ void ConfigureUi::ApplyConfiguration() {
UISettings::values.game_list_row_2 = UISettings::values.game_list_row_2 =
static_cast<UISettings::GameListText>(ui->row_2_text_combobox->currentIndex() - 1); 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_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) { void ConfigureUi::OnLanguageChanged(int index) {

View file

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

View file

@ -285,7 +285,6 @@ GameList::GameList(GMainWindow* parent) : QWidget{parent} {
tree_view->setHorizontalScrollMode(QHeaderView::ScrollPerPixel); tree_view->setHorizontalScrollMode(QHeaderView::ScrollPerPixel);
tree_view->setSortingEnabled(true); tree_view->setSortingEnabled(true);
tree_view->setEditTriggers(QHeaderView::NoEditTriggers); tree_view->setEditTriggers(QHeaderView::NoEditTriggers);
tree_view->setUniformRowHeights(true);
tree_view->setContextMenuPolicy(Qt::CustomContextMenu); tree_view->setContextMenuPolicy(Qt::CustomContextMenu);
tree_view->setStyleSheet("QTreeView{ border: none; }"); tree_view->setStyleSheet("QTreeView{ border: none; }");

View file

@ -4,6 +4,7 @@
#pragma once #pragma once
#include <algorithm>
#include <map> #include <map>
#include <unordered_map> #include <unordered_map>
#include <utility> #include <utility>
@ -91,13 +92,19 @@ static QString GetRegionFromSMDH(const Loader::SMDH& smdh) {
return QObject::tr("Invalid region"); return QObject::tr("Invalid region");
} }
if (std::find(regions.begin(), regions.end(), GameRegion::RegionFree) != regions.end()) { const bool region_free =
std::all_of(regions_map.begin(), regions_map.end(), [&regions](const auto& it) {
return std::find(regions.begin(), regions.end(), it.first) != regions.end();
});
if (region_free) {
return QObject::tr("Region free"); return QObject::tr("Region free");
} }
const QString separator =
UISettings::values.game_list_single_line_mode ? QStringLiteral(", ") : QStringLiteral("\n");
QString result = QObject::tr(regions_map.at(regions.front())); QString result = QObject::tr(regions_map.at(regions.front()));
for (auto region = ++regions.begin(); region != regions.end(); ++region) { 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; return result;
} }
@ -191,7 +198,12 @@ public:
QString row2; QString row2;
auto row_2_id = UISettings::values.game_list_row_2; auto row_2_id = UISettings::values.game_list_row_2;
if (row_2_id != UISettings::GameListText::NoText) { 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); return QString(row1 + row2);
} else { } else {

View file

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

View file

@ -49,10 +49,6 @@ std::array<u16, 0x40> SMDH::GetShortTitle(Loader::SMDH::TitleLanguage language)
} }
std::vector<SMDH::GameRegion> SMDH::GetRegions() const { std::vector<SMDH::GameRegion> SMDH::GetRegions() const {
if (region_lockout == 0x7fffffff) {
return std::vector<GameRegion>{GameRegion::RegionFree};
}
constexpr u32 REGION_COUNT = 7; constexpr u32 REGION_COUNT = 7;
std::vector<GameRegion> result; std::vector<GameRegion> result;
for (u32 region = 0; region < REGION_COUNT; ++region) { for (u32 region = 0; region < REGION_COUNT; ++region) {

View file

@ -70,7 +70,6 @@ struct SMDH {
China = 4, China = 4,
Korea = 5, Korea = 5,
Taiwan = 6, Taiwan = 6,
RegionFree = 7,
}; };
/** /**