GUI/gamelist: add "None" as an option for second row and remove duplicated row options

This commit is contained in:
Bartosz Kaszubowski
2020-01-16 15:34:29 +01:00
parent 64cd46579b
commit 787993c7dc
3 changed files with 50 additions and 10 deletions

View File

@@ -25,6 +25,7 @@ constexpr std::array row_text_names{
QT_TR_NOOP("Filetype"),
QT_TR_NOOP("Title ID"),
QT_TR_NOOP("Title Name"),
QT_TR_NOOP("None"),
};
} // Anonymous namespace
@@ -46,6 +47,12 @@ ConfigureGameList::ConfigureGameList(QWidget* parent)
&ConfigureGameList::RequestGameListUpdate);
connect(ui->row_2_text_combobox, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
&ConfigureGameList::RequestGameListUpdate);
// Update text ComboBoxes after user interaction.
connect(ui->row_1_text_combobox, QOverload<int>::of(&QComboBox::activated),
[=]() { ConfigureGameList::UpdateSecondRowComboBox(); });
connect(ui->row_2_text_combobox, QOverload<int>::of(&QComboBox::activated),
[=]() { ConfigureGameList::UpdateFirstRowComboBox(); });
}
ConfigureGameList::~ConfigureGameList() = default;
@@ -68,10 +75,6 @@ void ConfigureGameList::SetConfiguration() {
ui->show_add_ons->setChecked(UISettings::values.show_add_ons);
ui->icon_size_combobox->setCurrentIndex(
ui->icon_size_combobox->findData(UISettings::values.icon_size));
ui->row_1_text_combobox->setCurrentIndex(
ui->row_1_text_combobox->findData(UISettings::values.row_1_text_id));
ui->row_2_text_combobox->setCurrentIndex(
ui->row_2_text_combobox->findData(UISettings::values.row_2_text_id));
}
void ConfigureGameList::changeEvent(QEvent* event) {
@@ -104,10 +107,41 @@ void ConfigureGameList::InitializeIconSizeComboBox() {
}
void ConfigureGameList::InitializeRowComboBoxes() {
UpdateFirstRowComboBox(true);
UpdateSecondRowComboBox(true);
}
void ConfigureGameList::UpdateFirstRowComboBox(bool init) {
const int currentIndex = init ? UISettings::values.row_1_text_id :
ui->row_1_text_combobox->findData(ui->row_1_text_combobox->currentData());
ui->row_1_text_combobox->clear();
for (std::size_t i = 0; i < row_text_names.size(); i++) {
const QString row_text_name = QString::fromUtf8(row_text_names[i]);
ui->row_1_text_combobox->addItem(row_text_name, QVariant::fromValue(i));
}
ui->row_1_text_combobox->setCurrentIndex(ui->row_1_text_combobox->findData(currentIndex));
ui->row_1_text_combobox->removeItem(4); // None
ui->row_1_text_combobox->removeItem(
ui->row_1_text_combobox->findData(ui->row_2_text_combobox->currentData()));
}
void ConfigureGameList::UpdateSecondRowComboBox(bool init) {
const int currentIndex = init ? UISettings::values.row_2_text_id :
ui->row_2_text_combobox->findData(ui->row_2_text_combobox->currentData());
ui->row_2_text_combobox->clear();
for (std::size_t i = 0; i < row_text_names.size(); ++i) {
const QString row_text_name = QString::fromUtf8(row_text_names[i]);
ui->row_1_text_combobox->addItem(row_text_name, QVariant::fromValue(i));
ui->row_2_text_combobox->addItem(row_text_name, QVariant::fromValue(i));
}
ui->row_2_text_combobox->setCurrentIndex(ui->row_2_text_combobox->findData(currentIndex));
ui->row_2_text_combobox->removeItem(
ui->row_2_text_combobox->findData(ui->row_1_text_combobox->currentData()));
}

View File

@@ -31,5 +31,8 @@ private:
void InitializeIconSizeComboBox();
void InitializeRowComboBoxes();
void UpdateFirstRowComboBox(bool init = false);
void UpdateSecondRowComboBox(bool init = false);
std::unique_ptr<Ui::ConfigureGameList> ui;
};

View File

@@ -108,11 +108,14 @@ public:
}};
const auto& row1 = row_data.at(UISettings::values.row_1_text_id);
const auto& row2 = row_data.at(UISettings::values.row_2_text_id);
int row2_id = UISettings::values.row_2_text_id;
if (row1.isEmpty() || row1 == row2)
return row2;
if (row2.isEmpty())
if (row2_id == 4) // None
return row1;
const auto& row2 = row_data.at(row2_id);
if (row1 == row2)
return row1;
return QString(row1 + QStringLiteral("\n ") + row2);