Files

59 lines
4.0 KiB
Markdown
Raw Permalink Normal View History

2026-10-11 22:32:13 +03:00
# VersionPickerDialog.qml
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Окно выбора версии Minecraft. Слева категории, справа список версий выбранной категории с поиском.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Раньше на этом месте был выпадающий список на тысячу версий, и найти в нём, например, бету 1.7
можно было только набрав точный номер. Категории делят каталог на части разумного размера, а поиск
работает внутри выбранной.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Используется в [BuildsDialog](BuildsDialog.md) для поля версии игры.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
## Интерфейс
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
| | |
|---|---|
| `backend` (required) | `LauncherBackend` |
| `selectedId` | выбранная версия |
| `category` | `release`, `snapshot`, `old_beta`, `old_alpha` или `other` |
| `filterText` | строка поиска |
| `installedOnly` | показывать только скачанные |
| `openFor(versionId)` | открыть с этой версией |
| `versionChosen(versionId)` | выбор подтверждён |
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Сигнал называется не `accepted`, потому что такой сигнал у `Dialog` уже есть, и переопределить его
нельзя.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
## Как работает
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
`openFor()` сбрасывает поиск, переключается на категорию переданной версии (а не всегда на
релизы), просит бэкенд обновить каталог (`refreshVersionCatalog()`) и прокручивает список к
выбранной строке. Если версии нет в каталоге, окно открывается на релизах. По «Отмене» ничего не
меняется: результат уходит наружу только через `versionChosen`.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
`versionCatalog` приходит из C++ уже отсортированным, новые сверху. `visibleEntries` только
отбирает строки по категории, флажку «только скачанные» и подстроке в поле `search`, а порядок не
меняет. В «Прочие» попадают профили модлоадеров и всё, чего нет в манифесте Mojang.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
С клавиатуры: фокус сразу в поиске, стрелки вверх и вниз двигают выбор, Enter подтверждает, Esc
закрывает. Мышью выбор подтверждается двойным щелчком или кнопкой.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
Если список пуст, на его месте написано почему: каталог ещё грузится, каталог не загрузился или по
запросу ничего нет.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
## Удаление версии
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
У скачанных версий есть корзина. Версия занимает от десятков мегабайт, а это окно — единственное
место, где видно, что именно скачано.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
`askRemove(versionId)` берёт `versionRemovalInfo()` и открывает подтверждение. В нём указаны
размер, профили модлоадеров, которые без этой версии не запустятся (`dependents`), и сборки,
которые на неё ссылаются (`builds`). id запоминается в окне подтверждения: к моменту ответа под
курсором может оказаться другая строка.
2026-09-03 09:16:56 +03:00
2026-10-11 22:32:13 +03:00
`performRemove(versionId)` вызывает `removeVersion()`. Если удалили выбранный профиль модлоадера,
он пропадает из каталога совсем (он был в нём только потому, что установлен), и выбор
сбрасывается.
2026-09-03 09:16:56 +03:00
---
При создании этого документа использовался ИИ.