1 parent
fd14b54d8a
commit
0f370167db
9 files changed
+18
-134
No files matched your search
@@ -3,23 +3,11 @@ pragma ComponentBehavior: Bound
|
||||
import QtQuick
|
||||
import QtQuick.Controls 2.15
|
||||
|
||||
// Готовые сезонные сборки с сервера лаунчера: таблица со всем, что нужно
|
||||
// решить, ставить её или нет, и одна кнопка, которая делает всё остальное —
|
||||
// заводит сборку, ставит версию игры, модлоадер, Java и раскладывает файлы.
|
||||
//
|
||||
// Таблица собрана из Row фиксированных колонок, а не из TableView: в проекте
|
||||
// нет ни одной модели QAbstractItemModel, а строки приходят готовыми
|
||||
// QVariantMap — заводить ради семи колонок отдельную модель незачем.
|
||||
Dialog {
|
||||
id: seasons
|
||||
|
||||
required property var backend
|
||||
|
||||
// Выбранная строка. Хранится по id, а не по индексу: список обновляется
|
||||
// под руками, и индекс после обновления указывал бы на другую сборку.
|
||||
property string selectedId: ""
|
||||
|
||||
// Ширины колонок в одном месте: их повторяют и шапка, и делегат.
|
||||
readonly property var columns: [
|
||||
{ key: "name", title: Loc.t.common.header.name, width: 250, align: Text.AlignLeft },
|
||||
{ key: "minecraftVersion", title: Loc.t.common.header.version, width: 90, align: Text.AlignLeft },
|
||||
@@ -34,8 +22,6 @@ Dialog {
|
||||
padding: 0
|
||||
width: 960
|
||||
height: 560
|
||||
// Пока идёт установка, окно закрывается только кнопкой: случайный щелчок
|
||||
// мимо не должен спрятать единственную видимую отмену.
|
||||
closePolicy: seasons.backend.seasonalInstalling
|
||||
? Popup.NoAutoClose
|
||||
: (Popup.CloseOnEscape | Popup.CloseOnPressOutside)
|
||||
@@ -47,8 +33,6 @@ Dialog {
|
||||
border.width: 1
|
||||
}
|
||||
|
||||
// Строки приходят из C++ уже отсортированными и сведёнными с локальными
|
||||
// записями — здесь только показ.
|
||||
readonly property var entries: seasons.backend.seasonalCatalog
|
||||
|
||||
readonly property var selectedEntry: {
|
||||
@@ -79,7 +63,6 @@ Dialog {
|
||||
return String(entry[key])
|
||||
}
|
||||
|
||||
// Свежий кэш отвечает без сети, поэтому дёргаем при каждом открытии.
|
||||
onAboutToShow: seasons.backend.refreshSeasonalCatalog(false)
|
||||
|
||||
header: Item {
|
||||
@@ -101,7 +84,6 @@ Dialog {
|
||||
|
||||
contentItem: Item {
|
||||
|
||||
// ── Шапка таблицы ───────────────────────────────────────────────
|
||||
Row {
|
||||
id: tableHeader
|
||||
anchors.top: parent.top
|
||||
@@ -139,9 +121,6 @@ Dialog {
|
||||
color: "#333333"
|
||||
}
|
||||
|
||||
// ── Сообщение вместо таблицы ────────────────────────────────────
|
||||
// Пустой список и ошибка выглядят одинаково пустыми, поэтому причина
|
||||
// показывается прямо на месте строк.
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
width: parent.width - 80
|
||||
@@ -157,7 +136,6 @@ Dialog {
|
||||
: seasons.backend.seasonalCatalogError)
|
||||
}
|
||||
|
||||
// ── Строки ──────────────────────────────────────────────────────
|
||||
ListView {
|
||||
id: buildList
|
||||
anchors.top: headerLine.bottom
|
||||
@@ -243,8 +221,6 @@ Dialog {
|
||||
color: "#333333"
|
||||
}
|
||||
|
||||
// Описание и размер выбранной сборки: они длинные и в таблицу не
|
||||
// помещаются, а решение принимается по ним.
|
||||
Column {
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 18
|
||||
@@ -314,8 +290,6 @@ Dialog {
|
||||
id: installButton
|
||||
width: 150
|
||||
height: 36
|
||||
// Установка занимает и панель загрузки, и .minecraft целиком:
|
||||
// пока лаунчер занят чем угодно, вторую начинать нельзя.
|
||||
enabled: seasons.selectedEntry !== null && !seasons.backend.busy
|
||||
contentItem: Text {
|
||||
text: seasons.selectedEntry && seasons.selectedEntry.updateAvailable
|
||||
|
||||
Reference in new issue
Block a user