From edd8f9d0b290404d0a70af4bffd8c7c38388e0dd Mon Sep 17 00:00:00 2001 From: DoinLakeFlyer Date: Thu, 12 Mar 2020 08:40:30 -0700 Subject: [PATCH] Visual tweaks for mission items --- src/PlanView/MissionItemEditor.qml | 335 +++++++++++++++-------------- src/PlanView/PlanView.qml | 47 ++-- 2 files changed, 184 insertions(+), 198 deletions(-) diff --git a/src/PlanView/MissionItemEditor.qml b/src/PlanView/MissionItemEditor.qml index d6705a5bc..bccf5a7f1 100644 --- a/src/PlanView/MissionItemEditor.qml +++ b/src/PlanView/MissionItemEditor.qml @@ -16,7 +16,7 @@ import QGroundControl.Palette 1.0 /// Mission item edit control Rectangle { id: _root - height: editorLoader.visible ? (editorLoader.y + editorLoader.height + (_margin * 2)) : (commandPicker.y + commandPicker.height + _margin / 2) + height: editorLoader.visible ? (editorLoader.y + editorLoader.height + _innerMargin) : (topRowLayout.y + topRowLayout.height + _margin) color: _currentItem ? qgcPal.missionItemEditor : qgcPal.windowShade radius: _radius opacity: _currentItem ? 1.0 : 0.7 @@ -42,11 +42,12 @@ Rectangle { property bool _readyForSave: missionItem.readyForSaveState === VisualMissionItem.ReadyForSave property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle - readonly property real _editFieldWidth: Math.min(width - _margin * 2, ScreenTools.defaultFontPixelWidth * 12) + readonly property real _editFieldWidth: Math.min(width - _innerMargin * 2, ScreenTools.defaultFontPixelWidth * 12) readonly property real _margin: ScreenTools.defaultFontPixelWidth / 2 + readonly property real _innerMargin: 2 readonly property real _radius: ScreenTools.defaultFontPixelWidth / 2 readonly property real _hamburgerSize: commandPicker.height * 0.75 - readonly property real _trashSize: commandPicker.height * 0.75 + readonly property real _trashSize: commandPicker.height * 0.75 readonly property bool _waypointsOnlyMode: QGroundControl.corePlugin.options.missionWaypointsOnly QGCPalette { @@ -76,211 +77,213 @@ Rectangle { } } - Rectangle { - id: notReadyForSaveIndicator - anchors.verticalCenter: notReadyForSaveLabel.visible ? notReadyForSaveLabel.verticalCenter : commandPicker.verticalCenter - anchors.leftMargin: _margin - anchors.left: parent.left - width: readyForSaveLabel.contentHeight - height: width - border.width: 1 - border.color: qgcPal.warningText - color: "white" - radius: width / 2 - visible: !_readyForSave - - QGCLabel { - id: readyForSaveLabel - anchors.centerIn: parent - //: Indicator in Plan view to show mission item is not ready for save/send - text: qsTr("?") - color: qgcPal.warningText - font.pointSize: ScreenTools.smallFontPointSize - } - } - - QGCLabel { - id: notReadyForSaveLabel - anchors.margins: _margin - anchors.left: notReadyForSaveIndicator.right - anchors.right: parent.right - anchors.top: commandPicker.bottom - visible: _currentItem && !_readyForSave - text: missionItem.readyForSaveState === VisualMissionItem.NotReadyForSaveTerrain ? - qsTr("Incomplete: Waiting on terrain data.") : - qsTr("Incomplete: Item not fully specified.") - wrapMode: Text.WordWrap - horizontalAlignment: Text.AlignHCenter - color: qgcPal.warningText - } - - QGCColoredImage { - id: hamburger - anchors.rightMargin: ScreenTools.defaultFontPixelWidth - anchors.right: parent.right - anchors.verticalCenter: commandPicker.verticalCenter - width: _hamburgerSize - height: _hamburgerSize - sourceSize.height: _hamburgerSize - source: "qrc:/qmlimages/Hamburger.svg" - visible: missionItem.isCurrentItem && missionItem.sequenceNumber !== 0 - color: qgcPal.text - } - - QGCMouseArea { - fillItem: hamburger - visible: hamburger.visible - onClicked: { - currentItemScope.focus = true - hamburgerMenu.popup() - } - - QGCMenu { - id: hamburgerMenu + Row { + id: topRowLayout + anchors.margins: _margin + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + spacing: _margin - QGCMenuItem { - text: qsTr("Move to vehicle position") - visible: missionItem.specifiesCoordinate - enabled: _activeVehicle - onTriggered: missionItem.coordinate = _activeVehicle.coordinate + Rectangle { + id: notReadyForSaveIndicator + anchors.verticalCenter: parent.verticalCenter + width: readyForSaveLabel.contentHeight + height: width + border.width: 1 + border.color: qgcPal.warningText + color: "white" + radius: width / 2 + visible: !_readyForSave + + QGCLabel { + id: readyForSaveLabel + anchors.centerIn: parent + //: Indicator in Plan view to show mission item is not ready for save/send + text: qsTr("?") + color: qgcPal.warningText + font.pointSize: ScreenTools.smallFontPointSize } + } - QGCMenuItem { - text: qsTr("Move to previous item position") - visible: _missionController.previousCoordinate.isValid - onTriggered: missionItem.coordinate = _missionController.previousCoordinate + QGCColoredImage { + id: deleteButton + anchors.verticalCenter: parent.verticalCenter + height: _hamburgerSize + width: height + sourceSize.height: height + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + color: qgcPal.text + visible: _currentItem && missionItem.sequenceNumber !== 0 + source: "/res/TrashDelete.svg" + + QGCMouseArea { + fillItem: parent + onClicked: remove() } + } - QGCMenuItem { - text: qsTr("Edit position...") - visible: missionItem.specifiesCoordinate - onTriggered: mainWindow.showComponentDialog(editPositionDialog, qsTr("Edit Position"), mainWindow.showDialogDefaultWidth, StandardButton.Close) + Item { + id: commandPicker + anchors.verticalCenter: parent.verticalCenter + height: ScreenTools.implicitComboBoxHeight + width: innerLayout.width + visible: !commandLabel.visible + + RowLayout { + id: innerLayout + anchors.verticalCenter: parent.verticalCenter + spacing: _padding + + property real _padding: ScreenTools.comboBoxPadding + + QGCLabel { text: missionItem.commandName } + + QGCColoredImage { + height: ScreenTools.defaultFontPixelWidth + width: height + fillMode: Image.PreserveAspectFit + smooth: true + antialiasing: true + color: qgcPal.text + source: "/qmlimages/arrow-down.png" + } } - QGCMenuSeparator { - visible: missionItem.isSimpleItem && !_waypointsOnlyMode + QGCMouseArea { + fillItem: parent + onClicked: mainWindow.showComponentDialog(commandDialog, qsTr("Select Mission Command"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel) } - QGCMenuItem { - text: qsTr("Show all values") - checkable: true - checked: missionItem.isSimpleItem ? missionItem.rawEdit : false - visible: missionItem.isSimpleItem && !_waypointsOnlyMode + Component { + id: commandDialog - onTriggered: { - if (missionItem.rawEdit) { - if (missionItem.friendlyEditAllowed) { - missionItem.rawEdit = false - } else { - mainWindow.showMessageDialog(qsTr("Mission Edit"), qsTr("You have made changes to the mission item which cannot be shown in Simple Mode")) - } - } else { - missionItem.rawEdit = true - } - checked = missionItem.rawEdit + MissionCommandDialog { + missionItem: _root.missionItem + map: _root.map + // FIXME: Disabling fly through commands doesn't work since you may need to change from an RTL to something else + flyThroughCommandsAllowed: true //_missionController.flyThroughCommandsAllowed } } + } - QGCMenuItem { - text: qsTr("Item #%1").arg(missionItem.sequenceNumber) - enabled: false - } + QGCLabel { + id: commandLabel + anchors.verticalCenter: parent.verticalCenter + width: commandPicker.width + height: commandPicker.height + visible: !missionItem.isCurrentItem || !missionItem.isSimpleItem || _waypointsOnlyMode || missionItem.isTakeoffItem + verticalAlignment: Text.AlignVCenter + text: missionItem.commandName + color: _outerTextColor } + + } - QGCColoredImage { - id: deleteButton + QGCColoredImage { + id: hamburger anchors.margins: _margin - anchors.left: parent.left - anchors.verticalCenter: commandPicker.verticalCenter + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + width: _hamburgerSize height: _hamburgerSize - width: height - sourceSize.height: height - fillMode: Image.PreserveAspectFit - mipmap: true - smooth: true + sourceSize.height: _hamburgerSize + source: "qrc:/qmlimages/Hamburger.svg" + visible: missionItem.isCurrentItem && missionItem.sequenceNumber !== 0 color: qgcPal.text - visible: _currentItem && missionItem.sequenceNumber !== 0 - source: "/res/TrashDelete.svg" QGCMouseArea { - fillItem: parent - onClicked: remove() - } - } + fillItem: hamburger + onClicked: { + currentItemScope.focus = true + hamburgerMenu.popup() + } - Rectangle { - id: commandPicker - anchors.margins: _margin - anchors.left: deleteButton.right - anchors.top: parent.top - height: ScreenTools.implicitComboBoxHeight - width: innerLayout.x + innerLayout.width + ScreenTools.comboBoxPadding - visible: !commandLabel.visible - color: qgcPal.window - border.width: 1 - border.color: qgcPal.text - - RowLayout { - id: innerLayout - anchors.margins: _padding - anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter - spacing: _padding + QGCMenu { + id: hamburgerMenu - property real _padding: ScreenTools.comboBoxPadding + QGCMenuItem { + text: qsTr("Move to vehicle position") + visible: missionItem.specifiesCoordinate + enabled: _activeVehicle + onTriggered: missionItem.coordinate = _activeVehicle.coordinate + } - QGCLabel { text: missionItem.commandName } + QGCMenuItem { + text: qsTr("Move to previous item position") + visible: _missionController.previousCoordinate.isValid + onTriggered: missionItem.coordinate = _missionController.previousCoordinate + } - QGCColoredImage { - height: ScreenTools.defaultFontPixelWidth - width: height - fillMode: Image.PreserveAspectFit - smooth: true - antialiasing: true - color: qgcPal.text - source: "/qmlimages/arrow-down.png" - } - } + QGCMenuItem { + text: qsTr("Edit position...") + visible: missionItem.specifiesCoordinate + onTriggered: mainWindow.showComponentDialog(editPositionDialog, qsTr("Edit Position"), mainWindow.showDialogDefaultWidth, StandardButton.Close) + } - QGCMouseArea { - fillItem: parent - onClicked: mainWindow.showComponentDialog(commandDialog, qsTr("Select Mission Command"), mainWindow.showDialogDefaultWidth, StandardButton.Cancel) - } + QGCMenuSeparator { + visible: missionItem.isSimpleItem && !_waypointsOnlyMode + } - Component { - id: commandDialog + QGCMenuItem { + text: qsTr("Show all values") + checkable: true + checked: missionItem.isSimpleItem ? missionItem.rawEdit : false + visible: missionItem.isSimpleItem && !_waypointsOnlyMode + + onTriggered: { + if (missionItem.rawEdit) { + if (missionItem.friendlyEditAllowed) { + missionItem.rawEdit = false + } else { + mainWindow.showMessageDialog(qsTr("Mission Edit"), qsTr("You have made changes to the mission item which cannot be shown in Simple Mode")) + } + } else { + missionItem.rawEdit = true + } + checked = missionItem.rawEdit + } + } - MissionCommandDialog { - missionItem: _root.missionItem - map: _root.map - // FIXME: Disabling fly through commands doesn't work since you may need to change from an RTL to something else - flyThroughCommandsAllowed: true //_missionController.flyThroughCommandsAllowed + QGCMenuItem { + text: qsTr("Item #%1").arg(missionItem.sequenceNumber) + enabled: false + } } } - } + /* QGCLabel { - id: commandLabel - anchors.leftMargin: ScreenTools.comboBoxPadding - anchors.fill: commandPicker - visible: !missionItem.isCurrentItem || !missionItem.isSimpleItem || _waypointsOnlyMode || missionItem.isTakeoffItem - verticalAlignment: Text.AlignVCenter - text: missionItem.commandName - color: _outerTextColor + id: notReadyForSaveLabel + anchors.margins: _margin + anchors.left: notReadyForSaveIndicator.right + anchors.right: parent.right + anchors.top: commandPicker.bottom + visible: _currentItem && !_readyForSave + text: missionItem.readyForSaveState === VisualMissionItem.NotReadyForSaveTerrain ? + qsTr("Incomplete: Waiting on terrain data.") : + qsTr("Incomplete: Item not fully specified.") + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignHCenter + color: qgcPal.warningText } +*/ + Loader { id: editorLoader - anchors.margins: _margin + anchors.margins: _innerMargin anchors.left: parent.left - anchors.top: _readyForSave ? commandPicker.bottom : notReadyForSaveLabel.bottom + anchors.top: topRowLayout.bottom source: missionItem.editorQml visible: _currentItem property var masterController: _masterController - property real availableWidth: _root.width - (_margin * 2) ///< How wide the editor should be + property real availableWidth: _root.width - (anchors.margins * 2) ///< How wide the editor should be property var editorRoot: _root } } // Rectangle diff --git a/src/PlanView/PlanView.qml b/src/PlanView/PlanView.qml index 399cea59e..5ccb8335d 100644 --- a/src/PlanView/PlanView.qml +++ b/src/PlanView/PlanView.qml @@ -49,7 +49,7 @@ Item { property bool _addWaypointOnClick: false property bool _addROIOnClick: false property bool _singleComplexItem: _missionController.complexMissionItemNames.length === 1 - property int _editingLayer: bar.currentIndex ? _layers[bar.currentIndex] : _layerMission + property int _editingLayer: layerTabBar.currentIndex ? _layers[layerTabBar.currentIndex] : _layerMission property int _toolStripBottom: toolStrip.height + toolStrip.y property var _appSettings: QGroundControl.settingsManager.appSettings property var _planViewSettings: QGroundControl.settingsManager.planViewSettings @@ -704,7 +704,7 @@ Item { height: parent.height width: _rightPanelWidth color: qgcPal.window - opacity: planExpanded.visible ? 0.2 : 0 + opacity: layerTabBar.visible ? 0.2 : 0 anchors.bottom: parent.bottom anchors.right: parent.right anchors.rightMargin: _toolsMargin @@ -781,38 +781,21 @@ Item { } //------------------------------------------------------- // Mission Controls (Expanded) - Rectangle { - id: planExpanded + QGCTabBar { + id: layerTabBar width: parent.width - height: (!planControlColapsed || !_airspaceEnabled) ? bar.height + ScreenTools.defaultFontPixelHeight : 0 - color: qgcPal.missionItemEditor - radius: _radius visible: (!planControlColapsed || !_airspaceEnabled) && QGroundControl.corePlugin.options.enablePlanViewSelector - Item { - height: bar.height - anchors.left: parent.left - anchors.right: parent.right - anchors.margins: ScreenTools.defaultFontPixelWidth - anchors.verticalCenter: parent.verticalCenter - QGCTabBar { - id: bar - width: parent.width - anchors.centerIn: parent - Component.onCompleted: { - currentIndex = 0 - } - QGCTabButton { - text: qsTr("Mission") - } - QGCTabButton { - text: qsTr("Fence") - enabled: _geoFenceController.supported - } - QGCTabButton { - text: qsTr("Rally") - enabled: _rallyPointController.supported - } - } + Component.onCompleted: currentIndex = 0 + QGCTabButton { + text: qsTr("Mission") + } + QGCTabButton { + text: qsTr("Fence") + enabled: _geoFenceController.supported + } + QGCTabButton { + text: qsTr("Rally") + enabled: _rallyPointController.supported } } } -- 2.22.0