@ -191,13 +191,18 @@ void SimpleMissionItem::_connectSignals(void)
@@ -191,13 +191,18 @@ void SimpleMissionItem::_connectSignals(void)
// Whenever these properties change the ui model changes as well
connect ( this , & SimpleMissionItem : : commandChanged , this , & SimpleMissionItem : : _rebuildFacts ) ;
connect ( this , & SimpleMissionItem : : rawEditChanged , this , & SimpleMissionItem : : _rebuildFacts ) ;
connect ( this , & SimpleMissionItem : : previousVTOLModeChanged , this , & SimpleMissionItem : : _rebuildFacts ) ;
// The following changes must signal currentVTOLModeChanged to cause a MissionController recalc
connect ( this , & SimpleMissionItem : : commandChanged , this , & SimpleMissionItem : : _signalIfVTOLTransitionCommand ) ;
connect ( & _missionItem . _param1Fact , & Fact : : valueChanged , this , & SimpleMissionItem : : _signalIfVTOLTransitionCommand ) ;
// These fact signals must alway signal out through SimpleMissionItem signals
connect ( & _missionItem . _commandFact , & Fact : : valueChanged , this , & SimpleMissionItem : : _sendCommandChanged ) ;
// Propogate signals from MissionItem up to SimpleMissionItem
connect ( & _missionItem , & MissionItem : : sequenceNumberChanged , this , & SimpleMissionItem : : sequenceNumberChanged ) ;
connect ( & _missionItem , & MissionItem : : specifiedFlightSpeedChanged , this , & SimpleMissionItem : : specifiedFlightSpeedChanged ) ;
connect ( & _missionItem , & MissionItem : : sequenceNumberChanged , this , & SimpleMissionItem : : sequenceNumberChanged ) ;
connect ( & _missionItem , & MissionItem : : specifiedFlightSpeedChanged , this , & SimpleMissionItem : : specifiedFlightSpeedChanged ) ;
}
void SimpleMissionItem : : _setupMetaData ( void )
@ -333,7 +338,7 @@ bool SimpleMissionItem::load(const QJsonObject& json, int sequenceNumber, QStrin
@@ -333,7 +338,7 @@ bool SimpleMissionItem::load(const QJsonObject& json, int sequenceNumber, QStrin
bool SimpleMissionItem : : isStandaloneCoordinate ( void ) const
{
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , ( MAV_CMD ) command ( ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , ( MAV_CMD ) command ( ) ) ;
if ( uiInfo ) {
return uiInfo - > isStandaloneCoordinate ( ) ;
} else {
@ -343,7 +348,7 @@ bool SimpleMissionItem::isStandaloneCoordinate(void) const
@@ -343,7 +348,7 @@ bool SimpleMissionItem::isStandaloneCoordinate(void) const
bool SimpleMissionItem : : specifiesCoordinate ( void ) const
{
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , ( MAV_CMD ) command ( ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , ( MAV_CMD ) command ( ) ) ;
if ( uiInfo ) {
return uiInfo - > specifiesCoordinate ( ) ;
} else {
@ -353,7 +358,7 @@ bool SimpleMissionItem::specifiesCoordinate(void) const
@@ -353,7 +358,7 @@ bool SimpleMissionItem::specifiesCoordinate(void) const
bool SimpleMissionItem : : specifiesAltitudeOnly ( void ) const
{
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , ( MAV_CMD ) command ( ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , ( MAV_CMD ) command ( ) ) ;
if ( uiInfo ) {
return uiInfo - > specifiesAltitudeOnly ( ) ;
} else {
@ -363,7 +368,7 @@ bool SimpleMissionItem::specifiesAltitudeOnly(void) const
@@ -363,7 +368,7 @@ bool SimpleMissionItem::specifiesAltitudeOnly(void) const
QString SimpleMissionItem : : commandDescription ( void ) const
{
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , ( MAV_CMD ) command ( ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , ( MAV_CMD ) command ( ) ) ;
if ( uiInfo ) {
return uiInfo - > description ( ) ;
} else {
@ -374,7 +379,7 @@ QString SimpleMissionItem::commandDescription(void) const
@@ -374,7 +379,7 @@ QString SimpleMissionItem::commandDescription(void) const
QString SimpleMissionItem : : commandName ( void ) const
{
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , ( MAV_CMD ) command ( ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , ( MAV_CMD ) command ( ) ) ;
if ( uiInfo ) {
return uiInfo - > friendlyName ( ) ;
} else {
@ -444,7 +449,7 @@ void SimpleMissionItem::_rebuildTextFieldFacts(void)
@@ -444,7 +449,7 @@ void SimpleMissionItem::_rebuildTextFieldFacts(void)
Fact * rgParamFacts [ 7 ] = { & _missionItem . _param1Fact , & _missionItem . _param2Fact , & _missionItem . _param3Fact , & _missionItem . _param4Fact , & _missionItem . _param5Fact , & _missionItem . _param6Fact , & _missionItem . _param7Fact } ;
FactMetaData * rgParamMetaData [ 7 ] = { & _param1MetaData , & _param2MetaData , & _param3MetaData , & _param4MetaData , & _param5MetaData , & _param6MetaData , & _param7MetaData } ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , command ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , command ) ;
for ( int i = 1 ; i < = 7 ; i + + ) {
bool showUI ;
@ -483,7 +488,7 @@ void SimpleMissionItem::_rebuildNaNFacts(void)
@@ -483,7 +488,7 @@ void SimpleMissionItem::_rebuildNaNFacts(void)
Fact * rgParamFacts [ 7 ] = { & _missionItem . _param1Fact , & _missionItem . _param2Fact , & _missionItem . _param3Fact , & _missionItem . _param4Fact , & _missionItem . _param5Fact , & _missionItem . _param6Fact , & _missionItem . _param7Fact } ;
FactMetaData * rgParamMetaData [ 7 ] = { & _param1MetaData , & _param2MetaData , & _param3MetaData , & _param4MetaData , & _param5MetaData , & _param6MetaData , & _param7MetaData } ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , command ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , command ) ;
for ( int i = 1 ; i < = 7 ; i + + ) {
bool showUI ;
@ -541,7 +546,7 @@ void SimpleMissionItem::_rebuildComboBoxFacts(void)
@@ -541,7 +546,7 @@ void SimpleMissionItem::_rebuildComboBoxFacts(void)
for ( int i = 1 ; i < = 7 ; i + + ) {
bool showUI ;
const MissionCmdParamInfo * paramInfo = _commandTree - > getUIInfo ( _controllerVehicle , command ) - > getParamInfo ( i , showUI ) ;
const MissionCmdParamInfo * paramInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , command ) - > getParamInfo ( i , showUI ) ;
if ( showUI & & paramInfo & & paramInfo - > enumStrings ( ) . count ( ) ! = 0 ) {
Fact * paramFact = rgParamFacts [ i - 1 ] ;
@ -567,7 +572,7 @@ void SimpleMissionItem::_rebuildFacts(void)
@@ -567,7 +572,7 @@ void SimpleMissionItem::_rebuildFacts(void)
bool SimpleMissionItem : : friendlyEditAllowed ( void ) const
{
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , static_cast < MAV_CMD > ( command ( ) ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , static_cast < MAV_CMD > ( command ( ) ) ) ;
if ( uiInfo & & uiInfo - > friendlyEdit ( ) ) {
if ( ! _missionItem . autoContinue ( ) ) {
return false ;
@ -740,7 +745,7 @@ void SimpleMissionItem::_setDefaultsForCommand(void)
@@ -740,7 +745,7 @@ void SimpleMissionItem::_setDefaultsForCommand(void)
}
MAV_CMD command = static_cast < MAV_CMD > ( this - > command ( ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , command ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , command ) ;
if ( uiInfo ) {
for ( int i = 1 ; i < = 7 ; i + + ) {
bool showUI ;
@ -777,7 +782,7 @@ void SimpleMissionItem::_sendFriendlyEditAllowedChanged(void)
@@ -777,7 +782,7 @@ void SimpleMissionItem::_sendFriendlyEditAllowedChanged(void)
QString SimpleMissionItem : : category ( void ) const
{
return _commandTree - > getUIInfo ( _controllerVehicle , static_cast < MAV_CMD > ( command ( ) ) ) - > category ( ) ;
return _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , static_cast < MAV_CMD > ( command ( ) ) ) - > category ( ) ;
}
void SimpleMissionItem : : setCommand ( int command )
@ -920,7 +925,7 @@ void SimpleMissionItem::appendMissionItems(QList<MissionItem*>& items, QObject*
@@ -920,7 +925,7 @@ void SimpleMissionItem::appendMissionItems(QList<MissionItem*>& items, QObject*
void SimpleMissionItem : : applyNewAltitude ( double newAltitude )
{
MAV_CMD command = static_cast < MAV_CMD > ( this - > command ( ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , command ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , command ) ;
if ( uiInfo - > specifiesCoordinate ( ) | | uiInfo - > specifiesAltitudeOnly ( ) ) {
switch ( static_cast < MAV_CMD > ( this - > command ( ) ) ) {
@ -937,8 +942,9 @@ void SimpleMissionItem::applyNewAltitude(double newAltitude)
@@ -937,8 +942,9 @@ void SimpleMissionItem::applyNewAltitude(double newAltitude)
void SimpleMissionItem : : setMissionFlightStatus ( MissionController : : MissionFlightStatus_t & missionFlightStatus )
{
// If speed and/or gimbal are not specifically set on this item. Then use the flight status values as initial defaults should a user turn them on.
VisualMissionItem : : setMissionFlightStatus ( missionFlightStatus ) ;
// If speed and/or gimbal are not specifically set on this item. Then use the flight status values as initial defaults should a user turn them on.
if ( _speedSection - > available ( ) & & ! _speedSection - > specifyFlightSpeed ( ) & & ! qFuzzyCompare ( _speedSection - > flightSpeed ( ) - > rawValue ( ) . toDouble ( ) , missionFlightStatus . vehicleSpeed ) ) {
_speedSection - > flightSpeed ( ) - > setRawValue ( missionFlightStatus . vehicleSpeed ) ;
}
@ -988,7 +994,7 @@ void SimpleMissionItem::_possibleAdditionalTimeDelayChanged(void)
@@ -988,7 +994,7 @@ void SimpleMissionItem::_possibleAdditionalTimeDelayChanged(void)
bool SimpleMissionItem : : isLandCommand ( void ) const
{
MAV_CMD command = static_cast < MAV_CMD > ( this - > command ( ) ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , command ) ;
const MissionCommandUIInfo * uiInfo = _commandTree - > getUIInfo ( _controllerVehicle , _previousVTOLMode , command ) ;
return uiInfo - > isLandCommand ( ) ;
}
@ -1019,3 +1025,11 @@ double SimpleMissionItem::amslEntryAlt(void) const
@@ -1019,3 +1025,11 @@ double SimpleMissionItem::amslEntryAlt(void) const
qWarning ( ) < < " Internal Error SimpleMissionItem::amslEntryAlt: Invalid altitudeMode: " < < _altitudeMode ;
return qQNaN ( ) ;
}
void SimpleMissionItem : : _signalIfVTOLTransitionCommand ( void )
{
if ( mavCommand ( ) = = MAV_CMD_DO_VTOL_TRANSITION ) {
// This will cause a MissionController recalc
emit currentVTOLModeChanged ( ) ;
}
}