diff --git a/WimaDok/main.aux b/WimaDok/main.aux new file mode 100644 index 0000000000000000000000000000000000000000..e75917cffced9af573f253936f8a29ca9727458c --- /dev/null +++ b/WimaDok/main.aux @@ -0,0 +1,6 @@ +\relax +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {2}Documentation}{1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Structure of QGroundControl}{1}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Detail view of the QQC window, which appears after start-up. Marked in red is the button for switching to the plan view window, green indicates the flight view button (current window) and marked in magenta is the button for switching to the WiMA main window.}}{2}} +\newlabel{fig:QGCMainButtonExplain}{{1}{2}} diff --git a/WimaDok/main.pdf b/WimaDok/main.pdf new file mode 100644 index 0000000000000000000000000000000000000000..df52e3ced40abfe72477874b8004399046072e5f Binary files /dev/null and b/WimaDok/main.pdf differ diff --git a/WimaDok/main.synctex.gz b/WimaDok/main.synctex.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb424749f33fb1b4426d16a33256e9a99e5ccc34 Binary files /dev/null and b/WimaDok/main.synctex.gz differ diff --git a/WimaDok/main.tex b/WimaDok/main.tex new file mode 100644 index 0000000000000000000000000000000000000000..41237f3eaa90625c8514b58627e5ca43638a203f --- /dev/null +++ b/WimaDok/main.tex @@ -0,0 +1,35 @@ +\documentclass[]{article} + +\usepackage{amsmath} +\usepackage{graphicx} +\usepackage{wrapfig} +\usepackage[utf8]{inputenc} +\usepackage{a4wide} +\usepackage{multicol} + +%opening +\title{Documentation of the QGroundControl WiMA-Extension} +\author{Valentin Platzgummer} + +\begin{document} + +\maketitle +\section{Introduction} +Wima is a abbreviation for Wireless Measurement Application. +Dieses Dokument soll einerseits die Funktionen der WiMA-Erweiterung dokumentieren und andererseits den Leser dazu anregen Fehler im Programm zu finden. Das Dokument ist in zwei abschnitte unterteilt. Die eigentliche Dokumentation und Vorschläge welche Funktionen getestet werden sollen. Da die WiMA-Erweiterung noch weiterentwickelt wird, können die Funktionen und das Aussehen des Programms von der in dieser Dokumentation dargestellten Inhalten abweichen. + +Der Ordner deploy enthält eine unter Linux ausführbare Datei des Programms, mit dem nahmen "QGroundControl.AppImage". + +\section{Documentation} +\subsection{Structure of QGroundControl with WiMA-Extension} +Figure \ref{fig:QGCMainButtonExplain} shows a detail view of the QGC main window. Relevant for this documentation are the flight view, the plan view and the WiMA main window. Their function will now be briefly summarized. + +The \textbf{plan view window} is +\begin{figure} + \includegraphics[width=\textwidth]{pics/QGCMainWindowCroppedRect} + \centering + \caption{Detail view of the QQC window, which appears after start-up. Marked in red is the button for switching to the plan view window, green indicates the flight view button (current window) and marked in magenta is the button for switching to the WiMA main window.} + \label{fig:QGCMainButtonExplain} +\end{figure} + +\end{document} diff --git a/WimaDok/pics/QGCMainWindowCropped.png b/WimaDok/pics/QGCMainWindowCropped.png new file mode 100644 index 0000000000000000000000000000000000000000..7ccd4e412ea3948c286e42fe96cf9a985db0b342 Binary files /dev/null and b/WimaDok/pics/QGCMainWindowCropped.png differ diff --git a/WimaDok/pics/QGCMainWindowCroppedRect.png b/WimaDok/pics/QGCMainWindowCroppedRect.png new file mode 100644 index 0000000000000000000000000000000000000000..3924a695fbb7c0b1e87b484cb27e673ec3d16a05 Binary files /dev/null and b/WimaDok/pics/QGCMainWindowCroppedRect.png differ diff --git a/resources/measurement.xcf b/resources/measurement.xcf index 6686e8453fe0fdc6a91c4124c935c507a3400e6e..09cbdea3449512906dc7b15b80a07051fc63e338 100644 Binary files a/resources/measurement.xcf and b/resources/measurement.xcf differ diff --git a/resources/service.xcf b/resources/service.xcf index 5e73d4c6bfd662d1552301c1b507f2ed3ad84100..74a855d5fec25754567ccc4f0fa072d6d7268c09 100644 Binary files a/resources/service.xcf and b/resources/service.xcf differ diff --git a/src/FactSystem/SettingsFact.cc b/src/FactSystem/SettingsFact.cc index 1d8f4f58f7db4a1fcb44dd8e025d44b6acecfa23..a4c861784352e70994594a4a581de88dc54f390b 100644 --- a/src/FactSystem/SettingsFact.cc +++ b/src/FactSystem/SettingsFact.cc @@ -39,7 +39,7 @@ SettingsFact::SettingsFact(QString settingsGroup, FactMetaData* metaData, QObjec if (_visible) { QVariant typedValue; QString errorString; - metaData->convertAndValidateRaw(settings.value(_name, rawDefaultValue), true /* conertOnly */, typedValue, errorString); + metaData->convertAndValidateRaw(settings.value(_name, rawDefaultValue), true /* convertOnly */, typedValue, errorString); _rawValue = typedValue; } else { // Setting is not visible, force to default value always diff --git a/src/PlanView/CircularSurveyItemEditor.qml b/src/PlanView/CircularSurveyItemEditor.qml index 629ba4136154183677e805101be62ab4fb48833a..2f36ee910f4456bd2dad081336cd2dacd0aa7933 100644 --- a/src/PlanView/CircularSurveyItemEditor.qml +++ b/src/PlanView/CircularSurveyItemEditor.qml @@ -104,10 +104,10 @@ Rectangle { FactTextField { fact: missionItem.deltaAlpha Layout.fillWidth: true - onUpdated: angleSlider.value = missionItem.deltaAlpha.value + //onUpdated: angleSlider.value = missionItem.deltaAlpha.value } - QGCSlider { + /*QGCSlider { id: angleSlider minimumValue: 0.3 maximumValue: 10 @@ -116,10 +116,10 @@ Rectangle { Layout.fillWidth: true Layout.columnSpan: 2 Layout.preferredHeight: ScreenTools.defaultFontPixelHeight * 1.5 - onValueChanged: missionItem.deltaAlpha.value = value Component.onCompleted: value = missionItem.deltaAlpha.value - updateValueWhileDragging: true - } + onValueChanged: missionItem.deltaAlpha.value = value + updateValueWhileDragging: false + }*/ } ColumnLayout { diff --git a/src/Wima/CircularSurvey.SettingsGroup.json b/src/Wima/CircularSurvey.SettingsGroup.json index eb2c2d9c9974423fcbfd1b70bd0a4a926643148c..76ec08b4fe4b91e6abfa0d46e91b0f718a34c65e 100644 --- a/src/Wima/CircularSurvey.SettingsGroup.json +++ b/src/Wima/CircularSurvey.SettingsGroup.json @@ -14,6 +14,7 @@ "type": "double", "units": "Deg", "min": 0.3, + "max": 90, "decimalPlaces": 1, "defaultValue": 5.0 } diff --git a/src/Wima/CircularSurveyComplexItem.cc b/src/Wima/CircularSurveyComplexItem.cc index 6d7a4f3f705380b9a589c6ba4ba56fbb2e0a1d9c..ec6d4a1b29f1f33dc9923453c8bcf1e871938245 100644 --- a/src/Wima/CircularSurveyComplexItem.cc +++ b/src/Wima/CircularSurveyComplexItem.cc @@ -26,11 +26,6 @@ CircularSurveyComplexItem::CircularSurveyComplexItem(Vehicle *vehicle, bool flyV connect(&_deltaAlpha, &Fact::valueChanged, this, &CircularSurveyComplexItem::_setDirty); connect(this, &CircularSurveyComplexItem::refPointChanged, this, &CircularSurveyComplexItem::_setDirty); - _deltaR.setRawValue(_deltaR.rawDefaultValue()); - _deltaAlpha.setRawValue(_deltaAlpha.rawDefaultValue()); - qDebug() << _deltaAlpha.rawDefaultValue().toDouble(); - qDebug() << _deltaAlpha.rawValue().toDouble(); - connect(&_updateTimer, &QTimer::timeout, this, &CircularSurveyComplexItem::_updateItem); _updateTimer.start(100); } @@ -336,6 +331,8 @@ void CircularSurveyComplexItem::_rebuildTransectsPhase1() using namespace PolygonCalculus; using namespace PlanimetryCalculus; + + if ( _surveyAreaPolygon.count() < 3) return; diff --git a/src/Wima/CircularSurveyComplexItem.h b/src/Wima/CircularSurveyComplexItem.h index 47ff384e817db9bc9dea40b5bc18c6402ba27a68..3fc137c576bf52bdfd4a30bada04c9d41beb11bd 100644 --- a/src/Wima/CircularSurveyComplexItem.h +++ b/src/Wima/CircularSurveyComplexItem.h @@ -7,6 +7,7 @@ #include "GeoUtilities.h" #include "QVector" #include "Circle.h" +#include "SettingsFact.h" class CircularSurveyComplexItem :public TransectStyleComplexItem { diff --git a/src/Wima/WimaMeasurementArea.cc b/src/Wima/WimaMeasurementArea.cc index 934bfab918ab8f002a8329fbe495a3734cf45bd8..798ec605cefe245de3a8449b5967b07f1ec4efe4 100644 --- a/src/Wima/WimaMeasurementArea.cc +++ b/src/Wima/WimaMeasurementArea.cc @@ -10,13 +10,23 @@ const char* WimaMeasurementArea::WimaMeasurementAreaName = "Measurement WimaMeasurementArea::WimaMeasurementArea(QObject *parent) - : WimaArea (parent) + : WimaArea (parent) + , _metaDataMap (FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/WimaMeasurementArea.SettingsGroup.json"), this /* QObject parent */)) + , _bottomLayerAltitude (SettingsFact(settingsGroup, _metaDataMap[bottomLayerAltitudeName], this /* QObject parent */)) + , _numberOfLayers (SettingsFact(settingsGroup, _metaDataMap[numberOfLayersName], this /* QObject parent */)) + , _layerDistance (SettingsFact(settingsGroup, _metaDataMap[layerDistanceName], this /* QObject parent */)) + , _borderPolygonOffset (SettingsFact(settingsGroup, _metaDataMap[borderPolygonOffsetName], this /* QObject parent */)) { init(); } WimaMeasurementArea::WimaMeasurementArea(const WimaMeasurementArea &other, QObject *parent) - : WimaArea(other, parent) + : WimaArea (other, parent) + , _metaDataMap (FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/WimaMeasurementArea.SettingsGroup.json"), this /* QObject parent */)) + , _bottomLayerAltitude (SettingsFact(settingsGroup, _metaDataMap[bottomLayerAltitudeName], this /* QObject parent */)) + , _numberOfLayers (SettingsFact(settingsGroup, _metaDataMap[numberOfLayersName], this /* QObject parent */)) + , _layerDistance (SettingsFact(settingsGroup, _metaDataMap[layerDistanceName], this /* QObject parent */)) + , _borderPolygonOffset (SettingsFact(settingsGroup, _metaDataMap[borderPolygonOffsetName], this /* QObject parent */)) { init(); } @@ -150,14 +160,6 @@ void WimaMeasurementArea::recalcBorderPolygon() void WimaMeasurementArea::init() { - - _metaDataMap = FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/WimaMeasurementArea.SettingsGroup.json"), this /* QObject parent */); - _bottomLayerAltitude = SettingsFact(settingsGroup, _metaDataMap[bottomLayerAltitudeName], this /* QObject parent */); - _numberOfLayers = SettingsFact(settingsGroup, _metaDataMap[numberOfLayersName], this /* QObject parent */); - _layerDistance = SettingsFact(settingsGroup, _metaDataMap[layerDistanceName], this /* QObject parent */); - _borderPolygonOffset = SettingsFact(settingsGroup, _metaDataMap[borderPolygonOffsetName], this /* QObject parent */); - _borderPolygon = new QGCMapPolygon(this); - this->setObjectName(WimaMeasurementAreaName); connect(this, &WimaMeasurementArea::pathChanged, this, &WimaMeasurementArea::recalcBorderPolygon); connect(&_borderPolygonOffset, &SettingsFact::rawValueChanged, this, &WimaMeasurementArea::recalcBorderPolygon); diff --git a/src/Wima/WimaPlaner.cc b/src/Wima/WimaPlaner.cc index 5589c7a692dd5023974723035d39e857b4013c39..3abe9f84c3aee8bc9c867958fc96001f53dbc800 100644 --- a/src/Wima/WimaPlaner.cc +++ b/src/Wima/WimaPlaner.cc @@ -220,16 +220,12 @@ bool WimaPlaner::updateMission() CircularSurveyComplexItem* OldSurveyPt = nullptr; QGeoCoordinate oldSurveyRef; - double oldSurveyDeltaR = 0; - double oldSurveyDeltaAlpha = 0; bool oldSurveyExists = false; for (int i = 0; i < _missionController->visualItems()->count(); i++) { OldSurveyPt = qobject_cast(missionItems->get(i)); if ( OldSurveyPt != nullptr) { oldSurveyRef = OldSurveyPt->refPoint(); - oldSurveyDeltaR = OldSurveyPt->deltaR()->rawValue().toDouble(); - oldSurveyDeltaAlpha = OldSurveyPt->deltaAlpha()->rawValue().toDouble(); oldSurveyExists = true; break; } @@ -276,8 +272,6 @@ bool WimaPlaner::updateMission() } else { if ( oldSurveyExists ) { survey->setRefPoint(oldSurveyRef); - survey->deltaR()->setRawValue(oldSurveyDeltaR); - survey->deltaAlpha()->setRawValue(oldSurveyDeltaAlpha); } else { survey->setRefPoint(_measurementArea.center()); } diff --git a/src/WimaView/WimaMeasurementAreaEditor.qml b/src/WimaView/WimaMeasurementAreaEditor.qml index f40166f7824fcce0e1a6d39748d1819adfda5123..82c704d8f668e4aa848b711866ac3a4f0a870cc0 100644 --- a/src/WimaView/WimaMeasurementAreaEditor.qml +++ b/src/WimaView/WimaMeasurementAreaEditor.qml @@ -33,26 +33,10 @@ Rectangle { property var polygon: areaItem property bool initNecesarry: true - /*onPolylineInteractiveChanged: { - polyline.interactive = polylineInteractive; - }*/ - onPolygonInteractiveChanged: { polygon.interactive = polygonInteractive; } - /*function editPolyline(){ - if (polylineInteractive){ - //polyline.interactive = false; - polylineInteractive = false; - //polygonInteractive = true; - }else{ - //polyline.interactive = true; - polylineInteractive = true; - //polygonInteractive = false; - } - }*/ - @@ -73,7 +57,7 @@ Rectangle { Column { anchors.left: parent.left - anchors.right: parent.rightsetI + anchors.right: parent.right spacing: _margin visible: settingsHeader.checked @@ -87,29 +71,29 @@ Rectangle { QGCLabel { text: qsTr("Altitude") } FactTextField { - fact: areaItem.bottomLayerAltitude - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter + fact: areaItem.bottomLayerAltitude + Layout.fillWidth: true } QGCLabel { text: qsTr("Layers") } FactTextField { fact: areaItem.numberOfLayers - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter + Layout.fillWidth: true } QGCLabel { text: qsTr("Layer Dist.") } FactTextField { fact: areaItem.layerDistance - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter + Layout.fillWidth: true } QGCLabel { text: qsTr("Offset") } FactTextField { fact: areaItem.borderPolygonOffset - Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter + Layout.fillWidth: true } diff --git a/src/WimaView/WimaView.qml b/src/WimaView/WimaView.qml index 89f4a9de4d3e02ffea4ceab7b96406d1eb031434..d2046ec7ceeda60a96fc691261968855cdfe1e61 100644 --- a/src/WimaView/WimaView.qml +++ b/src/WimaView/WimaView.qml @@ -1031,7 +1031,7 @@ QGCView { currentIndex: _missionController.currentPlanViewIndex highlightMoveDuration: 250 visible: _editingLayer == _layerMission && !planControlColapsed - //-- List Elements_missionController->setCurrentPlanViewIndex(sequenceNumber, true); + //-- List Elements delegate: MissionItemEditor { map: editorMap masterController: _planMasterController @@ -1076,6 +1076,18 @@ QGCView { } } + Component { + id: syncLoadFromVehicleOverwrite + QGCViewMessage { + id: syncLoadFromVehicleCheck + message: qsTr("You have unsaved/unsent changes. Loading from the Vehicle will lose these changes. Are you sure you want to load from the Vehicle?") + function accept() { + hideDialog() + masterController.loadFromVehicle() + } + } + } + Component { id: syncLoadFromFileOverwrite QGCViewMessage {