AntiClipSettings/qml/NetworkSettingPopup.qml
2024-08-26 14:55:15 +08:00

181 lines
5.7 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import AntiClipSettings 1.0
Popup {
id: root
parent: Overlay.overlay
anchors.centerIn: Overlay.overlay
modal: true
closePolicy: Popup.CloseOnEscap | Popup.NoAutoClose
property int inputHeight: 50
background: Rectangle {
radius: 8
}
contentItem: ColumnLayout {
anchors.centerIn: parent
Label {
Layout.alignment: Qt.AlignCenter
text: "有线网络设置"
}
Row {
spacing: 10
Label {
text: "模式"
width: 100
anchors.verticalCenter: parent.verticalCenter
}
RadioButton {
id: dhcpMode
text: "DHCP"
checked: App.currentNetworkInfomation.dhcp
}
RadioButton {
id: staticMode
text: "静态IP"
checked: !App.currentNetworkInfomation.dhcp
}
}
Row {
spacing: 5
visible: staticMode.checked
Row {
width: 100
anchors.verticalCenterOffset: -10
anchors.verticalCenter: parent.verticalCenter
Label {
text: "设备IP"
}
Label {
color: "red"
text: "*"
}
}
IpTextField {
id: ipInput
height: inputHeight
width: 350
text: App.currentNetworkInfomation.ip
regularExpression: /^(22[0-3]|2[01][0-9]|1[0-9]{2}|[1-9][0-9]?|1[0-9]{2})\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/;
}
}
Row {
spacing: 5
visible: staticMode.checked
Row {
width: 100
anchors.verticalCenterOffset: -10
anchors.verticalCenter: parent.verticalCenter
Label {
text: "子网掩码"
}
Label {
color: "red"
text: "*"
}
}
IpTextField {
id: netmaskInput
width: 350
height: inputHeight
text: App.currentNetworkInfomation.netmask
}
}
Row {
spacing: 5
visible: staticMode.checked
Label {
anchors.verticalCenter: parent.verticalCenter
text: "设备网关"
anchors.verticalCenterOffset: -10
width: 100
}
IpTextField {
id: gatewayInput
width: 350
height: inputHeight
text: App.currentNetworkInfomation.gateway
regularExpression: /^(22[0-3]|2[01][0-9]|1[0-9]{2}|[1-9][0-9]?|1[0-9]{2})\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/;
canEmpty: true
}
}
Row {
spacing: 5
visible: false // staticMode.checked 暂时不用设置
Label {
anchors.verticalCenter: parent.verticalCenter
text: "DNS服务器"
anchors.verticalCenterOffset: -10
width: 100
}
IpTextField {
id: dnsInput
width: 350
height: inputHeight
text: App.currentNetworkInfomation.dns
canEmpty: true
}
}
Row {
Layout.rightMargin: 20
Layout.alignment: Qt.AlignRight
spacing: 20
Button {
text: "保存"
onClicked: {
ipInput.validate()
netmaskInput.validate()
gatewayInput.validate()
dnsInput.validate()
if (dhcpMode.checked || (staticMode.checked && ipInput.valid
&& netmaskInput.valid
&& gatewayInput.valid
&& dnsInput.valid)) {
App.updateNetworkInfomation(dhcpMode.checked,
ipInput.text,
netmaskInput.text,
gatewayInput.text,
dnsInput.text)
networkPopup.close()
}
}
}
Button {
text: "取消"
onClicked: root.close()
}
}
}
onVisibleChanged: {
if (visible) {
ipInput.reset()
netmaskInput.reset()
gatewayInput.reset()
dnsInput.reset()
dhcpMode.checked = App.currentNetworkInfomation.dhcp
staticMode.checked = !App.currentNetworkInfomation.dhcp
ipInput.text = App.currentNetworkInfomation.ip
netmaskInput.text = App.currentNetworkInfomation.netmask
gatewayInput.text = App.currentNetworkInfomation.gateway
dnsInput.text = App.currentNetworkInfomation.dns
}
}
}