import QtQuick import QtQuick.Controls import QtQuick.Dialogs import QtQuick.Layouts import "./common" // import "./Style" Item { id: self signal logTabViewDoubleClick signal queryField signal selectPlanClick signal createPlanClick signal addCmdPlanClick signal updatePlans signal cmdEditClick(var cmdId) signal delCmdPlanClick(var row) signal deletePlanClick(var row) signal runPlanClick(var row) signal runStopPlanClick() signal setPlanDialogAcceptClick signal cbDeviceActivated signal cbInterfaceActived signal setPlanClick signal editPlanListViewClick signal createPlanDialogAcceptClick property var rowWidth : 600 property var rowHeight : 30 property alias _setPlanDialog: setPlanDialog property alias _editPlanLstTableView: editPlanLstTableView property alias _editPlanListView: editPlanListView property alias _createPlanDialog: createPlanDialog property alias _tfPlanName: tfPlanName property alias _cbDevice: cbDevice property alias _cbInterface: cbInterface property alias _cbInstruction: cbInstruction property var planModel: ListModel{} property var devNameArray: [] property var devModelIdArray: [] property var interfacesArray: [] property var deviceIdArray:[] property var interfaceNameArray: [] property var instructionNameArray: [] property var instructionIdArray: [] property var planLstModel: ListModel{} property var measureItemModel: ListModel{} property var measureValueModel: ListModel{} Rectangle { id: titleBar width: parent.width height: 80 color: "#f3f3f3" border.color: "lightgray" border.width: 1 anchors.top: parent.top anchors.horizontalCenter: parent.horizontalCenter Speed{ id: speed anchors.left: parent.left anchors.leftMargin: 20 anchors.bottom: parent.bottom anchors.bottomMargin: 5 } } Item{ anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom anchors.top: titleBar.bottom Component.onCompleted: get_queues() Rectangle { id: editPlanListRect width: 500 height: parent.height-10 border.width: 1 border.color: "#999999" clip: true Rectangle{ anchors.left : parent.left height: 40 anchors.top: parent.top anchors.right: parent.right border.width: 1 color: "#f3f3f3" border.color: "lightgray" Row { x: 5 anchors.verticalCenter: parent.verticalCenter spacing: 5 Button{ text: "创建" visible: isAdmin onClicked: createPlanClick() } Button{ text: "删除" visible: isAdmin enabled: editPlanListView.currentIndex > -1 && planLstModel.count > 0 onClicked: deletePlanClick(editPlanListView.currentIndex) } Button{ text: "运行" enabled: editPlanListView.currentIndex > -1 && planLstModel.count > 0 onClicked: runPlanClick(editPlanListView.currentIndex) } Button{ text: "结束" visible: true enabled: editPlanListView.currentIndex > -1 && planLstModel.count > 0 onClicked: runStopPlanClick() } Button{ text: "设置" onClicked: setPlanClick() } } } ListView { id: editPlanListView anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top anchors.bottom: parent.bottom anchors.topMargin: 40 anchors.leftMargin: 2 clip: true model: planLstModel delegate: Rectangle { width: editPlanListView.width height: 30 clip: true color: editPlanListView.currentIndex == index ? "#beebff" : ((index %2 == 1) ? "#f2f2f2": "white") Text { x: 5 anchors.verticalCenter: parent.verticalCenter color: "black" text: name } MouseArea{ anchors.fill: parent onClicked: { editPlanListView.currentIndex = index editPlanListViewClick() } } } } } Rectangle{ height: parent.height anchors.left:editPlanListRect.right anchors.right: parent.right anchors.leftMargin: 5 Rectangle{ anchors.left : parent.left height: 40 anchors.top: parent.top anchors.right: parent.right border.width: 1 color: "#f3f3f3" border.color: "lightgray" Row { x: 5 anchors.verticalCenter: parent.verticalCenter spacing: 5 Button{ text: "添加" visible: isAdmin enabled: editPlanListView.currentIndex > -1 && planLstModel.count > 0 && !lstRunning onClicked: addCmdPlanClick() } Button{ text: "删除" visible: isAdmin enabled: editPlanListView.currentIndex > -1 && planLstModel.count > 0 && !lstRunning onClicked: delCmdPlanClick(editPlanLstTableView.currentIndex) } Button{ text: "保存" visible: false enabled: editPlanListView.currentIndex > -1 && !lstRunning onClicked: updatePlans() } } } Item { anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top anchors.bottom: parent.bottom anchors.topMargin: 40 clip: true ListView{ id: editPlanLstTableView header: headerView delegate: instructDelegate model: planModel anchors.fill: parent } } Component { id: instructDelegate Rectangle { width:editPlanLstTableView.width; height: 20; color: editPlanLstTableView.currentIndex == index ? "#beebff" : ((index %2 == 1) ? "#f2f2f2": "white") z:2;//将表头的z坐标设置在上层,表头在设置属性为overlayHeader时就不会随滑动而消失,始终显示在最上面 MouseArea{ anchors.fill: parent onPressed:(mouse)=> { editPlanLstTableView.currentIndex = index mouse.accepted = false } } Row { width: 0.9*parent.width; height: parent.height; anchors.left: parent.left; anchors.leftMargin: 0.1*parent.width; Label { text: index+1; font.pixelSize: 12; width: 0.25*parent.width; anchors.verticalCenter: parent.verticalCenter; verticalAlignment: Text.AlignHCenter; } Item { width: 0.25*parent.width; height: parent.height anchors.verticalCenter: parent.verticalCenter; TextField { id: tfSpeed visible: false anchors.verticalCenter: parent.verticalCenter; onTextChanged: { speed = text; } onEditingFinished: { speed = text; updatePlans() tfSpeed.visible = false; } } Label { id: lbSpeed visible: !tfSpeed.visible; text: speed; verticalAlignment: Text.AlignHCenter; font.pixelSize: 12; } MouseArea{ anchors.fill: parent; visible: !tfSpeed.visible; onClicked: { tfSpeed.visible = true; tfSpeed.text = speed; } } } Item { width: 0.25*parent.width; height: parent.height anchors.verticalCenter: parent.verticalCenter; ComboBox { id: cbSpeed; width: 0.25*parent.width; anchors.verticalCenter: parent.verticalCenter; model: ["正向", "反向"] currentIndex: direction=="1" ? 0 : 1; onActivated: { direction = currentIndex == 0 ? "1" : "0" updatePlans() } } } Item { width: 0.25*parent.width; height: parent.height anchors.verticalCenter: parent.verticalCenter; TextField { id: tfRuntime visible: false anchors.verticalCenter: parent.verticalCenter; onTextChanged: { runtime = text; } onEditingFinished: { runtime = text; updatePlans() tfRuntime.visible = false; } } Label { id: lbRuntime text: runtime; font.pixelSize: 12; visible: !tfRuntime.visible; anchors.verticalCenter: parent.verticalCenter; verticalAlignment: Text.AlignHCenter; } MouseArea{ anchors.fill: parent; visible: !tfRuntime.visible; onClicked: { tfRuntime.visible = true; tfRuntime.text = runtime; } } } } } } Component { id:headerView; Rectangle { width:parent.width; height: 20; color: "lightgrey"; z:2;//将表头的z坐标设置在上层,表头在设置属性为overlayHeader时就不会随滑动而消失,始终显示在最上面 Row { width: 0.9*parent.width; height: parent.height; anchors.left: parent.left; anchors.leftMargin: 0.1*parent.width; Label { text: "序号"; font.pixelSize: 12; width: 0.25*parent.width; anchors.verticalCenter: parent.verticalCenter; verticalAlignment: Text.AlignHCenter; } Label { text: "速度(rpm)"; font.pixelSize: 12; width: 0.25*parent.width; anchors.verticalCenter: parent.verticalCenter; verticalAlignment: Text.AlignHCenter; } Label { text: "转动方向"; font.pixelSize: 12; width: 0.25*parent.width anchors.verticalCenter: parent.verticalCenter; verticalAlignment: Text.AlignHCenter; } Label { text: "运行时间(s)"; font.pixelSize: 12; width: 0.25*parent.width anchors.verticalCenter: parent.verticalCenter; verticalAlignment: Text.AlignHCenter; } } } } } } Dialog { id: createPlanDialog title: "新建计划" standardButtons: Dialog.NoButton width: 350 height: 160 Column { anchors.centerIn: parent spacing: 30 Item{ width: 300 height: 30 Text{text: "计划名称"} TextField{id: tfPlanName;anchors.right: parent.right;width: 200;height: 30} } Row { width: 300 height: 30 spacing: 100 Button { text: "确认" // style: ButtonStyle{} onClicked: createPlanDialog.accept() } Button { text: "取消" // style: ButtonStyle{} onClicked: createPlanDialog.reject() } } } onAccepted: createPlanDialogAcceptClick() } Dialog { id: setPlanDialog title: "指令配置" standardButtons: Dialog.NoButton width: 300 height: 280 Column { anchors.centerIn: parent spacing: 30 Item{ width: 260 height: 30 Text{text: "设备"} ComboBox{ id: cbDevice width: 200 height: 30 anchors.right: parent.right model: devNameArray onActivated: cbDeviceActivated() } } Item{ width: 260 height: 30 Text{text: "接口"} ComboBox{ id: cbInterface width: 200 height: 30 anchors.right: parent.right model: interfaceNameArray onActivated: cbInterfaceActived() } } Item{ width: 260 height: 30 Text{text: "指令"} ComboBox{ id: cbInstruction width: 200 height: 30 anchors.right: parent.right model: instructionNameArray } } Row { width: 260 height: 30 spacing: 100 Button { text: "确认" // style: ButtonStyle{} onClicked: setPlanDialog.accept() } Button { text: "取消" // style: ButtonStyle{} onClicked: setPlanDialog.reject() } } } onAccepted: setPlanDialogAcceptClick() } }