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

50 lines
3.2 KiB
Markdown

# JavaPickerDialog.qml
Окно выбора сборки Java. Устроено как [VersionPickerDialog](VersionPickerDialog.md): слева виды,
справа список с поиском. Отличие в том, что выбранная здесь сборка сразу и скачивается. Версии игры
качает сборка, а Java, которой нет на диске, игре ничем не поможет.
Открывается из диалога настроек в [Main](Main.md).
## Интерфейс
| | |
|---|---|
| `backend` (required) | `LauncherBackend` |
| `selectedId` | выбранная сборка |
| `category` | `java` (Mojang), `jdk`, `jre` (Temurin) |
| `filterText`, `installedOnly` | поиск и «только скачанные» |
| `requiredMajor` | минимальная Java для версии игры активной сборки; 0 — версия не выбрана |
| `openFor(runtimeId, requiredMajor)` | открыть |
| `runtimeChosen(runtimeId)` | выбор подтверждён |
## Как работает
`openFor()` сбрасывает поиск, открывает категорию переданной сборки и просит бэкенд обновить
каталог Java. По «Отмене» ничего не меняется.
Под категориями слева написано, какая Java нужна выбранной версии игры, чтобы не держать это в
голове.
`javaCatalog` приходит из C++ уже отсортированным: скачанное первым, потом новые версии сверху.
Окно только отбирает строки.
В строке: версия, пометка LTS, какие версии игры она потянет (`coverage`), размер и галочка у
скачанных. Сборка ниже `requiredMajor` не прячется, а помечается красноватым и подписью «слишком
старая для этой версии». Она может понадобиться другой сборке.
Кнопка внизу называется «Скачать», если выбранной сборки нет на диске, и «Выбрать», если есть.
`acceptSelection()` испускает `runtimeChosen` и, если сборки нет на диске, вызывает
`installJavaRuntime()`. Ход загрузки показывает панель главного окна.
## Удаление
У скачанных сборок есть корзина, и удаление происходит **без подтверждения**:
`removeJavaRuntime()` вызывается сразу. Сборка весит около двухсот мегабайт, и без корзины здесь
папка лаунчера росла бы незаметно для пользователя. Если удалили сборку, выбранную в настройках,
бэкенд очистит `javaRuntime`.
---
При создании этого документа использовался ИИ.