diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc
index 622c93738c7e0e151a17bb719cc9b9beb998963e..fa345bdcab1c10436ffdfe276d0498fd651ea659 100644
--- a/qgroundcontrol.qrc
+++ b/qgroundcontrol.qrc
@@ -65,9 +65,8 @@
src/AnalyzeView/AnalyzePage.qml
src/QmlControls/AppMessages.qml
src/QmlControls/AxisMonitor.qml
- src/PlanView/CameraCalc.qml
- src/PlanView/CameraCalcCamera.qml
- src/PlanView/CameraCalcGrid.qml
+ src/PlanView/CameraCalcCamera.qml
+ src/PlanView/CameraCalcGrid.qml
src/PlanView/CameraSection.qml
src/QmlControls/ClickableColor.qml
src/PlanView/CorridorScanMapVisual.qml
diff --git a/src/MissionManager/CameraCalc.cc b/src/MissionManager/CameraCalc.cc
index f937972c46408b2a4669f04178293c6095cf19d9..b7f612aabab316879f3cdaa7aada7583c5101c06 100644
--- a/src/MissionManager/CameraCalc.cc
+++ b/src/MissionManager/CameraCalc.cc
@@ -201,9 +201,8 @@ void CameraCalc::save(QJsonObject& json) const
}
}
-bool CameraCalc::load(const QJsonObject& json, bool forPresets, bool cameraSpecInPreset, QString& errorString)
+bool CameraCalc::load(const QJsonObject& json, QString& errorString)
{
- qDebug() << "CameraCalc::load" << forPresets << cameraSpecInPreset;
QJsonObject v1Json = json;
if (!json.contains(JsonHelper::jsonVersionKey)) {
@@ -238,7 +237,7 @@ bool CameraCalc::load(const QJsonObject& json, bool forPresets, bool cameraSpecI
return false;
}
- _disableRecalc = !forPresets;
+ _disableRecalc = true;
_distanceToSurfaceRelative = v1Json[distanceToSurfaceRelativeName].toBool();
@@ -259,36 +258,16 @@ bool CameraCalc::load(const QJsonObject& json, bool forPresets, bool cameraSpecI
_sideOverlapFact.setRawValue (v1Json[sideOverlapName].toDouble());
}
- if (forPresets) {
- if (isManualCamera()) {
- _distanceToSurfaceFact.setRawValue(v1Json[distanceToSurfaceName].toDouble());
- } else {
- if (_valueSetIsDistanceFact.rawValue().toBool()) {
- _distanceToSurfaceFact.setRawValue(v1Json[distanceToSurfaceName].toDouble());
- } else {
- _imageDensityFact.setRawValue(v1Json[imageDensityName].toDouble());
- }
+ _cameraNameFact.setRawValue (v1Json[cameraNameName].toString());
+ _adjustedFootprintSideFact.setRawValue (v1Json[adjustedFootprintSideName].toDouble());
+ _adjustedFootprintFrontalFact.setRawValue (v1Json[adjustedFootprintFrontalName].toDouble());
+ _distanceToSurfaceFact.setRawValue (v1Json[distanceToSurfaceName].toDouble());
+ if (!isManualCamera()) {
+ _imageDensityFact.setRawValue(v1Json[imageDensityName].toDouble());
- if (cameraSpecInPreset) {
- _cameraNameFact.setRawValue(v1Json[cameraNameName].toString());
- if (!CameraSpec::load(v1Json, errorString)) {
- _disableRecalc = false;
- return false;
- }
- }
- }
- } else {
- _cameraNameFact.setRawValue (v1Json[cameraNameName].toString());
- _adjustedFootprintSideFact.setRawValue (v1Json[adjustedFootprintSideName].toDouble());
- _adjustedFootprintFrontalFact.setRawValue (v1Json[adjustedFootprintFrontalName].toDouble());
- _distanceToSurfaceFact.setRawValue (v1Json[distanceToSurfaceName].toDouble());
- if (!isManualCamera()) {
- _imageDensityFact.setRawValue(v1Json[imageDensityName].toDouble());
-
- if (!CameraSpec::load(v1Json, errorString)) {
- _disableRecalc = false;
- return false;
- }
+ if (!CameraSpec::load(v1Json, errorString)) {
+ _disableRecalc = false;
+ return false;
}
}
diff --git a/src/MissionManager/CameraCalc.h b/src/MissionManager/CameraCalc.h
index 01b96b89f19a40e905f661f80fba0e48a5de0dc0..1cd106bac24185372c1fe00300d4aea704386530 100644
--- a/src/MissionManager/CameraCalc.h
+++ b/src/MissionManager/CameraCalc.h
@@ -70,7 +70,7 @@ public:
void setDistanceToSurfaceRelative (bool distanceToSurfaceRelative);
void save(QJsonObject& json) const;
- bool load(const QJsonObject& json, bool forPresets, bool cameraSpecInPreset, QString& errorString);
+ bool load(const QJsonObject& json, QString& errorString);
static const char* cameraNameName;
static const char* valueSetIsDistanceName;
diff --git a/src/MissionManager/ComplexMissionItem.cc b/src/MissionManager/ComplexMissionItem.cc
index 9c48b54e620b4b188e9652c01a816df2240f1a51..934b4d1c0f563b77c6e47278449fe083fd20c2ff 100644
--- a/src/MissionManager/ComplexMissionItem.cc
+++ b/src/MissionManager/ComplexMissionItem.cc
@@ -15,14 +15,9 @@
const char* ComplexMissionItem::jsonComplexItemTypeKey = "complexItemType";
const char* ComplexMissionItem::_presetSettingsKey = "_presets";
-const char* ComplexMissionItem::_presetNameKey = "complexItemPresetName";
-const char* ComplexMissionItem::_saveCameraInPresetKey = "complexItemCameraSavedInPreset";
-const char* ComplexMissionItem::_builtInPresetKey = "complexItemBuiltInPreset";
ComplexMissionItem::ComplexMissionItem(Vehicle* vehicle, bool flyView, QObject* parent)
: VisualMissionItem (vehicle, flyView, parent)
- , _cameraInPreset (true)
- , _builtInPreset (false)
{
}
@@ -31,10 +26,6 @@ const ComplexMissionItem& ComplexMissionItem::operator=(const ComplexMissionItem
{
VisualMissionItem::operator=(other);
- _currentPreset = other._currentPreset;
- _cameraInPreset = other._cameraInPreset;
- _builtInPreset = other._builtInPreset;
-
return *this;
}
@@ -61,39 +52,23 @@ void ComplexMissionItem::savePreset(const QString& name)
qgcApp()->showMessage(tr("This Pattern does not support Presets."));
}
-void ComplexMissionItem::clearCurrentPreset(void)
-{
- _currentPreset.clear();
- emit currentPresetChanged(_currentPreset);
-}
-
-void ComplexMissionItem::deleteCurrentPreset(void)
+void ComplexMissionItem::deletePreset(const QString& name)
{
- qDebug() << "deleteCurrentPreset" << _currentPreset;
- if (!_currentPreset.isEmpty()) {
- QSettings settings;
-
- settings.beginGroup(presetsSettingsGroup());
- settings.beginGroup(_presetSettingsKey);
- settings.remove(_currentPreset);
- emit presetNamesChanged();
+ QSettings settings;
- clearCurrentPreset();
- }
+ settings.beginGroup(presetsSettingsGroup());
+ settings.beginGroup(_presetSettingsKey);
+ settings.remove(name);
+ emit presetNamesChanged();
}
void ComplexMissionItem::_savePresetJson(const QString& name, QJsonObject& presetObject)
{
- presetObject[_presetNameKey] = name;
-
QSettings settings;
settings.beginGroup(presetsSettingsGroup());
settings.beginGroup(_presetSettingsKey);
settings.setValue(name, QJsonDocument(presetObject).toBinaryData());
emit presetNamesChanged();
-
- _currentPreset = name;
- emit currentPresetChanged(name);
}
QJsonObject ComplexMissionItem::_loadPresetJson(const QString& name)
@@ -103,42 +78,3 @@ QJsonObject ComplexMissionItem::_loadPresetJson(const QString& name)
settings.beginGroup(_presetSettingsKey);
return QJsonDocument::fromBinaryData(settings.value(name).toByteArray()).object();
}
-
-void ComplexMissionItem::_saveItem(QJsonObject& saveObject)
-{
- qDebug() << "_saveItem" << _cameraInPreset;
- saveObject[_presetNameKey] = _currentPreset;
- saveObject[_saveCameraInPresetKey] = _cameraInPreset;
- saveObject[_builtInPresetKey] = _builtInPreset;
-}
-
-void ComplexMissionItem::_loadItem(const QJsonObject& saveObject)
-{
- _currentPreset = saveObject[_presetNameKey].toString();
- _cameraInPreset = saveObject[_saveCameraInPresetKey].toBool(false);
- _builtInPreset = saveObject[_builtInPresetKey].toBool(false);
-
- if (!presetNames().contains(_currentPreset)) {
- _currentPreset.clear();
- }
-
- emit cameraInPresetChanged (_cameraInPreset);
- emit currentPresetChanged (_currentPreset);
- emit builtInPresetChanged (_builtInPreset);
-}
-
-void ComplexMissionItem::setCameraInPreset(bool cameraInPreset)
-{
- if (cameraInPreset != _cameraInPreset) {
- _cameraInPreset = cameraInPreset;
- emit cameraInPresetChanged(_cameraInPreset);
- }
-}
-
-void ComplexMissionItem::setBuiltInPreset(bool builtInPreset)
-{
- if (builtInPreset != _builtInPreset) {
- _builtInPreset = builtInPreset;
- emit builtInPresetChanged(_builtInPreset);
- }
-}
diff --git a/src/MissionManager/ComplexMissionItem.h b/src/MissionManager/ComplexMissionItem.h
index 111ffbb7101fd33336520483d696a169e4cc05ea..49de903ad4a97e8eaa841c3db73fc5d186338158 100644
--- a/src/MissionManager/ComplexMissionItem.h
+++ b/src/MissionManager/ComplexMissionItem.h
@@ -27,9 +27,6 @@ public:
Q_PROPERTY(double complexDistance READ complexDistance NOTIFY complexDistanceChanged)
Q_PROPERTY(bool presetsSupported READ presetsSupported CONSTANT)
Q_PROPERTY(QStringList presetNames READ presetNames NOTIFY presetNamesChanged)
- Q_PROPERTY(QString currentPreset READ currentPreset NOTIFY currentPresetChanged)
- Q_PROPERTY(bool cameraInPreset READ cameraInPreset WRITE setCameraInPreset NOTIFY cameraInPresetChanged)
- Q_PROPERTY(bool builtInPreset READ builtInPreset WRITE setBuiltInPreset NOTIFY builtInPresetChanged)
/// @return The distance covered the complex mission item in meters.
/// Signals complexDistanceChanged
@@ -50,8 +47,8 @@ public:
/// @param name User visible name for preset. Will replace existing preset if already exists.
Q_INVOKABLE virtual void savePreset(const QString& name);
- Q_INVOKABLE void clearCurrentPreset(void);
- Q_INVOKABLE void deleteCurrentPreset(void);
+ Q_INVOKABLE void deletePreset(const QString& name);
+
/// Get the point of complex mission item furthest away from a coordinate
/// @param other QGeoCoordinate to which distance is calculated
@@ -67,12 +64,7 @@ public:
/// Empty string signals no support for presets.
virtual QString presetsSettingsGroup(void) { return QString(); }
- bool presetsSupported (void) { return !presetsSettingsGroup().isEmpty(); }
- QString currentPreset (void) const { return _currentPreset; }
- bool cameraInPreset (void) const { return _cameraInPreset; }
- bool builtInPreset (void) const { return _builtInPreset; }
- void setCameraInPreset (bool cameraInPreset);
- void setBuiltInPreset (bool builtInPreset);
+ bool presetsSupported(void) { return !presetsSettingsGroup().isEmpty(); }
/// This mission item attribute specifies the type of the complex item.
static const char* jsonComplexItemTypeKey;
@@ -82,28 +74,15 @@ signals:
void boundingCubeChanged (void);
void greatestDistanceToChanged (void);
void presetNamesChanged (void);
- void currentPresetChanged (QString currentPreset);
- void cameraInPresetChanged (bool cameraInPreset);
- void builtInPresetChanged (bool builtInPreset);
protected:
- void _saveItem (QJsonObject& saveObject);
- void _loadItem (const QJsonObject& saveObject);
void _savePresetJson (const QString& name, QJsonObject& presetObject);
QJsonObject _loadPresetJson (const QString& name);
QMap _metaDataMap;
- QString _currentPreset;
- SettingsFact _saveCameraInPresetFact;
- bool _cameraInPreset;
- bool _builtInPreset;
-
static const char* _presetSettingsKey;
- static const char* _presetNameKey;
- static const char* _saveCameraInPresetKey;
- static const char* _builtInPresetKey;
};
#endif
diff --git a/src/MissionManager/StructureScanComplexItem.cc b/src/MissionManager/StructureScanComplexItem.cc
index 8f4eb958345e94f431e47afbd9772dacdb270a6b..06b527665a5d796072cd5e266fa469329cdcb964 100644
--- a/src/MissionManager/StructureScanComplexItem.cc
+++ b/src/MissionManager/StructureScanComplexItem.cc
@@ -213,7 +213,7 @@ bool StructureScanComplexItem::load(const QJsonObject& complexObject, int sequen
setSequenceNumber(sequenceNumber);
// Load CameraCalc first since it will trigger camera name change which will trounce gimbal angles
- if (!_cameraCalc.load(complexObject[_jsonCameraCalcKey].toObject(), false /* forPresets */, false /* cameraSpecInPreset */, errorString)) {
+ if (!_cameraCalc.load(complexObject[_jsonCameraCalcKey].toObject(), errorString)) {
return false;
}
diff --git a/src/MissionManager/TransectStyleComplexItem.cc b/src/MissionManager/TransectStyleComplexItem.cc
index d80fae82082ef0bb6ba7b5f8753a6fee3462329c..fcb9a423df8f3e0a8e0be4697ed9f1f4e13909d8 100644
--- a/src/MissionManager/TransectStyleComplexItem.cc
+++ b/src/MissionManager/TransectStyleComplexItem.cc
@@ -134,8 +134,6 @@ void TransectStyleComplexItem::setDirty(bool dirty)
void TransectStyleComplexItem::_save(QJsonObject& complexObject)
{
- ComplexMissionItem::_saveItem(complexObject);
-
QJsonObject innerObject;
innerObject[JsonHelper::jsonVersionKey] = 1;
@@ -189,8 +187,6 @@ void TransectStyleComplexItem::setSequenceNumber(int sequenceNumber)
bool TransectStyleComplexItem::_load(const QJsonObject& complexObject, bool forPresets, QString& errorString)
{
- ComplexMissionItem::_loadItem(complexObject);
-
QList keyInfoList = {
{ _jsonTransectStyleComplexItemKey, QJsonValue::Object, true },
};
@@ -248,7 +244,7 @@ bool TransectStyleComplexItem::_load(const QJsonObject& complexObject, bool forP
}
// Load CameraCalc data
- if (!_cameraCalc.load(innerObject[_jsonCameraCalcKey].toObject(), forPresets, cameraInPreset(), errorString)) {
+ if (!_cameraCalc.load(innerObject[_jsonCameraCalcKey].toObject(), errorString)) {
return false;
}
diff --git a/src/PlanView/CameraCalc.qml b/src/PlanView/CameraCalc.qml
deleted file mode 100644
index f73032482b50be3414406938d7cbd40b484adf6e..0000000000000000000000000000000000000000
--- a/src/PlanView/CameraCalc.qml
+++ /dev/null
@@ -1,296 +0,0 @@
-import QtQuick 2.3
-import QtQuick.Controls 1.2
-import QtQuick.Layouts 1.2
-
-import QGroundControl 1.0
-import QGroundControl.ScreenTools 1.0
-import QGroundControl.Controls 1.0
-import QGroundControl.FactControls 1.0
-import QGroundControl.Palette 1.0
-
-// Camera calculator section for mission item editors
-Column {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
-
- visible: !usingPreset || !cameraSpecifiedInPreset
-
- property var cameraCalc
- property bool vehicleFlightIsFrontal: true
- property string distanceToSurfaceLabel
- property int distanceToSurfaceAltitudeMode: QGroundControl.AltitudeModeNone
- property string frontalDistanceLabel
- property string sideDistanceLabel
- property bool usingPreset: false
- property bool cameraSpecifiedInPreset: false
-
- property real _margin: ScreenTools.defaultFontPixelWidth / 2
- property string _cameraName: cameraCalc.cameraName.value
- property real _fieldWidth: ScreenTools.defaultFontPixelWidth * 10.5
- property var _cameraList: [ ]
- property var _vehicle: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle : QGroundControl.multiVehicleManager.offlineEditingVehicle
- property var _vehicleCameraList: _vehicle ? _vehicle.staticCameraList : []
- property bool _cameraComboFilled: false
-
- readonly property int _gridTypeManual: 0
- readonly property int _gridTypeCustomCamera: 1
- readonly property int _gridTypeCamera: 2
-
- Component.onCompleted: _fillCameraCombo()
-
- on_CameraNameChanged: _updateSelectedCamera()
-
- function _fillCameraCombo() {
- _cameraComboFilled = true
- _cameraList.push(cameraCalc.manualCameraName)
- _cameraList.push(cameraCalc.customCameraName)
- for (var i=0; i<_vehicle.staticCameraList.length; i++) {
- _cameraList.push(_vehicle.staticCameraList[i].name)
- }
- gridTypeCombo.model = _cameraList
- _updateSelectedCamera()
- }
-
- function _updateSelectedCamera() {
- if (_cameraComboFilled) {
- var knownCameraIndex = gridTypeCombo.find(_cameraName)
- if (knownCameraIndex !== -1) {
- gridTypeCombo.currentIndex = knownCameraIndex
- } else {
- console.log("Internal error: Known camera not found", _cameraName)
- gridTypeCombo.currentIndex = _gridTypeCustomCamera
- }
- }
- }
-
- QGCPalette { id: qgcPal; colorGroupEnabled: true }
-
- ExclusiveGroup {
- id: cameraOrientationGroup
- }
-
- SectionHeader {
- id: cameraHeader
- text: qsTr("Camera")
- showSpacer: false
- }
-
- Column {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- visible: cameraHeader.checked
-
- QGCComboBox {
- id: gridTypeCombo
- anchors.left: parent.left
- anchors.right: parent.right
- model: _cameraList
- currentIndex: -1
- onActivated: cameraCalc.cameraName.value = gridTypeCombo.textAt(index)
- } // QGCComboxBox
-
- // Camera based grid ui
- Column {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- visible: !cameraCalc.isManualCamera
-
- Row {
- spacing: _margin
- anchors.horizontalCenter: parent.horizontalCenter
- visible: !cameraCalc.fixedOrientation.value
-
- QGCRadioButton {
- width: _editFieldWidth
- text: "Landscape"
- checked: !!cameraCalc.landscape.value
- onClicked: cameraCalc.landscape.value = 1
- }
-
- QGCRadioButton {
- id: cameraOrientationPortrait
- text: "Portrait"
- checked: !cameraCalc.landscape.value
- onClicked: cameraCalc.landscape.value = 0
- }
- }
-
- // Custom camera specs
- Column {
- id: custCameraCol
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- visible: cameraCalc.isCustomCamera
-
- RowLayout {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- Item { Layout.fillWidth: true }
- QGCLabel {
- Layout.preferredWidth: _root._fieldWidth
- text: qsTr("Width")
- }
- QGCLabel {
- Layout.preferredWidth: _root._fieldWidth
- text: qsTr("Height")
- }
- }
-
- RowLayout {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- QGCLabel { text: qsTr("Sensor"); Layout.fillWidth: true }
- FactTextField {
- Layout.preferredWidth: _root._fieldWidth
- fact: cameraCalc.sensorWidth
- }
- FactTextField {
- Layout.preferredWidth: _root._fieldWidth
- fact: cameraCalc.sensorHeight
- }
- }
-
- RowLayout {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- QGCLabel { text: qsTr("Image"); Layout.fillWidth: true }
- FactTextField {
- Layout.preferredWidth: _root._fieldWidth
- fact: cameraCalc.imageWidth
- }
- FactTextField {
- Layout.preferredWidth: _root._fieldWidth
- fact: cameraCalc.imageHeight
- }
- }
-
- RowLayout {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- QGCLabel {
- text: qsTr("Focal length")
- Layout.fillWidth: true
- }
- FactTextField {
- Layout.preferredWidth: _root._fieldWidth
- fact: cameraCalc.focalLength
- }
- }
-
- } // Column - custom camera specs
-
- RowLayout {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- visible: !usingPreset
- Item { Layout.fillWidth: true }
- QGCLabel {
- Layout.preferredWidth: _root._fieldWidth
- text: qsTr("Front Lap")
- }
- QGCLabel {
- Layout.preferredWidth: _root._fieldWidth
- text: qsTr("Side Lap")
- }
- }
-
- RowLayout {
- anchors.left: parent.left
- anchors.right: parent.right
- spacing: _margin
- visible: !usingPreset
- QGCLabel { text: qsTr("Overlap"); Layout.fillWidth: true }
- FactTextField {
- Layout.preferredWidth: _root._fieldWidth
- fact: cameraCalc.frontalOverlap
- }
- FactTextField {
- Layout.preferredWidth: _root._fieldWidth
- fact: cameraCalc.sideOverlap
- }
- }
-
- QGCLabel {
- wrapMode: Text.WordWrap
- text: qsTr("Select one:")
- Layout.preferredWidth: parent.width
- Layout.columnSpan: 2
- visible: !usingPreset
- }
-
- GridLayout {
- anchors.left: parent.left
- anchors.right: parent.right
- columnSpacing: _margin
- rowSpacing: _margin
- columns: 2
- visible: !usingPreset
-
- QGCRadioButton {
- id: fixedDistanceRadio
- text: distanceToSurfaceLabel
- checked: !!cameraCalc.valueSetIsDistance.value
- onClicked: cameraCalc.valueSetIsDistance.value = 1
- }
-
- AltitudeFactTextField {
- fact: cameraCalc.distanceToSurface
- altitudeMode: distanceToSurfaceAltitudeMode
- enabled: fixedDistanceRadio.checked
- Layout.fillWidth: true
- }
-
- QGCRadioButton {
- id: fixedImageDensityRadio
- text: qsTr("Ground Res")
- checked: !cameraCalc.valueSetIsDistance.value
- onClicked: cameraCalc.valueSetIsDistance.value = 0
- }
-
- FactTextField {
- fact: cameraCalc.imageDensity
- enabled: fixedImageDensityRadio.checked
- Layout.fillWidth: true
- }
- }
- } // Column - Camera spec based ui
-
- // No camera spec ui
- GridLayout {
- anchors.left: parent.left
- anchors.right: parent.right
- columnSpacing: _margin
- rowSpacing: _margin
- columns: 2
- visible: cameraCalc.isManualCamera
-
- QGCLabel { text: distanceToSurfaceLabel }
- AltitudeFactTextField {
- fact: cameraCalc.distanceToSurface
- altitudeMode: distanceToSurfaceAltitudeMode
- Layout.fillWidth: true
- }
-
- QGCLabel { text: frontalDistanceLabel }
- FactTextField {
- Layout.fillWidth: true
- fact: cameraCalc.adjustedFootprintFrontal
- }
-
- QGCLabel { text: sideDistanceLabel }
- FactTextField {
- Layout.fillWidth: true
- fact: cameraCalc.adjustedFootprintSide
- }
- } // GridLayout
- } // Column - Camera Section
-} // Column
diff --git a/src/PlanView/CameraCalcCamera.qml b/src/PlanView/CameraCalcCamera.qml
index d18eef7803f40863c59b4bfc004728089361213e..089b003041c706529c4a110072bd2c234a29cf71 100644
--- a/src/PlanView/CameraCalcCamera.qml
+++ b/src/PlanView/CameraCalcCamera.qml
@@ -14,16 +14,12 @@ Column {
anchors.right: parent.right
spacing: _margin
- visible: !usingPreset || !cameraSpecifiedInPreset
-
property var cameraCalc
property bool vehicleFlightIsFrontal: true
property string distanceToSurfaceLabel
property int distanceToSurfaceAltitudeMode: QGroundControl.AltitudeModeNone
property string frontalDistanceLabel
property string sideDistanceLabel
- property bool usingPreset: false
- property bool cameraSpecifiedInPreset: false
property real _margin: ScreenTools.defaultFontPixelWidth / 2
property string _cameraName: cameraCalc.cameraName.value
diff --git a/src/PlanView/CameraCalcGrid.qml b/src/PlanView/CameraCalcGrid.qml
index 65fb7de7abb2ff4d884c52ddee32904f9fddb38b..04250e33ab5446f048c95a2fa54e01f434e57b28 100644
--- a/src/PlanView/CameraCalcGrid.qml
+++ b/src/PlanView/CameraCalcGrid.qml
@@ -14,16 +14,12 @@ Column {
anchors.right: parent.right
spacing: _margin
- visible: !usingPreset || !cameraSpecifiedInPreset
-
property var cameraCalc
property bool vehicleFlightIsFrontal: true
property string distanceToSurfaceLabel
property int distanceToSurfaceAltitudeMode: QGroundControl.AltitudeModeNone
property string frontalDistanceLabel
property string sideDistanceLabel
- property bool usingPreset: false
- property bool cameraSpecifiedInPreset: false
property real _margin: ScreenTools.defaultFontPixelWidth / 2
property string _cameraName: cameraCalc.cameraName.value
@@ -49,7 +45,6 @@ Column {
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
- visible: !usingPreset
Item { Layout.fillWidth: true }
QGCLabel {
Layout.preferredWidth: _root._fieldWidth
@@ -65,7 +60,6 @@ Column {
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
- visible: !usingPreset
QGCLabel { text: qsTr("Overlap"); Layout.fillWidth: true }
FactTextField {
Layout.preferredWidth: _root._fieldWidth
@@ -82,7 +76,6 @@ Column {
text: qsTr("Select one:")
Layout.preferredWidth: parent.width
Layout.columnSpan: 2
- visible: !usingPreset
}
GridLayout {
@@ -91,7 +84,6 @@ Column {
columnSpacing: _margin
rowSpacing: _margin
columns: 2
- visible: !usingPreset
QGCRadioButton {
id: fixedDistanceRadio
diff --git a/src/PlanView/SurveyItemEditor.qml b/src/PlanView/SurveyItemEditor.qml
index e4a5fc7f66e4f4c2cc6c0c82b708ba24938bf762..d4a08de87e5846836b6ad8c77b6dda504a3a0052 100644
--- a/src/PlanView/SurveyItemEditor.qml
+++ b/src/PlanView/SurveyItemEditor.qml
@@ -28,8 +28,6 @@ Rectangle {
property real _fieldWidth: ScreenTools.defaultFontPixelWidth * 10.5
property var _vehicle: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle : QGroundControl.multiVehicleManager.offlineEditingVehicle
property real _cameraMinTriggerInterval: missionItem.cameraCalc.minTriggerInterval.rawValue
- property string _currentPreset: missionItem.currentPreset
- property bool _usingPreset: _currentPreset !== ""
function polygonCaptureStarted() {
missionItem.clearPolygon()
@@ -94,8 +92,6 @@ Rectangle {
missionItem.cameraCalc.distanceToSurfaceRelative
frontalDistanceLabel: qsTr("Trigger Dist")
sideDistanceLabel: qsTr("Spacing")
- usingPreset: _usingPreset
- cameraSpecifiedInPreset: missionItem.cameraInPreset
}
SectionHeader {
@@ -134,12 +130,10 @@ Rectangle {
QGCLabel {
text: qsTr("Turnaround dist")
- visible: !_usingPreset
}
FactTextField {
fact: missionItem.turnAroundDistance
Layout.fillWidth: true
- visible: !_usingPreset
}
}
@@ -152,7 +146,7 @@ Rectangle {
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
- visible: transectsHeader.checked && !_usingPreset
+ visible: transectsHeader.checked
/*
Temporarily removed due to bug https://github.com/mavlink/qgroundcontrol/issues/7005
@@ -213,14 +207,13 @@ Rectangle {
id: terrainHeader
text: qsTr("Terrain")
checked: missionItem.followTerrain
- visible: !_usingPreset
}
ColumnLayout {
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
- visible: terrainHeader.checked && !_usingPreset
+ visible: terrainHeader.checked
QGCCheckBox {
@@ -280,102 +273,53 @@ Rectangle {
missionItem.cameraCalc.distanceToSurfaceRelative
frontalDistanceLabel: qsTr("Trigger Dist")
sideDistanceLabel: qsTr("Spacing")
- usingPreset: _usingPreset
- cameraSpecifiedInPreset: missionItem.cameraInPreset
}
} // Camera Column
- Column {
+ ColumnLayout {
anchors.left: parent.left
anchors.right: parent.right
spacing: _margin
visible: tabBar.currentIndex == 2
+ QGCLabel {
+ Layout.fillWidth: true
+ text: qsTr("Presets")
+ wrapMode: Text.WordWrap
+ }
+
QGCComboBox {
id: presetCombo
- anchors.left: parent.left
- anchors.right: parent.right
- model: _presetList
-
- property var _presetList: []
-
- readonly property int _indexCustom: 0
- readonly property int _indexCreate: 1
- readonly property int _indexDelete: 2
- readonly property int _indexLabel: 3
- readonly property int _indexFirstPreset: 4
-
- Component.onCompleted: _updateList()
-
- onActivated: {
- if (index == _indexCustom) {
- missionItem.clearCurrentPreset()
- } else if (index == _indexCreate) {
- mainWindow.showComponentDialog(savePresetDialog, qsTr("Save Preset"), mainWindow.showDialogDefaultWidth, StandardButton.Save | StandardButton.Cancel)
- } else if (index == _indexDelete) {
- if (missionItem.builtInPreset) {
- mainWindow.showMessage(qsTr("Delete Preset"), qsTr("This preset cannot be deleted."))
- } else {
- missionItem.deleteCurrentPreset()
- }
- } else if (index >= _indexFirstPreset) {
- missionItem.loadPreset(textAt(index))
- } else {
- _selectCurrentPreset()
- }
- }
-
- Connections {
- target: missionItem
-
- onPresetNamesChanged: presetCombo._updateList()
- onCurrentPresetChanged: presetCombo._selectCurrentPreset()
- }
-
- // There is some major strangeness going on with programatically changing the index of a combo box in this scenario.
- // If you just set currentIndex directly it will just change back 1o -1 magically. Has something to do with resetting
- // model on the fly I think. But not sure. To work around I delay the currentIndex changes to let things unwind.
- Timer {
- id: delayedIndexChangeTimer
- interval: 10
-
- property int newIndex
+ Layout.fillWidth: true
+ model: missionItem.presetNames
+ }
- onTriggered: presetCombo.currentIndex = newIndex
+ RowLayout {
+ Layout.fillWidth: true
+ QGCButton {
+ Layout.fillWidth: true
+ text: qsTr("Apply Preset")
+ enabled: missionItem.presetNames.length != 0
+ onClicked: missionItem.loadPreset(presetCombo.textAt(presetCombo.currentIndex))
}
- function delayedIndexChange(index) {
- delayedIndexChangeTimer.newIndex = index
- delayedIndexChangeTimer.start()
+ QGCButton {
+ Layout.fillWidth: true
+ text: qsTr("Delete Preset")
+ enabled: missionItem.presetNames.length != 0
+ onClicked: missionItem.deletePreset(presetCombo.textAt(presetCombo.currentIndex))
}
- function _updateList() {
- _presetList = []
- _presetList.push(qsTr("Custom (specify all settings)"))
- _presetList.push(qsTr("Save Settings As Preset"))
- _presetList.push(qsTr("Delete Current Preset"))
- if (missionItem.presetNames.length !== 0) {
- _presetList.push(qsTr("Presets:"))
- }
+ }
- for (var i=0; i