java implementation and downloading
This commit is contained in:
@@ -913,10 +913,30 @@ Window {
|
||||
y: (window.height - height) / 2
|
||||
padding: 0
|
||||
|
||||
// Выбранная сборка Java живёт в свойстве, а не в поле ввода: её выбирают
|
||||
// в отдельном окне, а записывается она только по «Сохранить».
|
||||
property string javaRuntimeId: ""
|
||||
// Не привязка: javaRuntimeInfo() — обычный вызов, и сам он не
|
||||
// пересчитается, когда сборка докачается. Обновляем по событиям.
|
||||
property var javaRuntimeInfo: null
|
||||
onJavaRuntimeIdChanged: settingsDialog.refreshJavaInfo()
|
||||
|
||||
function refreshJavaInfo() {
|
||||
javaRuntimeInfo = javaRuntimeId === "" ? null
|
||||
: backend.javaRuntimeInfo(javaRuntimeId)
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: backend
|
||||
function onJavaRuntimeInstalled(runtimeId) { settingsDialog.refreshJavaInfo() }
|
||||
}
|
||||
|
||||
function load() {
|
||||
const s = backend.settings()
|
||||
stGameDir.text = s.gameDir || ""
|
||||
stJavaPath.text = s.javaPath || ""
|
||||
settingsDialog.javaRuntimeId = s.javaRuntime || ""
|
||||
settingsDialog.refreshJavaInfo()
|
||||
stMinMemory.text = String(s.minMemoryMb)
|
||||
stMaxMemory.text = String(s.maxMemoryMb)
|
||||
stJvmArgs.text = s.jvmArgs || ""
|
||||
@@ -972,6 +992,84 @@ Window {
|
||||
placeholder: "автоопределение"
|
||||
}
|
||||
|
||||
// Сборка Java из папки лаунчера. Выбрана — запуск идёт ей, а не тем,
|
||||
// что нашлось в системе; путь выше остаётся запасным вариантом.
|
||||
Column {
|
||||
x: 20
|
||||
width: parent.width - 40
|
||||
spacing: 3
|
||||
|
||||
Text {
|
||||
text: "Версия Java из папки лаунчера"
|
||||
color: "#aaaaaa"
|
||||
font.pixelSize: 11
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: 32
|
||||
radius: 6
|
||||
color: "#2a2a2a"
|
||||
border.color: javaFieldArea.containsMouse ? "#91B315" : "#444444"
|
||||
border.width: 1
|
||||
|
||||
Text {
|
||||
anchors.fill: parent
|
||||
leftPadding: 10
|
||||
rightPadding: 150
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
elide: Text.ElideRight
|
||||
color: settingsDialog.javaRuntimeId === "" ? "#666666" : "#ffffff"
|
||||
text: {
|
||||
if (settingsDialog.javaRuntimeId === "")
|
||||
return qsTr("не выбрана — искать в системе")
|
||||
const info = settingsDialog.javaRuntimeInfo
|
||||
if (!info)
|
||||
return settingsDialog.javaRuntimeId
|
||||
return info.installed ? info.label
|
||||
: qsTr("%1 — скачивается").arg(info.label)
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.right: clearJava.left
|
||||
anchors.rightMargin: 12
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: qsTr("Выбрать…")
|
||||
color: "#91B315"
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
Text {
|
||||
id: clearJava
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 12
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
visible: settingsDialog.javaRuntimeId !== ""
|
||||
text: "✕"
|
||||
color: clearJavaArea.containsMouse ? "#cc6666" : "#666666"
|
||||
font.pixelSize: 12
|
||||
|
||||
MouseArea {
|
||||
id: clearJavaArea
|
||||
anchors.fill: parent
|
||||
anchors.margins: -6
|
||||
hoverEnabled: true
|
||||
onClicked: settingsDialog.javaRuntimeId = ""
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: javaFieldArea
|
||||
anchors.fill: parent
|
||||
anchors.rightMargin: 26
|
||||
hoverEnabled: true
|
||||
onClicked: javaPicker.openFor(settingsDialog.javaRuntimeId,
|
||||
backend.requiredJavaMajor(backend.activeBuildIndex))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
x: 20
|
||||
spacing: 10
|
||||
@@ -1110,6 +1208,7 @@ Window {
|
||||
onAccepted: backend.updateSettings({
|
||||
"gameDir": stGameDir.text.trim(),
|
||||
"javaPath": stJavaPath.text.trim(),
|
||||
"javaRuntime": settingsDialog.javaRuntimeId,
|
||||
"minMemoryMb": parseInt(stMinMemory.text) || 0,
|
||||
"maxMemoryMb": parseInt(stMaxMemory.text) || 0,
|
||||
"jvmArgs": stJvmArgs.text.trim(),
|
||||
@@ -1118,4 +1217,14 @@ Window {
|
||||
"fullscreen": stFullscreen.checked
|
||||
})
|
||||
}
|
||||
|
||||
// Окно выбора Java. Живёт рядом с настройками, а не внутри: оно шире их и
|
||||
// центрируется по самому окну лаунчера.
|
||||
JavaPickerDialog {
|
||||
id: javaPicker
|
||||
backend: backend
|
||||
x: (window.width - width) / 2
|
||||
y: (window.height - height) / 2
|
||||
onRuntimeChosen: (runtimeId) => settingsDialog.javaRuntimeId = runtimeId
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user