diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index bffb3730f09a0d92fea277459232c2c2f16f7ea2..f14eba3ae5b85e2ff7157c6c3b30d3d7a899d9ab 100644 --- a/src/FlightDisplay/FlightDisplayView.qml +++ b/src/FlightDisplay/FlightDisplayView.qml @@ -546,6 +546,59 @@ QGCView { visible: singleVehicleView.checked && !QGroundControl.videoManager.fullScreen } + /*Rectangle { + + z: _panel.z + 4 + anchors.left: parent.left + anchors.bottom: parent.bottom + anchors.leftMargin: ScreenTools.defaultFontPixelWidth + anchors.bottomMargin: ScreenTools.defaultFontPixelWidth + color: "red" + width: childrenRect.width + height: childrenRect.height + + + Rectangle { + height: 20 + width: 100 + anchors.bottom: innerRectangle.top + anchors.left: parent.left + color: "green" + } + + + Rectangle { + id:innerRectangle + height: 100 + width: 100 + anchors.bottom: parent.bottom + anchors.left: parent.left + color: "blue" + } + + + + MouseArea { + property bool value: false + + anchors.fill: innerRectangle + + onClicked: { + if (value) { + innerRectangle.height /= 2 + innerRectangle.width /= 2 + value = false + } + else + { + innerRectangle.height *= 2 + innerRectangle.width *= 2 + value = true + } + } + } + }*/ + FlightDisplayWimaMenu { id: wimaMenu z: _panel.z + 4 @@ -553,6 +606,8 @@ QGCView { anchors.bottom: parent.bottom anchors.leftMargin: ScreenTools.defaultFontPixelWidth anchors.bottomMargin: ScreenTools.defaultFontPixelWidth + maxWidth: 300 + maxHeight: 500 wimaController: wimaController diff --git a/src/FlightDisplay/FlightDisplayWimaMenu.qml b/src/FlightDisplay/FlightDisplayWimaMenu.qml index a13dfc4322b063926ea201228a2ac5106fda7dbb..350fdb5bdf1fe0136556453ff69f1dcacf0868a7 100644 --- a/src/FlightDisplay/FlightDisplayWimaMenu.qml +++ b/src/FlightDisplay/FlightDisplayWimaMenu.qml @@ -21,14 +21,16 @@ Item { id: _root height: mainFrame.height width: mainFrame.width - property var maxHeight: 500 - property var maxWidth: 300 + + property int maxHeight: 500 + property int maxWidth: 300 + property var wimaController // must be provided by the user property var planMasterController // must be provided by the user property bool _controllerValid: planMasterController !== undefined property real _controllerProgressPct: _controllerValid ? planMasterController.missionController.progressPct : 0 - property double _margins: ScreenTools.defaultPixelWidth*0.3 + property real _margins: ScreenTools.defaultPixelWidth*0.3 signal initSmartRTL(); @@ -57,14 +59,14 @@ Item { // box containing all items Rectangle { // maybe replace with column and remove anchors => dynamic height: - id: mainFrame - anchors.left: parent.left - anchors.bottom: parent.bottom - height: enableWima.enableWimaBoolean ? Math.min(parent.maxHeight, enableWima.height + flickable.contentHeight + 2*_margins) : enableWima.height + _margins - width: enableWima.enableWimaBoolean ? Math.min(parent.maxWidth, flickable.contentWidth + 2*_margins) : enableWima.width - color: enableWima.enableWimaBoolean ? qgcPal.window : "transparent" - radius: ScreenTools.defaultFontPixelHeight / 4 - clip: false + id: mainFrame + height: enableWima.height + flickable.height + width: Math.max(enableWima.width, flickable.width) + color: enableWima.enableWimaBoolean ? qgcPal.window : "transparent" + radius: Math.min(height, width)/50 + clip: true + + property real _margins: _root._margins Component.onCompleted: { console.log('onCompleted') @@ -72,46 +74,65 @@ Item { console.log(height) console.log('width') console.log(width) + console.log(enableWima.width) + console.log(enableWima.height) + console.log(flickable.contentWidth) + console.log(flickable.contentHeight) + width = enableWima.width + flickable.contentWidth + 2*_margins + console.log('width') + console.log(width) } onHeightChanged: { console.log('height') console.log(height) - _root.height = mainFrame.height + //_root.height = mainFrame.height } onWidthChanged: { console.log('width') console.log(width) - _root.width = mainFrame.width + //_root.width = mainFrame.width } // checkbox to enable/ disable wima SliderSwitch { id: enableWima - anchors.horizontalCenter: parent.horizontalCenter - anchors.topMargin: _margins - anchors.top: parent.top + anchors.horizontalCenter: flickable.horizontalCenter + anchors.bottom: flickable.top confirmText: enableWimaBoolean ? qsTr("disable WiMA") : qsTr("enable WiMA") property var enableWimaFact: wimaController.enableWimaController property bool enableWimaBoolean: enableWimaFact.value - Component.onCompleted: { - enableWimaFact.value = false + /*onXChanged: { + console.log('x') + } + + onYChanged: { + console.log('y') } + Component.onCompleted: { + enableWimaFact.value = true + }*/ + onAccept: { if (enableWimaBoolean) { enableWimaFact.value = false + enableWimaMouseArea.enabled = true + timer.start() } else { enableWimaFact.value = true + enableWimaMouseArea.enabled = false + timer.stop() } } } - /*MouseArea { + MouseArea { + id: enableWimaMouseArea anchors.fill: enableWima hoverEnabled: true @@ -119,268 +140,296 @@ Item { property var enableWimaFact: wimaController.enableWimaController property bool enableWimaBoolean: enableWimaFact.value onEntered: { - timer.stop() enableWima.visible = true + enabled = false + timer.start() } - onExited: { - if (enableWimaBoolean === false) { - timer.start() - } - } + + onExited: timer.start() } Timer { id: timer - interval: 1000 + interval: 3000 running: false repeat: false - onTriggered: enableWima.visible = false - }*/ + onTriggered: triggerHandler() + + function triggerHandler() { + if (enableWima.enableWimaBoolean === false) { + enableWima.visible = false + enableWimaMouseArea.enabled = true + } + } + + Component.onCompleted: { + start() + } + } QGCFlickable { id: flickable - clip: false - anchors.top: enableWima.bottom + clip: true + visible: enableWima.enableWimaBoolean anchors.left: parent.left - contentHeight: mainColumn.height - contentWidth: mainColumn.width + anchors.bottom: parent.bottom + width: enableWima.enableWimaBoolean ? Math.min(contentWidth, maxWidth) : enableWima.width + height: enableWima.enableWimaBoolean ? Math.min(contentHeight, maxHeight) : 0 + contentHeight: columnWrapper.height + contentWidth: columnWrapper.width - onContentHeightChanged: { + + onContentHeightChanged: { console.log('contentHeight') console.log(contentHeight) - mainFrame.height = enableWima.enableWimaBoolean ? Math.min(parent.maxHeight, enableWima.height + flickable.contentHeight + 2*_margins) : enableWima.height + _margins + //mainFrame.height = enableWima.enableWimaBoolean ? Math.min(parent.maxHeight, enableWima.height + flickable.contentHeight + 2*_margins) : enableWima.height + _margins } onContentWidthChanged: { console.log('contentWidth') console.log(contentWidth) - mainFrame.width = enableWima.enableWimaBoolean ? Math.min(parent.maxWidth, flickable.contentWidth + 2*_margins) : enableWima.width + //mainFrame.width = enableWima.enableWimaBoolean ? Math.min(parent.maxWidth, flickable.contentWidth + 2*_margins) : enableWima.width } - Column { - id: mainColumn - anchors.horizontalCenter: parent.horizontalCenter - spacing: ScreenTools.defaultFontPixelHeight * 0.3 - - SectionHeader{ - id: settingsHeader - text: qsTr("Settings") - } - GridLayout { - columns: 2 - rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - visible: settingsHeader.checked - - QGCLabel { - text: qsTr("Next Waypoint") - Layout.fillWidth: true - } - FactTextField { - fact: wimaController.startWaypointIndex - Layout.fillWidth: true - } - - QGCLabel { - text: qsTr("Max Waypoints") - Layout.fillWidth: true - } - FactTextField { - fact: wimaController.maxWaypointsPerPhase - Layout.fillWidth: true - } - QGCLabel { - text: qsTr("Overlap") - Layout.fillWidth: true - } - FactTextField { - fact: wimaController.overlapWaypoints - Layout.fillWidth: true - } + Row { + id: columnWrapper + Item{ // spacer + width: 6 + height: 1 } - GridLayout { - columns: 2 - rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - visible: settingsHeader.checked - - FactCheckBox { - text: qsTr("Show All") - fact: wimaController.showAllMissionItems - Layout.fillWidth: true - } - - FactCheckBox { - text: qsTr("Show Current") - fact: wimaController.showCurrentMissionItems - Layout.fillWidth: true - } - - FactCheckBox { - text: qsTr("Reverse") - fact: wimaController.reverse - Layout.fillWidth: true - } - } // Grid - SectionHeader{ - id: missionHeader - text: qsTr("Mission") - } - GridLayout { - columns: 2 - rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - visible: missionHeader.checked - width: parent.width - - QGCLabel { - text: qsTr("Speed") - Layout.fillWidth: true - } - FactTextField { - fact: wimaController.flightSpeed - Layout.fillWidth: true - } + Column { + id: mainColumn + spacing: ScreenTools.defaultFontPixelHeight * 0.3 - QGCLabel { - text: qsTr("Altitude") - Layout.fillWidth: true - } - FactTextField { - fact: wimaController.altitude - Layout.fillWidth: true + SectionHeader{ + id: settingsHeader + text: qsTr("Settings") } - - } - - GridLayout { - columns: 2 - rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - visible: missionHeader.checked - width: parent.width - - // Buttons - QGCButton { - id: buttonPreviousMissionPhase - text: qsTr("Reverse") - onClicked: wimaController.previousPhase() - Layout.fillWidth: true + GridLayout { + columns: 2 + rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + visible: settingsHeader.checked + + QGCLabel { + text: qsTr("Next Waypoint") + Layout.fillWidth: true + } + FactTextField { + fact: wimaController.startWaypointIndex + Layout.fillWidth: true + } + + QGCLabel { + text: qsTr("Max Waypoints") + Layout.fillWidth: true + } + FactTextField { + fact: wimaController.maxWaypointsPerPhase + Layout.fillWidth: true + } + + QGCLabel { + text: qsTr("Overlap") + Layout.fillWidth: true + } + FactTextField { + fact: wimaController.overlapWaypoints + Layout.fillWidth: true + } } - - QGCButton { - id: buttonNextMissionPhase - text: qsTr("Forward") - onClicked: wimaController.nextPhase() - Layout.fillWidth: true + GridLayout { + columns: 2 + rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + visible: settingsHeader.checked + + FactCheckBox { + text: qsTr("Show All") + fact: wimaController.showAllMissionItems + Layout.fillWidth: true + } + + FactCheckBox { + text: qsTr("Show Current") + fact: wimaController.showCurrentMissionItems + Layout.fillWidth: true + } + + FactCheckBox { + text: qsTr("Reverse") + fact: wimaController.reverse + Layout.fillWidth: true + } + } // Grid + + SectionHeader{ + id: missionHeader + text: qsTr("Mission") } + GridLayout { + columns: 2 + rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + visible: missionHeader.checked + width: parent.width + + QGCLabel { + text: qsTr("Speed") + Layout.fillWidth: true + } + FactTextField { + fact: wimaController.flightSpeed + Layout.fillWidth: true + } + + QGCLabel { + text: qsTr("Altitude") + Layout.fillWidth: true + } + FactTextField { + fact: wimaController.altitude + Layout.fillWidth: true + } - QGCButton { - id: buttonResetPhase - text: qsTr("Reset Phase") - onClicked: wimaController.resetPhase(); - Layout.columnSpan: 2 - Layout.fillWidth: true } - } // Grid - SectionHeader{ - id: vehicleHeader - text: qsTr("Vehicle") - } - GridLayout { - columns: 2 - rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - visible: vehicleHeader.checked - width: parent.width - - QGCButton { - id: buttonUpload - text: qsTr("Upload") - onClicked: wimaController.uploadToVehicle() - Layout.fillWidth: true + GridLayout { + columns: 2 + rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + visible: missionHeader.checked + width: parent.width + + // Buttons + QGCButton { + id: buttonPreviousMissionPhase + text: qsTr("Reverse") + onClicked: wimaController.previousPhase() + Layout.fillWidth: true + } + + QGCButton { + id: buttonNextMissionPhase + text: qsTr("Forward") + onClicked: wimaController.nextPhase() + Layout.fillWidth: true + } + + QGCButton { + id: buttonResetPhase + text: qsTr("Reset Phase") + onClicked: wimaController.resetPhase(); + Layout.columnSpan: 2 + Layout.fillWidth: true + } + } // Grid + + SectionHeader{ + id: vehicleHeader + text: qsTr("Vehicle") } - - QGCButton { - id: buttonRemoveFromVehicle - text: qsTr("Remove") - onClicked: wimaController.removeFromVehicle() - Layout.fillWidth: true + GridLayout { + columns: 2 + rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + columnSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + visible: vehicleHeader.checked + width: parent.width + + QGCButton { + id: buttonUpload + text: qsTr("Upload") + onClicked: wimaController.uploadToVehicle() + Layout.fillWidth: true + } + + QGCButton { + id: buttonRemoveFromVehicle + text: qsTr("Remove") + onClicked: wimaController.removeFromVehicle() + Layout.fillWidth: true + } + + QGCButton { + id: buttonSmartRTL + text: qsTr("Smart RTL") + onClicked: initSmartRTL() + Layout.columnSpan: 2 + Layout.fillWidth: true + } + + + // progess bar + Rectangle { + id: progressBar + height: 4 + width: _controllerProgressPct * parent.width + color: qgcPal.colorGreen + visible: false + Layout.columnSpan: 2 + Layout.fillWidth: true + } + + QGCLabel { + id: uploadCompleteText + font.pointSize: ScreenTools.largeFontPointSize + Layout.columnSpan: 2 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: "Done" + visible: false + Layout.fillWidth: true + } } - QGCButton { - id: buttonSmartRTL - text: qsTr("Smart RTL") - onClicked: initSmartRTL() - Layout.columnSpan: 2 - Layout.fillWidth: true + SectionHeader { + id: statsHeader + text: qsTr("Statistics") } - - - // progess bar - Rectangle { - id: progressBar - height: 4 - width: _controllerProgressPct * parent.width - color: qgcPal.colorGreen - visible: false - Layout.columnSpan: 2 - Layout.fillWidth: true + GridLayout { + columns: 2 + rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 + anchors.topMargin: ScreenTools.defaultFontPixelHeight * 0.5 + visible: statsHeader.checked + + QGCLabel { + text: qsTr("Phase Length: ") + wrapMode: Text.WordWrap + Layout.fillWidth: true + } + QGCLabel { + text: wimaController.phaseDistance >= 0 ? wimaController.phaseDistance.toFixed(2) + " m": "" + wrapMode: Text.WordWrap + Layout.fillWidth: true + } + + QGCLabel { + text: qsTr("Phase Duration: ") + wrapMode: Text.WordWrap + Layout.fillWidth: true + } + QGCLabel { + text: wimaController.phaseDuration >= 0 ? getTime(wimaController.phaseDuration) : "" + wrapMode: Text.WordWrap + Layout.fillWidth: true + } + QGCLabel { + text: "" + Layout.columnSpan: 2 + } } + } // settingsColumn - QGCLabel { - id: uploadCompleteText - font.pointSize: ScreenTools.largeFontPointSize - Layout.columnSpan: 2 - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - text: "Done" - visible: false - Layout.fillWidth: true - } + Item { // spacer + width: 6 + height: 1 } + } - SectionHeader { - id: statsHeader - text: qsTr("Statistics") - } - GridLayout { - columns: 2 - rowSpacing: ScreenTools.defaultFontPixelHeight * 0.5 - anchors.topMargin: ScreenTools.defaultFontPixelHeight * 0.5 - visible: statsHeader.checked - - QGCLabel { - text: qsTr("Phase Length: ") - wrapMode: Text.WordWrap - Layout.fillWidth: true - } - QGCLabel { - text: wimaController.phaseDistance >= 0 ? wimaController.phaseDistance.toFixed(2) + " m": "" - wrapMode: Text.WordWrap - Layout.fillWidth: true - } - QGCLabel { - text: qsTr("Phase Duration: ") - wrapMode: Text.WordWrap - Layout.fillWidth: true - } - QGCLabel { - text: wimaController.phaseDuration >= 0 ? getTime(wimaController.phaseDuration) : "" - wrapMode: Text.WordWrap - Layout.fillWidth: true - } - QGCLabel { - text: "" - Layout.columnSpan: 2 - } - } - } // settingsColumn } // QGCFlickable } }