# 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()`. Если удалили выбранный профиль модлоадера, он пропадает из каталога совсем (он был в нём только потому, что установлен), и выбор сбрасывается. --- При создании этого документа использовался ИИ.