diff options
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/configuration/configure_gamelist.cpp | 53 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_gamelist.h | 3 | ||||
| -rw-r--r-- | src/yuzu/game_list_p.h | 11 | 
3 files changed, 53 insertions, 14 deletions
| diff --git a/src/yuzu/configuration/configure_gamelist.cpp b/src/yuzu/configuration/configure_gamelist.cpp index daedbc33e..e43e84d39 100644 --- a/src/yuzu/configuration/configure_gamelist.cpp +++ b/src/yuzu/configuration/configure_gamelist.cpp @@ -21,10 +21,8 @@ constexpr std::array default_icon_sizes{  };  constexpr std::array row_text_names{ -    QT_TR_NOOP("Filename"), -    QT_TR_NOOP("Filetype"), -    QT_TR_NOOP("Title ID"), -    QT_TR_NOOP("Title Name"), +    QT_TR_NOOP("Filename"),   QT_TR_NOOP("Filetype"), QT_TR_NOOP("Title ID"), +    QT_TR_NOOP("Title Name"), QT_TR_NOOP("None"),  };  } // Anonymous namespace @@ -46,6 +44,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 +72,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 +104,43 @@ void ConfigureGameList::InitializeIconSizeComboBox() {  }  void ConfigureGameList::InitializeRowComboBoxes() { -    for (std::size_t i = 0; i < row_text_names.size(); ++i) { -        const QString row_text_name = QString::fromUtf8(row_text_names[i]); +    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_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()));  } diff --git a/src/yuzu/configuration/configure_gamelist.h b/src/yuzu/configuration/configure_gamelist.h index e11822919..ecd3fa174 100644 --- a/src/yuzu/configuration/configure_gamelist.h +++ b/src/yuzu/configuration/configure_gamelist.h @@ -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;  }; diff --git a/src/yuzu/game_list_p.h b/src/yuzu/game_list_p.h index 1c2b37afd..7cde72d1b 100644 --- a/src/yuzu/game_list_p.h +++ b/src/yuzu/game_list_p.h @@ -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); +            const 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); | 
