Files
BiLauncher/doc/qml/VersionPickerDialog.md
T
2026-10-11 22:32:13 +03:00

60 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# VersionPickerDialog.qml
Окно выбора версии Minecraft. Слева категории, справа список версий выбранной категории с поиском.
Раньше на этом месте был выпадающий список на тысячу версий, и найти в нём, например, бету 1.7
можно было только набрав точный номер. Категории делят каталог на части разумного размера, а поиск
работает внутри выбранной.
Используется в [BuildsDialog](BuildsDialog.md) для поля версии игры.
## Интерфейс
| | |
|---|---|
| `backend` (required) | `LauncherBackend` |
| `selectedId` | выбранная версия |
| `category` | `release`, `snapshot`, `old_beta`, `old_alpha` или `other` |
| `filterText` | строка поиска |
| `installedOnly` | показывать только скачанные |
| `openFor(versionId)` | открыть с этой версией |
| `versionChosen(versionId)` | выбор подтверждён |
Сигнал называется не `accepted`, потому что такой сигнал у `Dialog` уже есть, и переопределить его
нельзя.
## Как работает
`openFor()` сбрасывает поиск, переключается на категорию переданной версии (а не всегда на
релизы), просит бэкенд обновить каталог (`refreshVersionCatalog()`) и прокручивает список к
выбранной строке. Если версии нет в каталоге, окно открывается на релизах. По «Отмене» ничего не
меняется: результат уходит наружу только через `versionChosen`.
`versionCatalog` приходит из C++ уже отсортированным, новые сверху. `visibleEntries` только
отбирает строки по категории, флажку «только скачанные» и подстроке в поле `search`, а порядок не
меняет. В «Прочие» попадают профили модлоадеров и всё, чего нет в манифесте Mojang.
С клавиатуры: фокус сразу в поиске, стрелки вверх и вниз двигают выбор, Enter подтверждает, Esc
закрывает. Мышью выбор подтверждается двойным щелчком или кнопкой.
Если список пуст, на его месте написано почему: каталог ещё грузится, каталог не загрузился или по
запросу ничего нет.
## Удаление версии
У скачанных версий есть корзина. Версия занимает от десятков мегабайт, а это окно — единственное
место, где видно, что именно скачано.
`askRemove(versionId)` берёт `versionRemovalInfo()` и открывает подтверждение. В нём указаны
размер, профили модлоадеров, которые без этой версии не запустятся (`dependents`), и сборки,
которые на неё ссылаются (`builds`). id запоминается в окне подтверждения: к моменту ответа под
курсором может оказаться другая строка.
`performRemove(versionId)` вызывает `removeVersion()`. Если удалили выбранный профиль модлоадера,
он пропадает из каталога совсем (он был в нём только потому, что установлен), и выбор
сбрасывается.
---
При создании этого документа использовался ИИ.