/**************************************************************************** * * (c) 2009-2016 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * ****************************************************************************/ #include #include #include "VisualMissionItem.h" #include "FirmwarePluginManager.h" #include "QGCApplication.h" #include "JsonHelper.h" const char* VisualMissionItem::jsonTypeKey = "type"; const char* VisualMissionItem::jsonTypeSimpleItemValue = "SimpleItem"; const char* VisualMissionItem::jsonTypeComplexItemValue = "ComplexItem"; VisualMissionItem::VisualMissionItem(Vehicle* vehicle, QObject* parent) : QObject(parent) , _vehicle(vehicle) , _isCurrentItem(false) , _dirty(false) , _homePositionSpecialCase(false) , _altDifference(0.0) , _altPercent(0.0) , _azimuth(0.0) , _distance(0.0) , _missionGimbalYaw(std::numeric_limits::quiet_NaN()) , _missionVehicleYaw(std::numeric_limits::quiet_NaN()) { } VisualMissionItem::VisualMissionItem(const VisualMissionItem& other, QObject* parent) : QObject(parent) , _vehicle(NULL) , _isCurrentItem(false) , _dirty(false) , _homePositionSpecialCase(false) , _altDifference(0.0) , _altPercent(0.0) , _azimuth(0.0) , _distance(0.0) { *this = other; } const VisualMissionItem& VisualMissionItem::operator=(const VisualMissionItem& other) { _vehicle = other._vehicle; setIsCurrentItem(other._isCurrentItem); setDirty(other._dirty); _homePositionSpecialCase = other._homePositionSpecialCase; setAltDifference(other._altDifference); setAltPercent(other._altPercent); setAzimuth(other._azimuth); setDistance(other._distance); return *this; } VisualMissionItem::~VisualMissionItem() { } void VisualMissionItem::setIsCurrentItem(bool isCurrentItem) { if (_isCurrentItem != isCurrentItem) { _isCurrentItem = isCurrentItem; emit isCurrentItemChanged(isCurrentItem); } } void VisualMissionItem::setDistance(double distance) { if (!qFuzzyCompare(_distance, distance)) { _distance = distance; emit distanceChanged(_distance); } } void VisualMissionItem::setAltDifference(double altDifference) { if (!qFuzzyCompare(_altDifference, altDifference)) { _altDifference = altDifference; emit altDifferenceChanged(_altDifference); } } void VisualMissionItem::setAltPercent(double altPercent) { if (!qFuzzyCompare(_altPercent, altPercent)) { _altPercent = altPercent; emit altPercentChanged(_altPercent); } } void VisualMissionItem::setAzimuth(double azimuth) { if (!qFuzzyCompare(_azimuth, azimuth)) { _azimuth = azimuth; emit azimuthChanged(_azimuth); } } void VisualMissionItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) { _missionFlightStatus = missionFlightStatus; if (_missionFlightStatus.gimbalYaw != _missionGimbalYaw) { _missionGimbalYaw = _missionFlightStatus.gimbalYaw; emit missionGimbalYawChanged(_missionGimbalYaw); } } void VisualMissionItem::setMissionVehicleYaw(double vehicleYaw) { if (!qFuzzyCompare(_missionVehicleYaw, vehicleYaw)) { _missionVehicleYaw = vehicleYaw; emit missionVehicleYawChanged(_missionVehicleYaw); } }