FreeKill/qml/Pages/LobbyElement/EditProfile.qml

185 lines
3.7 KiB
QML

// SPDX-License-Identifier: GPL-3.0-or-later
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Dialogs
Item {
id: root
signal finished()
ColumnLayout {
anchors.centerIn: parent
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: Backend.translate("Username")
}
Text {
text: Self.screenName
font.pixelSize: 18
}
}
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: Backend.translate("Avatar")
}
TextField {
id: avatarName
font.pixelSize: 18
text: Self.avatar
}
Button {
text: Backend.translate("Update Avatar")
enabled: avatarName.text !== ""
onClicked: {
mainWindow.busy = true;
ClientInstance.notifyServer(
"UpdateAvatar",
JSON.stringify([avatarName.text])
);
}
}
}
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: Backend.translate("Old Password")
}
TextField {
id: oldPassword
echoMode: TextInput.Password
passwordCharacter: "*"
}
}
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: Backend.translate("New Password")
}
TextField {
id: newPassword
echoMode: TextInput.Password
passwordCharacter: "*"
}
Button {
text: Backend.translate("Update Password")
enabled: oldPassword.text !== "" && newPassword.text !== ""
onClicked: {
mainWindow.busy = true;
ClientInstance.notifyServer(
"UpdatePassword",
JSON.stringify([oldPassword.text, newPassword.text])
);
}
}
}
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: Backend.translate("Lobby BG")
}
TextField {
text: config.lobbyBg
}
Button {
text: "..."
onClicked: {
fdialog.nameFilters = ["Image Files (*.jpg *.png)"];
fdialog.configKey = "lobbyBg";
fdialog.open();
}
}
}
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: Backend.translate("Room BG")
}
TextField {
text: config.roomBg
}
Button {
text: "..."
onClicked: {
fdialog.nameFilters = ["Image Files (*.jpg *.png)"];
fdialog.configKey = "roomBg";
fdialog.open();
}
}
}
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: Backend.translate("Game BGM")
}
TextField {
text: config.bgmFile
}
Button {
text: "..."
onClicked: {
fdialog.nameFilters = ["Music Files (*.mp3)"];
fdialog.configKey = "bgmFile";
fdialog.open();
}
}
}
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: Backend.translate("Poster Girl")
}
TextField {
text: config.ladyImg
}
Button {
text: "..."
onClicked: {
fdialog.nameFilters = ["Image Files (*.jpg *.png)"];
fdialog.configKey = "ladyImg";
fdialog.open();
}
}
}
RowLayout {
anchors.rightMargin: 8
spacing: 16
Text {
text: "Language"
}
ComboBox {
model: ["zh_CN", "en_US"]
currentIndex: model.indexOf(config.language)
onCurrentTextChanged: { config.language = currentText; }
}
}
}
FileDialog {
id: fdialog
property string configKey
onAccepted: { config[configKey] = selectedFile; }
}
}