proto-debuger/protoDebuger/NetSelect.qml

252 lines
8.7 KiB
QML

import QtQuick 2.0
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.0
import QtQml 2.3
Item {
id: element
width: 800
height: 600
visible: true
ColorAnimation {
from: "white"
to: "black"
duration: 200
}
Rectangle{
color: "#aeaeae"
anchors.rightMargin: 0
anchors.bottomMargin: 0
anchors.topMargin: 0
anchors.fill: parent
scale: 1
transformOrigin: Item.Center
Column {
anchors.fill: parent
spacing: 6
width: parent.width
height: parent.height
RowLayout {
spacing: 5
Row{
Layout.topMargin: 20
Layout.leftMargin: 20
Label {
id: label6
Layout.leftMargin: 20
text: qsTr("打开端口: ")
Layout.preferredHeight: 40
renderType: Text.QtRendering
Layout.preferredWidth: 125
wrapMode: Text.NoWrap
font.pointSize: 20
}
TextEdit {
id: port
Layout.leftMargin: 20
Layout.topMargin: 20
width: 233
height: 40
text: qsTr("9001")
font.italic: false
font.bold: true
Layout.columnSpan: 2
Layout.preferredHeight: 33
Layout.preferredWidth: 233
selectionColor: "#f0f0f1"
cursorVisible: true
font.pixelSize: 20
color: "white"
textMargin: 4
}
RadioButton {
id: isServer
Layout.leftMargin: 20
width: 138
height: 41
text: qsTr("服务端")
checked: true
onClicked:{
if(isServer.checked == true){
isServer.checked = false
isServer.checkable = false
}else{
isServer.checked = true
isServer.checkable = true
}
}
}
}
}
RowLayout{
spacing: 5
Row{
Layout.topMargin: 20
Layout.leftMargin: 20
Label {
id: label7
Layout.leftMargin: 20
Layout.topMargin: 20
text: "协议选择:"
Layout.preferredHeight: 40
renderType: Text.QtRendering
Layout.preferredWidth: 125
wrapMode: Text.NoWrap
font.pointSize: 20
}
ComboBox {
id: proto_combox
Layout.leftMargin: 20
Layout.topMargin: 20
width: 143
height: 40
model:[
"udp",
"tcp"
]
}
RadioButton {
id: radioSelectWebsocket
Layout.leftMargin: 20
Layout.topMargin: 20
width: 138
height: 41
text: qsTr("websocket")
checkable: true
checked: true
onClicked:{
if(radioSelectWebsocket.checked == true){
radioSelectWebsocket.checked = false
radioSelectWebsocket.checkable = false
}else{
radioSelectWebsocket.checked = true
radioSelectWebsocket.checkable = true
}
}
}
}
}
RowLayout{
spacing: 5
Label {
id: label8
Layout.leftMargin: 20
Layout.topMargin: 20
text: qsTr("地址: ")
Layout.preferredHeight: 40
renderType: Text.QtRendering
wrapMode: Text.NoWrap
font.pointSize: 20
}
TextEdit {
id: hostEdit
Layout.leftMargin: 20
Layout.topMargin: 20
width: 233
height: 40
text: qsTr("127.0.0.1")
font.italic: false
font.bold: true
Layout.columnSpan: 2
Layout.preferredHeight: 33
Layout.preferredWidth: 233
selectionColor: "#f0f0f1"
cursorVisible: true
font.pixelSize: 20
}
}
RowLayout{
spacing: 5
Button {
id: button_network
Layout.leftMargin: 20
Layout.topMargin: 20
width: 128
height: 52
text: qsTr("打开网络")
onClicked: {
if(button_network.text == "打开网络"){
let type_network = -1
if(proto_combox.currentText == "udp" && isServer.checked){
type_network = 0
}
if(proto_combox.currentText == "udp" && !isServer.checked){
type_network = 2
}
if(proto_combox.currentText == "tcp" && isServer.checked){
type_network = 1
}
if(proto_combox.currentText == "tcp" && !isServer.checked){
type_network = 3
}
console.log(hostEdit.text,
port.text,
radioSelectWebsocket.checked,
type_network)
let ret = DataWrap.openNetwork(hostEdit.text,
Number(port.text),
radioSelectWebsocket.checked,
type_network)
if(ret != 0){
tip.fail("网络连接失败")
return
}
tip.success("网络连接成功")
button_network.text = "关闭网络"
}else
{
DataWrap.closeNetwork();
button_network.text = "打开网络"
}
}
}
}
ToolTip {
id: tip
text: qsTr("")
visible: false
font.pixelSize: 25
width: 220
contentItem: Text {
id : tip_item
text: tip.text
font: tip.font
color: "#21be2b"
}
background: Rectangle {
id: tip_background
border.color: "#21be2b"
width: 220
height: 40
}
function success(str){
tip_item.color = "#21be2b"
tip.text = str
tip.visible = true
}
function fail(str){
tip_item.color = "#ff0000"
tip.text = str
tip.visible = true
}
delay: 100
timeout: 1000
}
}
}
}