2026-10-11 22:32:13 +03:00
|
|
|
|
# SeasonalBuildsDialog.qml
|
2026-09-03 09:16:56 +03:00
|
|
|
|
|
2026-10-11 22:32:13 +03:00
|
|
|
|
Каталог сезонных сборок с сервера лаунчера. Таблица показывает всё, что нужно, чтобы решить,
|
|
|
|
|
|
ставить сборку или нет. Остальное делает одна кнопка: создаёт запись сборки, ставит версию игры,
|
|
|
|
|
|
модлоадер и Java и раскладывает файлы. Как это устроено, описано в
|
|
|
|
|
|
[LauncherBackend](../cpp/LauncherBackend.md#сезонные-сборки).
|
2026-09-03 09:16:56 +03:00
|
|
|
|
|
2026-10-11 22:32:13 +03:00
|
|
|
|
Открывается из [Main](Main.md) кнопкой в правом нижнем углу (`openCatalog()`).
|
2026-09-03 09:16:56 +03:00
|
|
|
|
|
|
|
|
|
|
## Свойства
|
|
|
|
|
|
|
2026-10-11 22:32:13 +03:00
|
|
|
|
| | |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| `backend` (required) | `LauncherBackend` |
|
|
|
|
|
|
| `selectedId` | выбранная строка, по `id` сборки |
|
|
|
|
|
|
| `columns` | описание колонок: ключ, заголовок, ширина, выравнивание |
|
2026-09-03 09:16:56 +03:00
|
|
|
|
|
2026-10-11 22:32:13 +03:00
|
|
|
|
Выбранная строка хранится по `id`, а не по индексу: список может обновиться, пока окно открыто,
|
|
|
|
|
|
и индекс начал бы указывать на другую сборку.
|
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
|
|
|
|
Колонки: название, версия, модлоадер с версией, число модов, начало и конец сезона, статус
|
|
|
|
|
|
(«не установлена», «установлена», «доступно обновление»). Ширины заданы в одном месте, `columns`,
|
|
|
|
|
|
и их используют и шапка, и строки.
|
2026-09-03 09:16:56 +03:00
|
|
|
|
|
2026-10-11 22:32:13 +03:00
|
|
|
|
Таблица собрана из `Row` с колонками фиксированной ширины, а не из `TableView`. В проекте нет ни
|
|
|
|
|
|
одной модели на `QAbstractItemModel`, строки приходят из C++ готовыми `QVariantMap`, и заводить
|
|
|
|
|
|
модель ради семи колонок не стоит.
|
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
|
|
|
|
Пустой список и ошибка сервера выглядят одинаково пусто, поэтому причина пишется прямо на месте
|
|
|
|
|
|
строк: «загрузка…», «сборок пока нет» или текст `seasonalCatalogError` красным.
|
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
|
|
|
|
- **Обновить список** — `refreshSeasonalCatalog(true)`, мимо кэша. Выключена, пока идёт загрузка.
|
|
|
|
|
|
- **Установить / Обновить** — `installSeasonalBuild(id)`. Подпись зависит от `updateAvailable`.
|
|
|
|
|
|
Выключена, пока лаунчер чем-то занят (`busy`): установка занимает и панель загрузки, и
|
|
|
|
|
|
`.minecraft` целиком.
|
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
|
|
|
|
Каталог обновляется при каждом открытии окна (`refreshSeasonalCatalog(false)`). Свежий кэш отвечает
|
|
|
|
|
|
без сети.
|
2026-09-03 09:16:56 +03:00
|
|
|
|
|
2026-10-11 22:32:13 +03:00
|
|
|
|
Пока идёт установка, окно закрывается только кнопкой. Отменить установку можно на панели загрузки
|
|
|
|
|
|
главного окна, и случайный щелчок мимо окна не должен её закрыть.
|
2026-09-03 09:16:56 +03:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
При создании этого документа использовался ИИ.
|