Unverified Commit 5bbb313d authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #7794 from DonLakeFlyer/QGCOptionsComboBox

New QGCOptionsComboBox control
parents cb294031 8689f586
......@@ -123,6 +123,7 @@
<file alias="QGroundControl/Controls/QGCMenuSeparator.qml">src/QmlControls/QGCMenuSeparator.qml</file>
<file alias="QGroundControl/Controls/QGCMouseArea.qml">src/QmlControls/QGCMouseArea.qml</file>
<file alias="QGroundControl/Controls/QGCMovableItem.qml">src/QmlControls/QGCMovableItem.qml</file>
<file alias="QGroundControl/Controls/QGCOptionsComboBox.qml">src/QmlControls/QGCOptionsComboBox.qml</file>
<file alias="QGroundControl/Controls/QGCPipable.qml">src/QmlControls/QGCPipable.qml</file>
<file alias="QGroundControl/Controls/QGCRadioButton.qml">src/QmlControls/QGCRadioButton.qml</file>
<file alias="QGroundControl/Controls/QGCSlider.qml">src/QmlControls/QGCSlider.qml</file>
......
......@@ -7,14 +7,20 @@ import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0
QGCCheckBox {
checkedState: isFactChecked()
property Fact fact: Fact { }
property variant checkedValue: 1
property variant uncheckedValue: 0
checkedState: fact ?
(fact.typeIsBool ?
(fact.value === false ? Qt.Unchecked : Qt.Checked) :
(fact.value === 0 ? Qt.Unchecked : Qt.Checked)) :
Qt.Unchecked
Binding on checkedState {
value: fact ?
(fact.typeIsBool ?
(fact.value === false ? Qt.Unchecked : Qt.Checked) :
(fact.value === 0 ? Qt.Unchecked : Qt.Checked)) :
Qt.Unchecked
}
onClicked: fact.value = (checked ? checkedValue : uncheckedValue)
}
......@@ -42,6 +42,7 @@
{
"id": 22,
"comment": "MAV_CMD_NAV_TAKEOFF",
"description": "Take off from the ground and ascend to specified altitude.",
"specifiesCoordinate": false,
"specifiesAltitudeOnly": true
},
......
......@@ -102,6 +102,8 @@ TransectStyleComplexItem::TransectStyleComplexItem(Vehicle* vehicle, bool flyVie
connect(&_cameraCalc, &CameraCalc::distanceToSurfaceRelativeChanged, this, &TransectStyleComplexItem::coordinateHasRelativeAltitudeChanged);
connect(&_cameraCalc, &CameraCalc::distanceToSurfaceRelativeChanged, this, &TransectStyleComplexItem::exitCoordinateHasRelativeAltitudeChanged);
connect(&_hoverAndCaptureFact, &Fact::rawValueChanged, this, &TransectStyleComplexItem::_handleHoverAndCaptureEnabled);
connect(this, &TransectStyleComplexItem::visualTransectPointsChanged, this, &TransectStyleComplexItem::complexDistanceChanged);
connect(this, &TransectStyleComplexItem::visualTransectPointsChanged, this, &TransectStyleComplexItem::greatestDistanceToChanged);
......@@ -769,3 +771,11 @@ void TransectStyleComplexItem::_followTerrainChanged(bool followTerrain)
_hoverAndCaptureFact.setRawValue(false);
}
}
void TransectStyleComplexItem::_handleHoverAndCaptureEnabled(QVariant enabled)
{
if (enabled.toBool() && _cameraTriggerInTurnAroundFact.rawValue().toBool()) {
qDebug() << "_handleHoverAndCaptureEnabled";
_cameraTriggerInTurnAroundFact.setRawValue(false);
}
}
......@@ -205,6 +205,7 @@ protected:
private slots:
void _reallyQueryTransectsPathHeightInfo(void);
void _followTerrainChanged (bool followTerrain);
void _handleHoverAndCaptureEnabled (QVariant enabled);
private:
void _queryTransectsPathHeightInfo (void);
......
......@@ -916,6 +916,7 @@ Item {
} else {
_planMasterController.removeAllFromVehicle()
}
_missionController.setCurrentPlanViewIndex(0, true)
hideDialog()
}
}
......@@ -927,6 +928,7 @@ Item {
message: qsTr("Are you sure you want to remove all mission items and clear the mission from the vehicle?")
function accept() {
_planMasterController.removeAllFromVehicle()
_missionController.setCurrentPlanViewIndex(0, true)
hideDialog()
}
}
......
......@@ -162,7 +162,9 @@ Rectangle {
cameraCalc: missionItem.cameraCalc
vehicleFlightIsFrontal: true
distanceToSurfaceLabel: qsTr("Altitude")
distanceToSurfaceAltitudeMode: missionItem.followTerrain ? QGroundControl.AltitudeModeAboveTerrain : QGroundControl.AltitudeModeRelative
distanceToSurfaceAltitudeMode: missionItem.followTerrain ?
QGroundControl.AltitudeModeAboveTerrain :
missionItem.cameraCalc.distanceToSurfaceRelative
frontalDistanceLabel: qsTr("Trigger Dist")
sideDistanceLabel: qsTr("Spacing")
usingPreset: _usingPreset
......@@ -235,48 +237,47 @@ Rectangle {
}
*/
FactCheckBox {
text: qsTr("Hover and capture image")
fact: missionItem.hoverAndCapture
visible: missionItem.hoverAndCaptureAllowed
enabled: !missionItem.followTerrain
onClicked: {
if (checked) {
missionItem.cameraTriggerInTurnAround.rawValue = false
QGCOptionsComboBox {
Layout.fillWidth: true
model: [
{
text: qsTr("Hover and capture image"),
fact: missionItem.hoverAndCapture,
enabled: !missionItem.followTerrain,
visible: missionItem.hoverAndCaptureAllowed
},
{
text: qsTr("Refly at 90 deg offset"),
fact: missionItem.refly90Degrees,
enabled: !missionItem.followTerrain,
visible: true
},
{
text: qsTr("Images in turnarounds"),
fact: missionItem.cameraTriggerInTurnAround,
enabled: missionItem.hoverAndCaptureAllowed ? !missionItem.hoverAndCapture.rawValue : true,
visible: true
},
{
text: qsTr("Fly alternate transects"),
fact: missionItem.flyAlternateTransects,
enabled: true,
visible: _vehicle ? (_vehicle.fixedWing || _vehicle.vtol) : false
},
{
text: qsTr("Relative altitude"),
enabled: missionItem.cameraCalc.isManualCamera && !missionItem.followTerrain,
visible: QGroundControl.corePlugin.options.showMissionAbsoluteAltitude || (!missionItem.cameraCalc.distanceToSurfaceRelative && !missionItem.followTerrain),
checked: missionItem.cameraCalc.distanceToSurfaceRelative
}
}
}
FactCheckBox {
text: qsTr("Refly at 90 deg offset")
fact: missionItem.refly90Degrees
enabled: !missionItem.followTerrain
}
FactCheckBox {
text: qsTr("Images in turnarounds")
fact: missionItem.cameraTriggerInTurnAround
enabled: missionItem.hoverAndCaptureAllowed ? !missionItem.hoverAndCapture.rawValue : true
}
]
FactCheckBox {
text: qsTr("Fly alternate transects")
fact: missionItem.flyAlternateTransects
visible: _vehicle ? (_vehicle.fixedWing || _vehicle.vtol) : false
}
QGCCheckBox {
id: relAlt
Layout.alignment: Qt.AlignLeft
text: qsTr("Relative altitude")
checked: missionItem.cameraCalc.distanceToSurfaceRelative
enabled: missionItem.cameraCalc.isManualCamera && !missionItem.followTerrain
visible: QGroundControl.corePlugin.options.showMissionAbsoluteAltitude || (!missionItem.cameraCalc.distanceToSurfaceRelative && !missionItem.followTerrain)
onClicked: missionItem.cameraCalc.distanceToSurfaceRelative = checked
Connections {
target: missionItem.cameraCalc
onDistanceToSurfaceRelativeChanged: relAlt.checked = missionItem.cameraCalc.distanceToSurfaceRelative
onItemClicked: {
if (index == 4) {
missionItem.cameraCalc.distanceToSurfaceRelative = !missionItem.cameraCalc.distanceToSurfaceRelative
console.log(missionItem.cameraCalc.distanceToSurfaceRelative)
}
}
}
}
......
/****************************************************************************
*
* (c) 2009-2019 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
* @file
* @author Gus Grubba <gus@auterion.com>
*/
import QtQuick 2.11
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.11
import QGroundControl.Controls 1.0
import QGroundControl.Palette 1.0
import QGroundControl.ScreenTools 1.0
ComboBox {
id: control
padding: ScreenTools.comboBoxPadding
property string labelText: qsTr("Options")
signal itemClicked(int index)
property var _controlQGCPal: QGCPalette { colorGroupEnabled: enabled }
property bool _flashChecked
property string _flashText
property bool _showFlash: false
background: Rectangle {
implicitWidth: ScreenTools.implicitComboBoxWidth
implicitHeight: ScreenTools.implicitComboBoxHeight
color: _controlQGCPal.window
border.width: enabled ? 1 : 0
border.color: "#999"
}
/*! Adding the Combobox list item to the theme. */
delegate: ItemDelegate {
implicitHeight: modelData.visible ?
(Math.max(background ? background.implicitHeight : 0, Math.max(contentItem.implicitHeight, indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding)) :
0
width: control.width
checkable: true
enabled: modelData.enabled
text: modelData.text
property var _checkedValue: 1
property var _uncheckedValue: 0
property var _itemQGCPal: QGCPalette { colorGroupEnabled: enabled }
property var _control: control
Binding on checked { value: modelData.fact ?
(modelData.fact.typeIsBool ? (modelData.fact.value === false ? Qt.Unchecked : Qt.Checked) : (modelData.fact.value === 0 ? Qt.Unchecked : Qt.Checked)) :
modelData.checked }
contentItem: RowLayout {
spacing: ScreenTools.defaultFontPixelWidth
Rectangle {
height: ScreenTools.defaultFontPixelHeight
width: height
border.color: _itemQGCPal.buttonText
border.width: 1
color: _itemQGCPal.button
QGCColoredImage {
anchors.centerIn: parent
width: parent.width * 0.75
height: width
source: "/qmlimages/checkbox-check.svg"
color: _itemQGCPal.buttonText
mipmap: true
fillMode: Image.PreserveAspectFit
sourceSize.height: height
visible: checked
}
}
Text {
text: modelData.text
color: _itemQGCPal.buttonText
}
}
background: Rectangle {
color: _controlQGCPal.button
}
onClicked: {
if (modelData.fact) {
modelData.fact.value = (checked ? _checkedValue : _uncheckedValue)
} else {
itemClicked(index)
}
_control._flashChecked = checked
_control._flashText = text
_control._showFlash = true
_control.popup.close()
}
}
/*! This defines the label of the button. */
contentItem: Item {
implicitWidth: _showFlash ? flash.implicitWidth : text.implicitWidth
implicitHeight: _showFlash ? flash.implicitHeight : text.implicitHeight
QGCLabel {
id: text
anchors.verticalCenter: parent.verticalCenter
text: labelText
color: _controlQGCPal.text
visible: !_showFlash
}
RowLayout {
id: flash
anchors.verticalCenter: parent.verticalCenter
spacing: ScreenTools.defaultFontPixelWidth
visible: _showFlash
onVisibleChanged: {
if (visible) {
flashTimer.restart()
}
}
Timer {
id: flashTimer
interval: 1500
repeat: false
running: false
onTriggered: _showFlash = false
}
Rectangle {
height: ScreenTools.defaultFontPixelHeight
width: height
border.color: _controlQGCPal.buttonText
border.width: 1
color: _controlQGCPal.window
QGCColoredImage {
anchors.centerIn: parent
width: parent.width * 0.75
height: width
source: "/qmlimages/checkbox-check.svg"
color: _controlQGCPal.text
mipmap: true
fillMode: Image.PreserveAspectFit
sourceSize.height: height
visible: _flashChecked
}
}
Text {
text: _flashText
color: _controlQGCPal.buttonText
}
}
}
}
......@@ -58,6 +58,7 @@ QGCMenuItem 1.0 QGCMenuItem.qml
QGCMenuSeparator 1.0 QGCMenuSeparator.qml
QGCMouseArea 1.0 QGCMouseArea.qml
QGCMovableItem 1.0 QGCMovableItem.qml
QGCOptionsComboBox 1.0 QGCOptionsComboBox.qml
QGCPipable 1.0 QGCPipable.qml
QGCRadioButton 1.0 QGCRadioButton.qml
QGCSlider 1.0 QGCSlider.qml
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment