Commit b43e55c3 authored by Valentin Platzgummer's avatar Valentin Platzgummer

border poly edited, not working yet

parent 62b3a020
...@@ -272,7 +272,7 @@ ...@@ -272,7 +272,7 @@
<file alias="Video.SettingsGroup.json">src/Settings/Video.SettingsGroup.json</file> <file alias="Video.SettingsGroup.json">src/Settings/Video.SettingsGroup.json</file>
<file alias="WimaMeasurementArea.SettingsGroup.json">src/Wima/WimaMeasurementArea.SettingsGroup.json</file> <file alias="WimaMeasurementArea.SettingsGroup.json">src/Wima/WimaMeasurementArea.SettingsGroup.json</file>
<file alias="CircularSurvey.SettingsGroup.json">src/Wima/CircularSurvey.SettingsGroup.json</file> <file alias="CircularSurvey.SettingsGroup.json">src/Wima/CircularSurvey.SettingsGroup.json</file>
<file>src/Wima/WimaArea.SettingsGroup.json</file> <file alias="WimaArea.SettingsGroup.json">src/Wima/WimaArea.SettingsGroup.json</file>
</qresource> </qresource>
<qresource prefix="/MockLink"> <qresource prefix="/MockLink">
<file alias="APMArduCopterMockLink.params">src/comm/APMArduCopterMockLink.params</file> <file alias="APMArduCopterMockLink.params">src/comm/APMArduCopterMockLink.params</file>
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
"defaultValue": 5 "defaultValue": 5
}, },
{ {
"name": "showBorderPolygon", "name": "ShowBorderPolygon",
"shortDescription": "Border polygon will be displayed if checked.", "shortDescription": "Border polygon will be displayed if checked.",
"type": "bool", "type": "bool",
"defaultValue": true "defaultValue": true
......
...@@ -24,20 +24,27 @@ const char* WimaArea::areaTypeName = "AreaType"; ...@@ -24,20 +24,27 @@ const char* WimaArea::areaTypeName = "AreaType";
const char* WimaArea::borderPolygonOffsetName = "BorderPolygonOffset"; const char* WimaArea::borderPolygonOffsetName = "BorderPolygonOffset";
const char* WimaArea::settingsGroup ="MeasurementArea"; const char* WimaArea::showBorderPolygonName = "ShowBorderPolygon";
const char* WimaArea::settingsGroup = "MeasurementArea";
// Constructors // Constructors
WimaArea::WimaArea(QObject *parent) WimaArea::WimaArea(QObject *parent)
: QGCMapPolygon (parent) : QGCMapPolygon (parent)
, _metaDataMap (FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/WimaArea.SettingsGroup.json"), this /* QObject parent */))
, _borderPolygonOffset (SettingsFact(settingsGroup, _metaDataMap[borderPolygonOffsetName], this /* QObject parent */))
, _showBorderPolygon (SettingsFact(settingsGroup, _metaDataMap[showBorderPolygonName], this /* QObject parent */))
, _borderPolygon (QGCMapPolygon(this))
{ {
init(); init();
_maxAltitude = 30; _maxAltitude = 30;
} }
WimaArea::WimaArea(const WimaArea &other, QObject *parent) WimaArea::WimaArea(const WimaArea &other, QObject *parent)
: QGCMapPolygon (parent) : QGCMapPolygon (parent)
, _metaDataMap (FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/WimaArea.SettingsGroup.json"), this /* QObject parent */)) , _metaDataMap (FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/WimaArea.SettingsGroup.json"), this /* QObject parent */))
, _borderPolygonOffset (SettingsFact(settingsGroup, _metaDataMap[borderPolygonOffsetName], this /* QObject parent */)) , _borderPolygonOffset (SettingsFact(settingsGroup, _metaDataMap[borderPolygonOffsetName], this /* QObject parent */))
, _showBorderPolygon (SettingsFact(settingsGroup, _metaDataMap[showBorderPolygonName], this /* QObject parent */))
, _borderPolygon (QGCMapPolygon(this))
{ {
init(); init();
*this = other; *this = other;
...@@ -73,6 +80,11 @@ void WimaArea::setMaxAltitude(double altitude) ...@@ -73,6 +80,11 @@ void WimaArea::setMaxAltitude(double altitude)
} }
} }
void WimaArea::setShowBorderPolygon(bool showBorderPolygon)
{
_showBorderPolygon.setRawValue(showBorderPolygon);
}
void WimaArea::setBorderPolygonOffset(double offset) void WimaArea::setBorderPolygonOffset(double offset)
...@@ -84,12 +96,36 @@ void WimaArea::setBorderPolygonOffset(double offset) ...@@ -84,12 +96,36 @@ void WimaArea::setBorderPolygonOffset(double offset)
} }
} }
void WimaArea::recalcMeasurementPolygon() void WimaArea::recalcPolygons()
{ {
this->setPath(_borderPolygon.coordinateList()); if (_showBorderPolygon.rawValue().toBool() == true) {
this->offset(-_borderPolygonOffset.rawValue().toDouble());
if ( _borderPolygon.count() >= 3 ) {
this->setPath(_borderPolygon.coordinateList());
this->offset(-_borderPolygonOffset.rawValue().toDouble());
}
} else {
if (this->count() >= 3){
_borderPolygon.setPath(this->coordinateList());
_borderPolygon.offset(_borderPolygonOffset.rawValue().toDouble());
}
emit borderPolygonChanged();
}
emit borderPolygonChanged(); }
void WimaArea::updatePolygonConnections(QVariant showBorderPolygon)
{
if (showBorderPolygon.toBool() == true) {
connect(&_borderPolygon, &QGCMapPolygon::pathChanged, this, &WimaArea::recalcPolygons);
disconnect(this, &QGCMapPolygon::pathChanged, this, &WimaArea::recalcPolygons);
} else {
disconnect(&_borderPolygon, &QGCMapPolygon::pathChanged, this, &WimaArea::recalcPolygons);
connect(this, &QGCMapPolygon::pathChanged, this, &WimaArea::recalcPolygons);
}
} }
/*! /*!
...@@ -335,10 +371,11 @@ bool WimaArea::isSimplePolygon() ...@@ -335,10 +371,11 @@ bool WimaArea::isSimplePolygon()
void WimaArea::saveToJson(QJsonObject &json) void WimaArea::saveToJson(QJsonObject &json)
{ {
this->QGCMapPolygon::saveToJson(json); this->QGCMapPolygon::saveToJson(json);
json[maxAltitudeName] = _maxAltitude;
json[maxAltitudeName] = _maxAltitude;
json[borderPolygonOffsetName] = _borderPolygonOffset.rawValue().toDouble(); json[borderPolygonOffsetName] = _borderPolygonOffset.rawValue().toDouble();
json[areaTypeName] = wimaAreaName; json[showBorderPolygonName] = _showBorderPolygon.rawValue().toDouble();
// add WimaVehicle if necessary.. json[areaTypeName] = wimaAreaName;
} }
/*! /*!
...@@ -365,6 +402,13 @@ bool WimaArea::loadFromJson(const QJsonObject &json, QString& errorString) ...@@ -365,6 +402,13 @@ bool WimaArea::loadFromJson(const QJsonObject &json, QString& errorString)
errorString.append(tr("Could not load border polygon offset value!\n")); errorString.append(tr("Could not load border polygon offset value!\n"));
return false; return false;
} }
if ( json.contains(showBorderPolygonName) && json[showBorderPolygonName].isDouble()) {
_showBorderPolygon.setRawValue(json[showBorderPolygonName].toBool());
} else {
errorString.append(tr("Could not load border polygon offset value!\n"));
return false;
}
} else { } else {
qWarning() << errorString; qWarning() << errorString;
return false; return false;
...@@ -380,8 +424,16 @@ bool WimaArea::loadFromJson(const QJsonObject &json, QString& errorString) ...@@ -380,8 +424,16 @@ bool WimaArea::loadFromJson(const QJsonObject &json, QString& errorString)
void WimaArea::init() void WimaArea::init()
{ {
this->setObjectName(wimaAreaName); this->setObjectName(wimaAreaName);
connect(&_borderPolygon, &QGCMapPolygon::pathChanged, this, &WimaArea::recalcPolygons);
if (_showBorderPolygon.rawValue().toBool() == true){
connect(&_borderPolygon, &QGCMapPolygon::pathChanged, this, &WimaArea::recalcPolygons);
} else {
connect(this, &QGCMapPolygon::pathChanged, this, &WimaArea::recalcPolygons);
}
connect(&_borderPolygonOffset, &SettingsFact::rawValueChanged, this, &WimaArea::recalcPolygons); connect(&_borderPolygonOffset, &SettingsFact::rawValueChanged, this, &WimaArea::recalcPolygons);
connect(&_showBorderPolygon, &SettingsFact::rawValueChanged, this, &WimaArea::updatePolygonConnections);
} }
/*! /*!
......
...@@ -72,6 +72,7 @@ public: ...@@ -72,6 +72,7 @@ public:
static const char* wimaAreaName; static const char* wimaAreaName;
static const char* areaTypeName; static const char* areaTypeName;
static const char* borderPolygonOffsetName; static const char* borderPolygonOffsetName;
static const char* showBorderPolygonName;
static const char* settingsGroup; static const char* settingsGroup;
signals: signals:
...@@ -86,6 +87,8 @@ public slots: ...@@ -86,6 +87,8 @@ public slots:
private slots: private slots:
void recalcPolygons (void); void recalcPolygons (void);
void updatePolygonConnections(QVariant value);
private: private:
void init(); void init();
......
...@@ -96,6 +96,13 @@ Rectangle { ...@@ -96,6 +96,13 @@ Rectangle {
Layout.fillWidth: true Layout.fillWidth: true
} }
QGCLabel { text: qsTr("Border Poly.") }
FactTextField {
fact: areaItem.showBorderPolygon
Layout.fillWidth: true
}
} }
......
Markdown is supported
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