| 52 | } |
| 53 | |
| 54 | void BIOSSettingsWidget::populateList(QTreeWidget* list, const std::string& directory) |
| 55 | { |
| 56 | const std::string selected_bios = Host::GetBaseStringSettingValue("Filenames", "BIOS"); |
| 57 | const QString res_path = QtHost::GetResourcesBasePath(); |
| 58 | |
| 59 | QSignalBlocker blocker(list); |
| 60 | list->clear(); |
| 61 | list->setEnabled(false); |
| 62 | qApp->processEvents(QEventLoop::ExcludeUserInputEvents); |
| 63 | |
| 64 | FileSystem::FindResultsArray files; |
| 65 | FileSystem::FindFiles(directory.c_str(), "*", FILESYSTEM_FIND_FILES | FILESYSTEM_FIND_HIDDEN_FILES, &files); |
| 66 | |
| 67 | u32 bios_version, bios_region; |
| 68 | std::string bios_description, bios_zone; |
| 69 | |
| 70 | for (const FILESYSTEM_FIND_DATA& fd : files) |
| 71 | { |
| 72 | if (!IsBIOS(fd.FileName.c_str(), bios_version, bios_description, bios_region, bios_zone)) |
| 73 | continue; |
| 74 | |
| 75 | const std::string_view bios_name = Path::GetFileName(fd.FileName); |
| 76 | |
| 77 | QTreeWidgetItem* item = new QTreeWidgetItem(); |
| 78 | item->setText(0, QtUtils::StringViewToQString(bios_name)); |
| 79 | item->setText(1, QString::fromStdString(bios_description)); |
| 80 | |
| 81 | switch (bios_region) |
| 82 | { |
| 83 | case 0: // Japan |
| 84 | item->setIcon(0, QIcon(QStringLiteral("%1/icons/flags/jp.svg").arg(res_path))); |
| 85 | break; |
| 86 | |
| 87 | case 1: // USA |
| 88 | item->setIcon(0, QIcon(QStringLiteral("%1/icons/flags/us.svg").arg(res_path))); |
| 89 | break; |
| 90 | |
| 91 | case 2: // Europe |
| 92 | item->setIcon(0, QIcon(QStringLiteral("%1/icons/flags/eu.svg").arg(res_path))); |
| 93 | break; |
| 94 | |
| 95 | case 3: // Oceania |
| 96 | item->setIcon(0, QIcon(QStringLiteral("%1/icons/flags/au.svg").arg(res_path))); |
| 97 | break; |
| 98 | |
| 99 | case 4: // Asia |
| 100 | item->setIcon(0, QIcon(QStringLiteral("%1/icons/flags/hk.svg").arg(res_path))); |
| 101 | break; |
| 102 | |
| 103 | case 5: // Russia |
| 104 | item->setIcon(0, QIcon(QStringLiteral("%1/icons/flags/ru.svg").arg(res_path))); |
| 105 | break; |
| 106 | |
| 107 | case 6: // China |
| 108 | item->setIcon(0, QIcon(QStringLiteral("%1/icons/flags/cn.svg").arg(res_path))); |
| 109 | break; |
| 110 | |
| 111 | case 7: // Mexico |