From b45452d43470be7fe5256b3dffbd5568ddcf5218 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Fri, 3 Oct 2025 02:48:49 +0600 Subject: [PATCH] Add ability to search for machines in machine settings (#6268) --- src/qt/languages/86box.pot | 3 + src/qt/languages/cs-CZ.po | 3 + src/qt/languages/de-DE.po | 3 + src/qt/languages/es-ES.po | 3 + src/qt/languages/fi-FI.po | 3 + src/qt/languages/fr-FR.po | 3 + src/qt/languages/hr-HR.po | 3 + src/qt/languages/it-IT.po | 3 + src/qt/languages/ja-JP.po | 3 + src/qt/languages/ko-KR.po | 3 + src/qt/languages/nb-NO.po | 3 + src/qt/languages/nl-NL.po | 3 + src/qt/languages/pl-PL.po | 3 + src/qt/languages/pt-BR.po | 3 + src/qt/languages/pt-PT.po | 3 + src/qt/languages/ru-RU.po | 3 + src/qt/languages/sk-SK.po | 3 + src/qt/languages/sl-SI.po | 3 + src/qt/languages/sv-SE.po | 3 + src/qt/languages/tr-TR.po | 3 + src/qt/languages/uk-UA.po | 3 + src/qt/languages/vi-VN.po | 3 + src/qt/languages/zh-CN.po | 3 + src/qt/languages/zh-TW.po | 3 + src/qt/qt_settingsmachine.cpp | 41 ++++++- src/qt/qt_settingsmachine.ui | 199 ++++++++++++++++++---------------- 26 files changed, 217 insertions(+), 95 deletions(-) diff --git a/src/qt/languages/86box.pot b/src/qt/languages/86box.pot index 41b84f5b0..9b6ce9399 100644 --- a/src/qt/languages/86box.pot +++ b/src/qt/languages/86box.pot @@ -2996,3 +2996,6 @@ msgstr "" msgid "Dark" msgstr "" + +msgid "Search:" +msgstr "" diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po index b1864c5c2..03103a3e3 100644 --- a/src/qt/languages/cs-CZ.po +++ b/src/qt/languages/cs-CZ.po @@ -2993,3 +2993,6 @@ msgstr "Světlé" msgid "Dark" msgstr "Tmavé" + +msgid "Search:" +msgstr "Hledat:" diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po index 4984af9fd..bdcddfe8d 100644 --- a/src/qt/languages/de-DE.po +++ b/src/qt/languages/de-DE.po @@ -2993,3 +2993,6 @@ msgstr "Licht" msgid "Dark" msgstr "Dunkel" + +msgid "Search:" +msgstr "Suche:" diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po index 5516b7b6d..2bf3f5181 100644 --- a/src/qt/languages/es-ES.po +++ b/src/qt/languages/es-ES.po @@ -2993,3 +2993,6 @@ msgstr "Luz" msgid "Dark" msgstr "Oscuro" + +msgid "Search:" +msgstr "Buscar:" diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po index 996762a2d..65a3debbb 100644 --- a/src/qt/languages/fi-FI.po +++ b/src/qt/languages/fi-FI.po @@ -2993,3 +2993,6 @@ msgstr "Vaalea" msgid "Dark" msgstr "Tumma" + +msgid "Search:" +msgstr "Haku:" diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po index 17fdcb1be..500911bf5 100644 --- a/src/qt/languages/fr-FR.po +++ b/src/qt/languages/fr-FR.po @@ -2993,3 +2993,6 @@ msgstr "Lumière" msgid "Dark" msgstr "Sombre" + +msgid "Search:" +msgstr "Recherche:" diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po index 3a2c239b2..b32a887ad 100644 --- a/src/qt/languages/hr-HR.po +++ b/src/qt/languages/hr-HR.po @@ -2993,3 +2993,6 @@ msgstr "Svjetlo" msgid "Dark" msgstr "Tamno" + +msgid "Search:" +msgstr "Pretraživanje:" diff --git a/src/qt/languages/it-IT.po b/src/qt/languages/it-IT.po index 65c4d83dd..77b57dd37 100644 --- a/src/qt/languages/it-IT.po +++ b/src/qt/languages/it-IT.po @@ -2993,3 +2993,6 @@ msgstr "Chiara" msgid "Dark" msgstr "Scura" + +msgid "Search:" +msgstr "Ricerca:" diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po index 5c1973295..5c6aa485c 100644 --- a/src/qt/languages/ja-JP.po +++ b/src/qt/languages/ja-JP.po @@ -2993,3 +2993,6 @@ msgstr "光" msgid "Dark" msgstr "暗闇" + +msgid "Search:" +msgstr "検索:" diff --git a/src/qt/languages/ko-KR.po b/src/qt/languages/ko-KR.po index caa87823a..43d3b6b10 100644 --- a/src/qt/languages/ko-KR.po +++ b/src/qt/languages/ko-KR.po @@ -2993,3 +2993,6 @@ msgstr "빛" msgid "Dark" msgstr "어둠" + +msgid "Search:" +msgstr "찾기:" diff --git a/src/qt/languages/nb-NO.po b/src/qt/languages/nb-NO.po index f883b3fac..06b7a4f25 100644 --- a/src/qt/languages/nb-NO.po +++ b/src/qt/languages/nb-NO.po @@ -2993,3 +2993,6 @@ msgstr "Lys" msgid "Dark" msgstr "Mørk" + +msgid "Search:" +msgstr "Søk:" diff --git a/src/qt/languages/nl-NL.po b/src/qt/languages/nl-NL.po index 763a9192d..50f22e2a4 100644 --- a/src/qt/languages/nl-NL.po +++ b/src/qt/languages/nl-NL.po @@ -2993,3 +2993,6 @@ msgstr "Licht" msgid "Dark" msgstr "Donker" + +msgid "Search:" +msgstr "Zoekopdracht:" diff --git a/src/qt/languages/pl-PL.po b/src/qt/languages/pl-PL.po index a46abb6ce..5bd026ca6 100644 --- a/src/qt/languages/pl-PL.po +++ b/src/qt/languages/pl-PL.po @@ -2993,3 +2993,6 @@ msgstr "Światło" msgid "Dark" msgstr "Ciemny" + +msgid "Search:" +msgstr "Szukaj:" diff --git a/src/qt/languages/pt-BR.po b/src/qt/languages/pt-BR.po index 1a49ace23..834f676e5 100644 --- a/src/qt/languages/pt-BR.po +++ b/src/qt/languages/pt-BR.po @@ -2993,3 +2993,6 @@ msgstr "Claro" msgid "Dark" msgstr "Escuro" + +msgid "Search:" +msgstr "Busca:" diff --git a/src/qt/languages/pt-PT.po b/src/qt/languages/pt-PT.po index cdbf065f6..bd5078409 100644 --- a/src/qt/languages/pt-PT.po +++ b/src/qt/languages/pt-PT.po @@ -2993,3 +2993,6 @@ msgstr "Claro" msgid "Dark" msgstr "Escuro" + +msgid "Search:" +msgstr "Pesquisa:" diff --git a/src/qt/languages/ru-RU.po b/src/qt/languages/ru-RU.po index 20a25371f..2d71499dc 100644 --- a/src/qt/languages/ru-RU.po +++ b/src/qt/languages/ru-RU.po @@ -2993,3 +2993,6 @@ msgstr "Светлая" msgid "Dark" msgstr "Тёмная" + +msgid "Search:" +msgstr "Поиск:" diff --git a/src/qt/languages/sk-SK.po b/src/qt/languages/sk-SK.po index 399bee502..436c8c674 100644 --- a/src/qt/languages/sk-SK.po +++ b/src/qt/languages/sk-SK.po @@ -2993,3 +2993,6 @@ msgstr "Svetlo" msgid "Dark" msgstr "Tmavá" + +msgid "Search:" +msgstr "Hľadať:" diff --git a/src/qt/languages/sl-SI.po b/src/qt/languages/sl-SI.po index 31cb1e303..2b70c37a4 100644 --- a/src/qt/languages/sl-SI.po +++ b/src/qt/languages/sl-SI.po @@ -2993,3 +2993,6 @@ msgstr "Svetloba" msgid "Dark" msgstr "Temno" + +msgid "Search:" +msgstr "Iskanje:" diff --git a/src/qt/languages/sv-SE.po b/src/qt/languages/sv-SE.po index 890bc18eb..ddc7493e1 100644 --- a/src/qt/languages/sv-SE.po +++ b/src/qt/languages/sv-SE.po @@ -2993,3 +2993,6 @@ msgstr "Ljus" msgid "Dark" msgstr "Mörk" + +msgid "Search:" +msgstr "Söka:" diff --git a/src/qt/languages/tr-TR.po b/src/qt/languages/tr-TR.po index 3df51363c..34d679fe0 100644 --- a/src/qt/languages/tr-TR.po +++ b/src/qt/languages/tr-TR.po @@ -2993,3 +2993,6 @@ msgstr "Işık" msgid "Dark" msgstr "Karanlık" + +msgid "Search:" +msgstr "Aramak:" diff --git a/src/qt/languages/uk-UA.po b/src/qt/languages/uk-UA.po index 5e2dc7a1e..8228b7ae4 100644 --- a/src/qt/languages/uk-UA.po +++ b/src/qt/languages/uk-UA.po @@ -2993,3 +2993,6 @@ msgstr "Світло" msgid "Dark" msgstr "Темний" + +msgid "Search:" +msgstr "Пошук:" diff --git a/src/qt/languages/vi-VN.po b/src/qt/languages/vi-VN.po index 632c43c12..6c8958bd6 100644 --- a/src/qt/languages/vi-VN.po +++ b/src/qt/languages/vi-VN.po @@ -2993,3 +2993,6 @@ msgstr "Ánh sáng" msgid "Dark" msgstr "Tối" + +msgid "Search:" +msgstr "Tìm kiếm:" diff --git a/src/qt/languages/zh-CN.po b/src/qt/languages/zh-CN.po index 7e92f9aee..557323f6c 100644 --- a/src/qt/languages/zh-CN.po +++ b/src/qt/languages/zh-CN.po @@ -2993,3 +2993,6 @@ msgstr "亮色" msgid "Dark" msgstr "暗色" + +msgid "Search:" +msgstr "搜索:" diff --git a/src/qt/languages/zh-TW.po b/src/qt/languages/zh-TW.po index fff385f34..ad570b830 100644 --- a/src/qt/languages/zh-TW.po +++ b/src/qt/languages/zh-TW.po @@ -2993,3 +2993,6 @@ msgstr "光" msgid "Dark" msgstr "黑暗" + +msgid "Search:" +msgstr "搜尋:" diff --git a/src/qt/qt_settingsmachine.cpp b/src/qt/qt_settingsmachine.cpp index e52553196..a0e37259c 100644 --- a/src/qt/qt_settingsmachine.cpp +++ b/src/qt/qt_settingsmachine.cpp @@ -22,6 +22,10 @@ #include #include #include +#include +#include +#include +#include #include @@ -57,6 +61,16 @@ SettingsMachine::SettingsMachine(QWidget *parent) break; } + auto machineListCompleter = new QCompleter(ui->lineEditSearch); + auto machineListModel = new QStandardItemModel(machineListCompleter); + machineListCompleter->setModel(machineListModel); + ui->lineEditSearch->setCompleter(machineListCompleter); + connect(ui->lineEditSearch, &QLineEdit::editingFinished, this, [this] () { ui->lineEditSearch->setText("");} ); + machineListCompleter->setCompletionMode(QCompleter::PopupCompletion); + machineListCompleter->setFilterMode(Qt::MatchContains); + machineListCompleter->setCompletionRole(Qt::DisplayRole); + machineListCompleter->setCaseSensitivity(Qt::CaseInsensitive); + auto warning_icon = QIcon(":/misc/qt/icons/warning.ico"); ui->softFloatWarningIcon->setPixmap(warning_icon.pixmap(warning_icon.actualSize(QSize(16, 16)))); ui->softFloatWarningIcon->setVisible(false); @@ -108,8 +122,13 @@ SettingsMachine::SettingsMachine(QWidget *parent) cur_j = 0; } - if (machine_available(j)) + if (machine_available(j)) { + QStandardItem* item = new QStandardItem(machines[j].name); + item->setData(machine_types[machine_get_type(j)].id); + machineListModel->appendRow(item); + cur_j++; + } j++; } while (miname != nullptr); @@ -120,6 +139,26 @@ SettingsMachine::SettingsMachine(QWidget *parent) ui->radioButtonLargerFrames->setChecked(force_10ms); ui->radioButtonSmallerFrames->setChecked(!force_10ms); + connect(machineListCompleter, QOverload::of(&QCompleter::activated), this, [this] (const QModelIndex& idx) { + ui->lineEditSearch->setText(""); + int machineIdType = idx.model()->data(idx, Qt::UserRole + 1).toInt(); + auto name = idx.model()->data(idx, Qt::DisplayRole).toString(); + for (int i = 0; i < ui->comboBoxMachineType->model()->rowCount(); i++) { + if (ui->comboBoxMachineType->model()->data(ui->comboBoxMachineType->model()->index(i, 0), Qt::UserRole).toInt() == machineIdType) { + ui->comboBoxMachineType->setCurrentIndex(i); + + for (int j = 0; j < ui->comboBoxMachine->model()->rowCount(); j++) { + if (ui->comboBoxMachine->model()->data(ui->comboBoxMachine->model()->index(j, 0), Qt::DisplayRole).toString() == name) { + ui->comboBoxMachine->setCurrentIndex(j); + break; + } + } + break; + } + } + QTimer::singleShot(0, ui->lineEditSearch, &QLineEdit::clear); + }); + #ifndef USE_DYNAREC ui->checkBoxDynamicRecompiler->setEnabled(false); ui->checkBoxDynamicRecompiler->setVisible(false); diff --git a/src/qt/qt_settingsmachine.ui b/src/qt/qt_settingsmachine.ui index 7ed70a5cf..34f0b6160 100644 --- a/src/qt/qt_settingsmachine.ui +++ b/src/qt/qt_settingsmachine.ui @@ -7,7 +7,7 @@ 0 0 458 - 459 + 492 @@ -41,73 +41,38 @@ 0 - - - - Machine type: - - - - - - - 30 - - - - + Machine: - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 30 - - - - - - - - 0 - 0 - - - - Configure - - - - - - - + CPU type: - + + + + + 0 + 0 + + + + + + + + Memory: + + + + @@ -141,7 +106,7 @@ Frequency: - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter @@ -161,28 +126,7 @@ - - - - FPU: - - - - - - - 30 - - - - - - - Wait states: - - - - + @@ -233,23 +177,89 @@ - - + + - Memory: + Machine type: - - - - - 0 - 0 - + + + + 30 + + + + 30 + + + + + + + Wait states: + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 30 + + + + + + + + 0 + 0 + + + + Configure + + + + + + + + + + FPU: + + + + + + + Search: + + + + + + @@ -302,7 +312,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -328,7 +338,7 @@ CPU frame size - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop @@ -351,7 +361,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -400,7 +410,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -415,7 +425,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -428,6 +438,7 @@ + lineEditSearch comboBoxMachineType comboBoxMachine pushButtonConfigure