3.2 KiB
JavaPickerDialog.qml
Окно выбора сборки Java. Устроено как VersionPickerDialog: слева виды, справа список с поиском. Отличие в том, что выбранная здесь сборка сразу и скачивается. Версии игры качает сборка, а Java, которой нет на диске, игре ничем не поможет.
Открывается из диалога настроек в Main.
Интерфейс
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.
При создании этого документа использовался ИИ.