Commit 7e320ebd authored by Gus Grubba's avatar Gus Grubba
Browse files

Merge branch 'master' of https://github.com/mavlink/qgroundcontrol into camControl

parents 26b3b8d0 8a23979e
...@@ -109,6 +109,7 @@ ...@@ -109,6 +109,7 @@
<file alias="compassInstrumentDial.svg">src/FlightMap/Images/compassInstrumentDial.svg</file> <file alias="compassInstrumentDial.svg">src/FlightMap/Images/compassInstrumentDial.svg</file>
<file alias="crossHair.svg">src/FlightMap/Images/crossHair.svg</file> <file alias="crossHair.svg">src/FlightMap/Images/crossHair.svg</file>
<file alias="PiP.svg">src/FlightMap/Images/PiP.svg</file> <file alias="PiP.svg">src/FlightMap/Images/PiP.svg</file>
<file alias="pipResize.svg">src/FlightMap/Images/pipResize.svg</file>
<file alias="rollDialWhite.svg">src/FlightMap/Images/rollDialWhite.svg</file> <file alias="rollDialWhite.svg">src/FlightMap/Images/rollDialWhite.svg</file>
<file alias="rollPointerWhite.svg">src/FlightMap/Images/rollPointerWhite.svg</file> <file alias="rollPointerWhite.svg">src/FlightMap/Images/rollPointerWhite.svg</file>
<file alias="scale.png">src/FlightMap/Images/scale.png</file> <file alias="scale.png">src/FlightMap/Images/scale.png</file>
......
...@@ -527,6 +527,7 @@ HEADERS += \ ...@@ -527,6 +527,7 @@ HEADERS += \
src/MissionManager/SimpleMissionItem.h \ src/MissionManager/SimpleMissionItem.h \
src/MissionManager/Section.h \ src/MissionManager/Section.h \
src/MissionManager/SpeedSection.h \ src/MissionManager/SpeedSection.h \
src/MissionManager/StructureScanComplexItem.h \
src/MissionManager/SurveyMissionItem.h \ src/MissionManager/SurveyMissionItem.h \
src/MissionManager/VisualMissionItem.h \ src/MissionManager/VisualMissionItem.h \
src/PositionManager/PositionManager.h \ src/PositionManager/PositionManager.h \
...@@ -713,6 +714,7 @@ SOURCES += \ ...@@ -713,6 +714,7 @@ SOURCES += \
src/MissionManager/RallyPointManager.cc \ src/MissionManager/RallyPointManager.cc \
src/MissionManager/SimpleMissionItem.cc \ src/MissionManager/SimpleMissionItem.cc \
src/MissionManager/SpeedSection.cc \ src/MissionManager/SpeedSection.cc \
src/MissionManager/StructureScanComplexItem.cc \
src/MissionManager/SurveyMissionItem.cc \ src/MissionManager/SurveyMissionItem.cc \
src/MissionManager/VisualMissionItem.cc \ src/MissionManager/VisualMissionItem.cc \
src/PositionManager/PositionManager.cpp \ src/PositionManager/PositionManager.cpp \
......
...@@ -115,6 +115,7 @@ ...@@ -115,6 +115,7 @@
<file alias="QGroundControl/Controls/SignalStrength.qml">src/ui/toolbar/SignalStrength.qml</file> <file alias="QGroundControl/Controls/SignalStrength.qml">src/ui/toolbar/SignalStrength.qml</file>
<file alias="QGroundControl/Controls/SimpleItemMapVisual.qml">src/PlanView/SimpleItemMapVisual.qml</file> <file alias="QGroundControl/Controls/SimpleItemMapVisual.qml">src/PlanView/SimpleItemMapVisual.qml</file>
<file alias="QGroundControl/Controls/SliderSwitch.qml">src/QmlControls/SliderSwitch.qml</file> <file alias="QGroundControl/Controls/SliderSwitch.qml">src/QmlControls/SliderSwitch.qml</file>
<file alias="QGroundControl/Controls/StructureScanMapVisual.qml">src/PlanView/StructureScanMapVisual.qml</file>
<file alias="QGroundControl/Controls/SubMenuButton.qml">src/QmlControls/SubMenuButton.qml</file> <file alias="QGroundControl/Controls/SubMenuButton.qml">src/QmlControls/SubMenuButton.qml</file>
<file alias="QGroundControl/Controls/SurveyMapVisual.qml">src/PlanView/SurveyMapVisual.qml</file> <file alias="QGroundControl/Controls/SurveyMapVisual.qml">src/PlanView/SurveyMapVisual.qml</file>
<file alias="QGroundControl/Controls/VehicleRotationCal.qml">src/QmlControls/VehicleRotationCal.qml</file> <file alias="QGroundControl/Controls/VehicleRotationCal.qml">src/QmlControls/VehicleRotationCal.qml</file>
...@@ -179,7 +180,7 @@ ...@@ -179,7 +180,7 @@
<file alias="SetupParameterEditor.qml">src/VehicleSetup/SetupParameterEditor.qml</file> <file alias="SetupParameterEditor.qml">src/VehicleSetup/SetupParameterEditor.qml</file>
<file alias="SetupView.qml">src/VehicleSetup/SetupView.qml</file> <file alias="SetupView.qml">src/VehicleSetup/SetupView.qml</file>
<file alias="SimpleItemEditor.qml">src/PlanView/SimpleItemEditor.qml</file> <file alias="SimpleItemEditor.qml">src/PlanView/SimpleItemEditor.qml</file>
<file alias="SurveyItemEditor.qml">src/PlanView/SurveyItemEditor.qml</file> <file alias="StructureScanEditor.qml">src/PlanView/StructureScanEditor.qml</file>
<file alias="FWLandingPatternEditor.qml">src/PlanView/FWLandingPatternEditor.qml</file> <file alias="FWLandingPatternEditor.qml">src/PlanView/FWLandingPatternEditor.qml</file>
<file alias="MissionSettingsEditor.qml">src/PlanView/MissionSettingsEditor.qml</file> <file alias="MissionSettingsEditor.qml">src/PlanView/MissionSettingsEditor.qml</file>
<file alias="TcpSettings.qml">src/ui/preferences/TcpSettings.qml</file> <file alias="TcpSettings.qml">src/ui/preferences/TcpSettings.qml</file>
...@@ -206,6 +207,7 @@ ...@@ -206,6 +207,7 @@
<file alias="QGCMapCircle.Facts.json">src/MissionManager/QGCMapCircle.Facts.json</file> <file alias="QGCMapCircle.Facts.json">src/MissionManager/QGCMapCircle.Facts.json</file>
<file alias="RTK.SettingsGroup.json">src/Settings/RTK.SettingsGroup.json</file> <file alias="RTK.SettingsGroup.json">src/Settings/RTK.SettingsGroup.json</file>
<file alias="Survey.SettingsGroup.json">src/MissionManager/Survey.SettingsGroup.json</file> <file alias="Survey.SettingsGroup.json">src/MissionManager/Survey.SettingsGroup.json</file>
<file alias="StructureScan.SettingsGroup.json">src/MissionManager/StructureScan.SettingsGroup.json</file>
<file alias="Units.SettingsGroup.json">src/Settings/Units.SettingsGroup.json</file> <file alias="Units.SettingsGroup.json">src/Settings/Units.SettingsGroup.json</file>
<file alias="Video.SettingsGroup.json">src/Settings/Video.SettingsGroup.json</file> <file alias="Video.SettingsGroup.json">src/Settings/Video.SettingsGroup.json</file>
<file alias="RallyPoint.FactMetaData.json">src/MissionManager/RallyPoint.FactMetaData.json</file> <file alias="RallyPoint.FactMetaData.json">src/MissionManager/RallyPoint.FactMetaData.json</file>
......
...@@ -173,7 +173,7 @@ LogDownloadController::_logEntry(UASInterface* uas, uint32_t time_utc, uint32_t ...@@ -173,7 +173,7 @@ LogDownloadController::_logEntry(UASInterface* uas, uint32_t time_utc, uint32_t
//-- Update this log record //-- Update this log record
if(num_logs > 0) { if(num_logs > 0) {
//-- Skip if empty (APM first packet) //-- Skip if empty (APM first packet)
if(size) { if(size || _vehicle->firmwareType() != MAV_AUTOPILOT_ARDUPILOTMEGA) {
id -= _apmOneBased; id -= _apmOneBased;
if(id < _logEntriesModel.count()) { if(id < _logEntriesModel.count()) {
QGCLogEntry* entry = _logEntriesModel[id]; QGCLogEntry* entry = _logEntriesModel[id];
......
...@@ -36,7 +36,7 @@ int ULogParser::sizeOfType(QString& typeName) ...@@ -36,7 +36,7 @@ int ULogParser::sizeOfType(QString& typeName)
return 1; return 1;
} }
qWarning() << "Unkown type in ULog : " << typeName; qWarning() << "Unknown type in ULog : " << typeName;
return 0; return 0;
} }
......
...@@ -68,6 +68,7 @@ const char* FactMetaData::_shortDescriptionJsonKey = "shortDescription"; ...@@ -68,6 +68,7 @@ const char* FactMetaData::_shortDescriptionJsonKey = "shortDescription";
const char* FactMetaData::_longDescriptionJsonKey = "longDescription"; const char* FactMetaData::_longDescriptionJsonKey = "longDescription";
const char* FactMetaData::_unitsJsonKey = "units"; const char* FactMetaData::_unitsJsonKey = "units";
const char* FactMetaData::_defaultValueJsonKey = "defaultValue"; const char* FactMetaData::_defaultValueJsonKey = "defaultValue";
const char* FactMetaData::_mobileDefaultValueJsonKey = "mobileDefaultValue";
const char* FactMetaData::_minJsonKey = "min"; const char* FactMetaData::_minJsonKey = "min";
const char* FactMetaData::_maxJsonKey = "max"; const char* FactMetaData::_maxJsonKey = "max";
const char* FactMetaData::_hasControlJsonKey = "control"; const char* FactMetaData::_hasControlJsonKey = "control";
...@@ -971,9 +972,17 @@ FactMetaData* FactMetaData::createFromJsonObject(const QJsonObject& json, QObjec ...@@ -971,9 +972,17 @@ FactMetaData* FactMetaData::createFromJsonObject(const QJsonObject& json, QObjec
if (json.contains(_unitsJsonKey)) { if (json.contains(_unitsJsonKey)) {
metaData->setRawUnits(json[_unitsJsonKey].toString()); metaData->setRawUnits(json[_unitsJsonKey].toString());
} }
#ifdef __mobile__
if (json.contains(_mobileDefaultValueJsonKey)) {
metaData->setRawDefaultValue(json[_mobileDefaultValueJsonKey].toVariant());
} else if (json.contains(_defaultValueJsonKey)) {
metaData->setRawDefaultValue(json[_defaultValueJsonKey].toVariant());
}
#else
if (json.contains(_defaultValueJsonKey)) { if (json.contains(_defaultValueJsonKey)) {
metaData->setRawDefaultValue(json[_defaultValueJsonKey].toVariant()); metaData->setRawDefaultValue(json[_defaultValueJsonKey].toVariant());
} }
#endif
if (json.contains(_minJsonKey)) { if (json.contains(_minJsonKey)) {
QVariant typedValue; QVariant typedValue;
QString errorString; QString errorString;
......
...@@ -260,6 +260,7 @@ private: ...@@ -260,6 +260,7 @@ private:
static const char* _longDescriptionJsonKey; static const char* _longDescriptionJsonKey;
static const char* _unitsJsonKey; static const char* _unitsJsonKey;
static const char* _defaultValueJsonKey; static const char* _defaultValueJsonKey;
static const char* _mobileDefaultValueJsonKey;
static const char* _minJsonKey; static const char* _minJsonKey;
static const char* _maxJsonKey; static const char* _maxJsonKey;
static const char* _hasControlJsonKey; static const char* _hasControlJsonKey;
......
...@@ -162,12 +162,10 @@ bool APMFirmwarePlugin::isCapable(const Vehicle* vehicle, FirmwareCapabilities c ...@@ -162,12 +162,10 @@ bool APMFirmwarePlugin::isCapable(const Vehicle* vehicle, FirmwareCapabilities c
uint32_t available = SetFlightModeCapability | PauseVehicleCapability | GuidedModeCapability; uint32_t available = SetFlightModeCapability | PauseVehicleCapability | GuidedModeCapability;
if (vehicle->multiRotor()) { if (vehicle->multiRotor()) {
available |= TakeoffVehicleCapability; available |= TakeoffVehicleCapability;
} else if (vehicle->fixedWing()) { } else if (vehicle->fixedWing() || vehicle->vtol()) {
// Quad plane supports takeoff // Due to the way ArduPilot marks a vtol aircraft, we don't know if something is a vtol at initial connection.
if (vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, QStringLiteral("Q_ENABLE")) && // So we always enabled takeoff for fixed wing.
vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, QStringLiteral("Q_ENABLE"))->rawValue().toBool()) { available |= TakeoffVehicleCapability;
available |= TakeoffVehicleCapability;
}
} }
return (capabilities & available) == capabilities; return (capabilities & available) == capabilities;
...@@ -908,6 +906,11 @@ void APMFirmwarePlugin::guidedModeTakeoff(Vehicle* vehicle) ...@@ -908,6 +906,11 @@ void APMFirmwarePlugin::guidedModeTakeoff(Vehicle* vehicle)
bool APMFirmwarePlugin::_guidedModeTakeoff(Vehicle* vehicle) bool APMFirmwarePlugin::_guidedModeTakeoff(Vehicle* vehicle)
{ {
if (!vehicle->multiRotor() && !vehicle->vtol()) {
qgcApp()->showMessage(tr("Vehicle does not support guided takeoff"));
return false;
}
QString takeoffAltParam(vehicle->vtol() ? QStringLiteral("Q_RTL_ALT") : QStringLiteral("PILOT_TKOFF_ALT")); QString takeoffAltParam(vehicle->vtol() ? QStringLiteral("Q_RTL_ALT") : QStringLiteral("PILOT_TKOFF_ALT"));
float paramDivisor = vehicle->vtol() ? 1.0 : 100.0; // PILOT_TAKEOFF_ALT is in centimeters float paramDivisor = vehicle->vtol() ? 1.0 : 100.0; // PILOT_TAKEOFF_ALT is in centimeters
...@@ -965,6 +968,8 @@ void APMFirmwarePlugin::startMission(Vehicle* vehicle) ...@@ -965,6 +968,8 @@ void APMFirmwarePlugin::startMission(Vehicle* vehicle)
qgcApp()->showMessage(QStringLiteral("Unable to start mission. Vehicle takeoff failed.")); qgcApp()->showMessage(QStringLiteral("Unable to start mission. Vehicle takeoff failed."));
return; return;
} }
} else {
return;
} }
} }
......
...@@ -49,7 +49,7 @@ QGCView { ...@@ -49,7 +49,7 @@ QGCView {
property bool _isPipVisible: QGroundControl.videoManager.hasVideo ? QGroundControl.loadBoolGlobalSetting(_PIPVisibleKey, true) : false property bool _isPipVisible: QGroundControl.videoManager.hasVideo ? QGroundControl.loadBoolGlobalSetting(_PIPVisibleKey, true) : false
property real _savedZoomLevel: 0 property real _savedZoomLevel: 0
property real _margins: ScreenTools.defaultFontPixelWidth / 2 property real _margins: ScreenTools.defaultFontPixelWidth / 2
property real _pipSize: mainWindow.width * 0.2 property real _pipSize: flightView.width * 0.2
property alias _guidedController: guidedActionsController property alias _guidedController: guidedActionsController
property alias _altitudeSlider: altitudeSlider property alias _altitudeSlider: altitudeSlider
...@@ -287,6 +287,9 @@ QGCView { ...@@ -287,6 +287,9 @@ QGCView {
onHideIt: { onHideIt: {
setPipVisibility(!state) setPipVisibility(!state)
} }
onNewWidth: {
_pipSize = newWidth
}
} }
Row { Row {
......
...@@ -42,8 +42,7 @@ Item { ...@@ -42,8 +42,7 @@ Item {
if(ScreenTools.isMobile) { if(ScreenTools.isMobile) {
return ScreenTools.isTinyScreen ? mainWindow.width * 0.2 : mainWindow.width * 0.15 return ScreenTools.isTinyScreen ? mainWindow.width * 0.2 : mainWindow.width * 0.15
} }
var w = mainWindow.width * 0.15 return ScreenTools.defaultFontPixelWidth * 30
return Math.min(w, 200)
} }
function _setInstrumentWidget() { function _setInstrumentWidget() {
......
This diff is collapsed.
...@@ -75,6 +75,8 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC ...@@ -75,6 +75,8 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC
_rgButtonValues[i] = false; _rgButtonValues[i] = false;
} }
_updateTXModeSettingsKey(_multiVehicleManager->activeVehicle());
_loadSettings(); _loadSettings();
connect(_multiVehicleManager, &MultiVehicleManager::activeVehicleChanged, this, &Joystick::_activeVehicleChanged); connect(_multiVehicleManager, &MultiVehicleManager::activeVehicleChanged, this, &Joystick::_activeVehicleChanged);
...@@ -119,7 +121,7 @@ void Joystick::_setDefaultCalibration(void) { ...@@ -119,7 +121,7 @@ void Joystick::_setDefaultCalibration(void) {
_saveSettings(); _saveSettings();
} }
void Joystick::_activeVehicleChanged(Vehicle *activeVehicle) void Joystick::_updateTXModeSettingsKey(Vehicle* activeVehicle)
{ {
if(activeVehicle) { if(activeVehicle) {
if(activeVehicle->fixedWing()) { if(activeVehicle->fixedWing()) {
...@@ -137,7 +139,16 @@ void Joystick::_activeVehicleChanged(Vehicle *activeVehicle) ...@@ -137,7 +139,16 @@ void Joystick::_activeVehicleChanged(Vehicle *activeVehicle)
qWarning() << "No valid joystick TXmode settings key for selected vehicle"; qWarning() << "No valid joystick TXmode settings key for selected vehicle";
return; return;
} }
} else {
_txModeSettingsKey = NULL;
}
}
void Joystick::_activeVehicleChanged(Vehicle* activeVehicle)
{
_updateTXModeSettingsKey(activeVehicle);
if(activeVehicle) {
QSettings settings; QSettings settings;
settings.beginGroup(_settingsGroup); settings.beginGroup(_settingsGroup);
int mode = settings.value(_txModeSettingsKey, activeVehicle->firmwarePlugin()->defaultJoystickTXMode()).toInt(); int mode = settings.value(_txModeSettingsKey, activeVehicle->firmwarePlugin()->defaultJoystickTXMode()).toInt();
...@@ -152,8 +163,10 @@ void Joystick::_loadSettings(void) ...@@ -152,8 +163,10 @@ void Joystick::_loadSettings(void)
settings.beginGroup(_settingsGroup); settings.beginGroup(_settingsGroup);
if(_txModeSettingsKey) Vehicle* activeVehicle = _multiVehicleManager->activeVehicle();
_transmitterMode = settings.value(_txModeSettingsKey, 2).toInt();
if(_txModeSettingsKey && activeVehicle)
_transmitterMode = settings.value(_txModeSettingsKey, activeVehicle->firmwarePlugin()->defaultJoystickTXMode()).toInt();
settings.beginGroup(_name); settings.beginGroup(_name);
......
...@@ -181,6 +181,7 @@ private: ...@@ -181,6 +181,7 @@ private:
virtual int _getAxis(int i) = 0; virtual int _getAxis(int i) = 0;
virtual uint8_t _getHat(int hat,int i) = 0; virtual uint8_t _getHat(int hat,int i) = 0;
void _updateTXModeSettingsKey(Vehicle* activeVehicle);
int _mapFunctionMode(int mode, int function); int _mapFunctionMode(int mode, int function);
void _remapAxes(int currentMode, int newMode, int (&newMapping)[maxFunction]); void _remapAxes(int currentMode, int newMode, int (&newMapping)[maxFunction]);
......
...@@ -65,7 +65,7 @@ QMap<QString, Joystick*> JoystickSDL::discover(MultiVehicleManager* _multiVehicl ...@@ -65,7 +65,7 @@ QMap<QString, Joystick*> JoystickSDL::discover(MultiVehicleManager* _multiVehicl
qCDebug(JoystickLog) << "\t" << name << "axes:" << axisCount << "buttons:" << buttonCount << "hats:" << hatCount << "isGC:" << isGameController; qCDebug(JoystickLog) << "\t" << name << "axes:" << axisCount << "buttons:" << buttonCount << "hats:" << hatCount << "isGC:" << isGameController;
// Check for joysticks with duplicate names and differentiate the keys when neccessary. // Check for joysticks with duplicate names and differentiate the keys when necessary.
// This is required when using an Xbox 360 wireless receiver that always identifies as // This is required when using an Xbox 360 wireless receiver that always identifies as
// 4 individual joysticks, regardless of how many joysticks are actually connected to the // 4 individual joysticks, regardless of how many joysticks are actually connected to the
// receiver. Using GUID does not help, all of these devices present the same GUID. // receiver. Using GUID does not help, all of these devices present the same GUID.
......
...@@ -24,6 +24,7 @@ public: ...@@ -24,6 +24,7 @@ public:
Q_PROPERTY(double complexDistance READ complexDistance NOTIFY complexDistanceChanged) Q_PROPERTY(double complexDistance READ complexDistance NOTIFY complexDistanceChanged)
/// @return The distance covered the complex mission item in meters. /// @return The distance covered the complex mission item in meters.
/// Signals complexDistanceChanged
virtual double complexDistance(void) const = 0; virtual double complexDistance(void) const = 0;
/// @return Amount of additional time delay in seconds needed to fly the complex item /// @return Amount of additional time delay in seconds needed to fly the complex item
...@@ -39,6 +40,7 @@ public: ...@@ -39,6 +40,7 @@ public:
/// Get the point of complex mission item furthest away from a coordinate /// Get the point of complex mission item furthest away from a coordinate
/// @param other QGeoCoordinate to which distance is calculated /// @param other QGeoCoordinate to which distance is calculated
/// @return the greatest distance from any point of the complex item to some coordinate /// @return the greatest distance from any point of the complex item to some coordinate
/// Signals greatestDistanceToChanged
virtual double greatestDistanceTo(const QGeoCoordinate &other) const = 0; virtual double greatestDistanceTo(const QGeoCoordinate &other) const = 0;
/// This mission item attribute specifies the type of the complex item. /// This mission item attribute specifies the type of the complex item.
...@@ -46,6 +48,7 @@ public: ...@@ -46,6 +48,7 @@ public:
signals: signals:
void complexDistanceChanged (double complexDistance); void complexDistanceChanged (double complexDistance);
void greatestDistanceToChanged (void);
void additionalTimeDelayChanged (double additionalTimeDelay); void additionalTimeDelayChanged (double additionalTimeDelay);
}; };
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "SimpleMissionItem.h" #include "SimpleMissionItem.h"
#include "SurveyMissionItem.h" #include "SurveyMissionItem.h"
#include "FixedWingLandingComplexItem.h" #include "FixedWingLandingComplexItem.h"
#include "StructureScanComplexItem.h"
#include "JsonHelper.h" #include "JsonHelper.h"
#include "ParameterManager.h" #include "ParameterManager.h"
#include "QGroundControlQmlGlobal.h" #include "QGroundControlQmlGlobal.h"
...@@ -60,6 +61,7 @@ MissionController::MissionController(PlanMasterController* masterController, QOb ...@@ -60,6 +61,7 @@ MissionController::MissionController(PlanMasterController* masterController, QOb
, _itemsRequested(false) , _itemsRequested(false)
, _surveyMissionItemName(tr("Survey")) , _surveyMissionItemName(tr("Survey"))
, _fwLandingMissionItemName(tr("Fixed Wing Landing")) , _fwLandingMissionItemName(tr("Fixed Wing Landing"))
, _structureScanMissionItemName(tr("Structure Scan"))
, _appSettings(qgcApp()->toolbox()->settingsManager()->appSettings()) , _appSettings(qgcApp()->toolbox()->settingsManager()->appSettings())
, _progressPct(0) , _progressPct(0)
{ {
...@@ -283,11 +285,11 @@ void MissionController::convertToKMLDocument(QDomDocument& document) ...@@ -283,11 +285,11 @@ void MissionController::convertToKMLDocument(QDomDocument& document)
qgcApp()->toolbox()->missionCommandTree()->getUIInfo(_controllerVehicle, item->command()); qgcApp()->toolbox()->missionCommandTree()->getUIInfo(_controllerVehicle, item->command());
if (uiInfo && uiInfo->specifiesCoordinate() && !uiInfo->isStandaloneCoordinate()) { if (uiInfo && uiInfo->specifiesCoordinate() && !uiInfo->isStandaloneCoordinate()) {
coord = QString::number(item->param6()) \ coord = QString::number(item->param6(),'f',7) \
+ "," \ + "," \
+ QString::number(item->param5()) \ + QString::number(item->param5(),'f',7) \
+ "," \ + "," \
+ QString::number(item->param7() + altitude); + QString::number(item->param7() + altitude,'f',2);
coords.append(coord); coords.append(coord);
} }
} }
...@@ -379,6 +381,8 @@ int MissionController::insertComplexMissionItem(QString itemName, QGeoCoordinate ...@@ -379,6 +381,8 @@ int MissionController::insertComplexMissionItem(QString itemName, QGeoCoordinate
} }
} else if (itemName == _fwLandingMissionItemName) { } else if (itemName == _fwLandingMissionItemName) {
newItem = new FixedWingLandingComplexItem(_controllerVehicle, _visualItems); newItem = new FixedWingLandingComplexItem(_controllerVehicle, _visualItems);
} else if (itemName == _structureScanMissionItemName) {
newItem = new StructureScanComplexItem(_controllerVehicle, _visualItems);
} else { } else {
qWarning() << "Internal error: Unknown complex item:" << itemName; qWarning() << "Internal error: Unknown complex item:" << itemName;
return sequenceNumber; return sequenceNumber;
...@@ -1475,6 +1479,7 @@ void MissionController::_initVisualItem(VisualMissionItem* visualItem) ...@@ -1475,6 +1479,7 @@ void MissionController::_initVisualItem(VisualMissionItem* visualItem)
ComplexMissionItem* complexItem = qobject_cast<ComplexMissionItem*>(visualItem); ComplexMissionItem* complexItem = qobject_cast<ComplexMissionItem*>(visualItem);
if (complexItem) { if (complexItem) {
connect(complexItem, &ComplexMissionItem::complexDistanceChanged, this, &MissionController::_recalcMissionFlightStatus); connect(complexItem, &ComplexMissionItem::complexDistanceChanged, this, &MissionController::_recalcMissionFlightStatus);
connect(complexItem, &ComplexMissionItem::greatestDistanceToChanged, this, &MissionController::_recalcMissionFlightStatus);
connect(complexItem, &ComplexMissionItem::additionalTimeDelayChanged, this, &MissionController::_recalcMissionFlightStatus); connect(complexItem, &ComplexMissionItem::additionalTimeDelayChanged, this, &MissionController::_recalcMissionFlightStatus);
} else { } else {
qWarning() << "ComplexMissionItem not found"; qWarning() << "ComplexMissionItem not found";
...@@ -1769,6 +1774,9 @@ QStringList MissionController::complexMissionItemNames(void) const ...@@ -1769,6 +1774,9 @@ QStringList MissionController::complexMissionItemNames(void) const
if (_controllerVehicle->fixedWing()) { if (_controllerVehicle->fixedWing()) {
complexItems.append(_fwLandingMissionItemName); complexItems.append(_fwLandingMissionItemName);
} }
if (_controllerVehicle->multiRotor() || _controllerVehicle->vtol()) {
complexItems.append(_structureScanMissionItemName);
}
return complexItems; return complexItems;
} }
......
...@@ -231,6 +231,7 @@ private: ...@@ -231,6 +231,7 @@ private:
MissionFlightStatus_t _missionFlightStatus; MissionFlightStatus_t _missionFlightStatus;
QString _surveyMissionItemName; QString _surveyMissionItemName;
QString _fwLandingMissionItemName; QString _fwLandingMissionItemName;
QString _structureScanMissionItemName;
AppSettings* _appSettings; AppSettings* _appSettings;
double _progressPct; double _progressPct;
......
...@@ -297,7 +297,7 @@ void MissionItemTest::_testLoadFromJsonV1(void) ...@@ -297,7 +297,7 @@ void MissionItemTest::_testLoadFromJsonV1(void)
QString errorString; QString errorString;
QJsonObject jsonObject = _createV1Json(); QJsonObject jsonObject = _createV1Json();
// V1 format has param 1-4 in seperate items instead of in params array // V1 format has param 1-4 in separate items instead of in params array
QStringList removeKeys; QStringList removeKeys;
removeKeys << MissionItem::_jsonParam1Key << MissionItem::_jsonParam2Key << MissionItem::_jsonParam3Key << MissionItem::_jsonParam4Key; removeKeys << MissionItem::_jsonParam1Key << MissionItem::_jsonParam2Key << MissionItem::_jsonParam3Key << MissionItem::_jsonParam4Key;
......
Supports Markdown
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