From 2d00726c6bbc122e75d8f93953859a1c26c4134e Mon Sep 17 00:00:00 2001 From: Nate Weibley Date: Wed, 16 Mar 2016 11:22:27 -0400 Subject: [PATCH] Add support for customizing the abbreviated representation of mission items for #3000 --- src/FlightMap/MapItems/MissionItemIndicator.qml | 2 +- src/MissionEditor/MissionItemStatus.qml | 2 +- src/MissionManager/ComplexMissionItem.h | 1 + src/MissionManager/ComplexMissionItemTest.cc | 1 + src/MissionManager/ComplexMissionItemTest.h | 1 + src/MissionManager/SimpleMissionItem.cc | 16 ++++++++++++++++ src/MissionManager/SimpleMissionItem.h | 1 + src/MissionManager/VisualMissionItem.h | 3 +++ src/QmlControls/MissionItemEditor.qml | 2 +- 9 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/FlightMap/MapItems/MissionItemIndicator.qml b/src/FlightMap/MapItems/MissionItemIndicator.qml index efba9e15a..e5eeb3932 100644 --- a/src/FlightMap/MapItems/MissionItemIndicator.qml +++ b/src/FlightMap/MapItems/MissionItemIndicator.qml @@ -44,7 +44,7 @@ MapQuickItem { MissionItemIndexLabel { id: _label isCurrentItem: _isCurrentItem - label: sequenceNumber == 0 ? "H" : sequenceNumber + label: missionItem.abbreviation onClicked: _item.clicked() property bool _isCurrentItem: missionItem ? missionItem.isCurrentItem : false diff --git a/src/MissionEditor/MissionItemStatus.qml b/src/MissionEditor/MissionItemStatus.qml index b8436ae07..9accb9c7f 100644 --- a/src/MissionEditor/MissionItemStatus.qml +++ b/src/MissionEditor/MissionItemStatus.qml @@ -127,7 +127,7 @@ Rectangle { y: availableHeight - (availableHeight * object.altPercent) small: true isCurrentItem: object.isCurrentItem - label: object.homePosition ? "H" : object.sequenceNumber + label: object.abbreviation visible: object.relativeAltitude ? true : (object.homePosition || graphAbsolute) } diff --git a/src/MissionManager/ComplexMissionItem.h b/src/MissionManager/ComplexMissionItem.h index 37cbb9903..c91da6bfe 100644 --- a/src/MissionManager/ComplexMissionItem.h +++ b/src/MissionManager/ComplexMissionItem.h @@ -80,6 +80,7 @@ public: bool specifiesCoordinate (void) const final; QString commandDescription (void) const final { return "Survey"; } QString commandName (void) const final { return "Survey"; } + QString abbreviation (void) const final { return "S"; } QGeoCoordinate coordinate (void) const final { return _coordinate; } QGeoCoordinate exitCoordinate (void) const final { return _exitCoordinate; } int sequenceNumber (void) const final { return _sequenceNumber; } diff --git a/src/MissionManager/ComplexMissionItemTest.cc b/src/MissionManager/ComplexMissionItemTest.cc index b86c26bb6..334c7200a 100644 --- a/src/MissionManager/ComplexMissionItemTest.cc +++ b/src/MissionManager/ComplexMissionItemTest.cc @@ -43,6 +43,7 @@ void ComplexMissionItemTest::init(void) _rgComplexMissionItemSignals[azimuthChangedIndex] = SIGNAL(azimuthChanged(double)); _rgComplexMissionItemSignals[commandDescriptionChangedIndex] = SIGNAL(commandDescriptionChanged()); _rgComplexMissionItemSignals[commandNameChangedIndex] = SIGNAL(commandNameChanged()); + _rgComplexMissionItemSignals[abbreviationChangedIndex] = SIGNAL(abbreviationChanged()); _rgComplexMissionItemSignals[coordinateChangedIndex] = SIGNAL(coordinateChanged(const QGeoCoordinate&)); _rgComplexMissionItemSignals[exitCoordinateChangedIndex] = SIGNAL(exitCoordinateChanged(const QGeoCoordinate&)); _rgComplexMissionItemSignals[dirtyChangedIndex] = SIGNAL(dirtyChanged(bool)); diff --git a/src/MissionManager/ComplexMissionItemTest.h b/src/MissionManager/ComplexMissionItemTest.h index fef342046..2e30beb17 100644 --- a/src/MissionManager/ComplexMissionItemTest.h +++ b/src/MissionManager/ComplexMissionItemTest.h @@ -62,6 +62,7 @@ private: azimuthChangedIndex, commandDescriptionChangedIndex, commandNameChangedIndex, + abbreviationChangedIndex, coordinateChangedIndex, exitCoordinateChangedIndex, dirtyChangedIndex, diff --git a/src/MissionManager/SimpleMissionItem.cc b/src/MissionManager/SimpleMissionItem.cc index a93e707d9..502bb9bed 100644 --- a/src/MissionManager/SimpleMissionItem.cc +++ b/src/MissionManager/SimpleMissionItem.cc @@ -180,6 +180,7 @@ void SimpleMissionItem::_connectSignals(void) connect(&_missionItem._commandFact, &Fact::valueChanged, this, &SimpleMissionItem::setDefaultsForCommand); connect(&_missionItem._commandFact, &Fact::valueChanged, this, &SimpleMissionItem::commandNameChanged); connect(&_missionItem._commandFact, &Fact::valueChanged, this, &SimpleMissionItem::commandDescriptionChanged); + connect(&_missionItem._commandFact, &Fact::valueChanged, this, &SimpleMissionItem::abbreviationChanged); connect(&_missionItem._commandFact, &Fact::valueChanged, this, &SimpleMissionItem::specifiesCoordinateChanged); connect(&_missionItem._commandFact, &Fact::valueChanged, this, &SimpleMissionItem::isStandaloneCoordinateChanged); @@ -303,6 +304,21 @@ QString SimpleMissionItem::commandName(void) const } } +QString SimpleMissionItem::abbreviation() const +{ + if (homePosition()) + return QStringLiteral("H"); + + switch(command()) { + default: + return QString::number(sequenceNumber()); + case MavlinkQmlSingleton::MAV_CMD_NAV_TAKEOFF: + return QStringLiteral("T"); + case MavlinkQmlSingleton::MAV_CMD_NAV_LAND: + return QStringLiteral("L"); + } +} + void SimpleMissionItem::_clearParamMetaData(void) { _param1MetaData.setRawUnits(""); diff --git a/src/MissionManager/SimpleMissionItem.h b/src/MissionManager/SimpleMissionItem.h index 88c243fb2..077561877 100644 --- a/src/MissionManager/SimpleMissionItem.h +++ b/src/MissionManager/SimpleMissionItem.h @@ -99,6 +99,7 @@ public: bool specifiesCoordinate (void) const final; QString commandDescription (void) const final; QString commandName (void) const final; + QString abbreviation (void) const final; QGeoCoordinate coordinate (void) const final { return _missionItem.coordinate(); } QGeoCoordinate exitCoordinate (void) const final { return coordinate(); } int sequenceNumber (void) const final { return _missionItem.sequenceNumber(); } diff --git a/src/MissionManager/VisualMissionItem.h b/src/MissionManager/VisualMissionItem.h index d682ade1d..490c32c12 100644 --- a/src/MissionManager/VisualMissionItem.h +++ b/src/MissionManager/VisualMissionItem.h @@ -81,6 +81,7 @@ public: Q_PROPERTY(QString commandDescription READ commandDescription NOTIFY commandDescriptionChanged) Q_PROPERTY(QString commandName READ commandName NOTIFY commandNameChanged) + Q_PROPERTY(QString abbreviation READ abbreviation NOTIFY abbreviationChanged) Q_PROPERTY(bool dirty READ dirty WRITE setDirty NOTIFY dirtyChanged) ///< Item is dirty and requires save/send Q_PROPERTY(bool isCurrentItem READ isCurrentItem WRITE setIsCurrentItem NOTIFY isCurrentItemChanged) Q_PROPERTY(int sequenceNumber READ sequenceNumber WRITE setSequenceNumber NOTIFY sequenceNumberChanged) @@ -118,6 +119,7 @@ public: virtual bool specifiesCoordinate (void) const = 0; virtual QString commandDescription (void) const = 0; virtual QString commandName (void) const = 0; + virtual QString abbreviation (void) const = 0; virtual QGeoCoordinate coordinate (void) const = 0; virtual QGeoCoordinate exitCoordinate (void) const = 0; virtual int sequenceNumber (void) const = 0; @@ -140,6 +142,7 @@ signals: void azimuthChanged (double azimuth); void commandDescriptionChanged (void); void commandNameChanged (void); + void abbreviationChanged (void); void coordinateChanged (const QGeoCoordinate& coordinate); void exitCoordinateChanged (const QGeoCoordinate& exitCoordinate); void dirtyChanged (bool dirty); diff --git a/src/QmlControls/MissionItemEditor.qml b/src/QmlControls/MissionItemEditor.qml index 8929915be..d55acf653 100644 --- a/src/QmlControls/MissionItemEditor.qml +++ b/src/QmlControls/MissionItemEditor.qml @@ -51,7 +51,7 @@ Rectangle { anchors.verticalCenter: commandPicker.verticalCenter anchors.leftMargin: _margin anchors.left: parent.left - text: missionItem.sequenceNumber == 0 ? "H" : missionItem.sequenceNumber + text: missionItem.abbreviation color: _outerTextColor } -- 2.22.0