Commit f778e405 authored by Valentin Platzgummer's avatar Valentin Platzgummer

loading almost finished

parent 8250ef7b
...@@ -13,14 +13,13 @@ QGC_LOGGING_CATEGORY(AreaDataLog, "AreaDataLog") ...@@ -13,14 +13,13 @@ QGC_LOGGING_CATEGORY(AreaDataLog, "AreaDataLog")
const char *originKey = "Origin"; const char *originKey = "Origin";
const char *areaListKey = "AreaList"; const char *areaListKey = "AreaList";
const char *initializedKey = "Initialized";
AreaData::AreaData(QObject *parent) : QObject(parent) {} AreaData::AreaData(QObject *parent) : QObject(parent) {}
AreaData::~AreaData() {} AreaData::~AreaData() {}
AreaData::AreaData(const AreaData &other, QObject *parent) AreaData::AreaData(const AreaData &other, QObject *parent)
: QObject(parent), _initialized(false), _showErrorMessages(true) { : QObject(parent), _showErrorMessages(true) {
*this = other; *this = other;
} }
...@@ -35,7 +34,6 @@ AreaData &AreaData::operator=(const AreaData &other) { ...@@ -35,7 +34,6 @@ AreaData &AreaData::operator=(const AreaData &other) {
} }
_origin = other._origin; _origin = other._origin;
_initialized = other._initialized;
return *this; return *this;
} }
...@@ -130,11 +128,10 @@ bool AreaData::isCorrect() { ...@@ -130,11 +128,10 @@ bool AreaData::isCorrect() {
// qDebug() << ss.str().c_str(); // qDebug() << ss.str().c_str();
if (!bg::covered_by(measurementAreaENU, safeAreaENU)) { if (!bg::covered_by(measurementAreaENU, safeAreaENU)) {
_processError(tr("Measurement Area not inside Safe Area. Please adjust " _processError(tr("Measurement Area not inside Safe Area. Please adjust "
"the Measurement Area.")); "the Measurement Area.\n"));
return false; return false;
} }
_initialized = true;
return true; return true;
} }
...@@ -196,7 +193,6 @@ bool AreaData::initialize(const QGeoCoordinate &bottomLeft, ...@@ -196,7 +193,6 @@ bool AreaData::initialize(const QGeoCoordinate &bottomLeft,
safeArea->vertexCoordinate(0).longitude() * 0.5 + safeArea->vertexCoordinate(0).longitude() * 0.5 +
measurementArea->vertexCoordinate(0).longitude() * 0.5)); measurementArea->vertexCoordinate(0).longitude() * 0.5));
_initialized = true;
return true; return true;
} else { } else {
qCWarning(AreaDataLog) qCWarning(AreaDataLog)
...@@ -206,7 +202,12 @@ bool AreaData::initialize(const QGeoCoordinate &bottomLeft, ...@@ -206,7 +202,12 @@ bool AreaData::initialize(const QGeoCoordinate &bottomLeft,
} }
} }
bool AreaData::initialized() { return _initialized; } bool AreaData::initialized() {
auto measurementArea = getGeoArea<MeasurementArea *>(_areaList);
auto safeArea = getGeoArea<SafeArea *>(_areaList);
return measurementArea != nullptr && safeArea != nullptr &&
measurementArea->count() >= 3 && safeArea->count() >= 3;
}
void AreaData::intersection() { void AreaData::intersection() {
if (initialized() && _areasCorrect()) { if (initialized() && _areasCorrect()) {
...@@ -261,6 +262,12 @@ void AreaData::intersection() { ...@@ -261,6 +262,12 @@ void AreaData::intersection() {
} }
} }
MeasurementArea *AreaData::measurementArea() {
return getGeoArea<MeasurementArea *>(_areaList);
}
SafeArea *AreaData::safeArea() { return getGeoArea<SafeArea *>(_areaList); }
bool AreaData::operator==(const AreaData &other) const { bool AreaData::operator==(const AreaData &other) const {
if (_areaList.count() == other._areaList.count()) { if (_areaList.count() == other._areaList.count()) {
for (int i = 0; i < _areaList.count(); ++i) { for (int i = 0; i < _areaList.count(); ++i) {
...@@ -280,43 +287,29 @@ bool AreaData::operator!=(const AreaData &other) const { ...@@ -280,43 +287,29 @@ bool AreaData::operator!=(const AreaData &other) const {
bool AreaData::load(const QJsonObject &obj, QString &errorString) { bool AreaData::load(const QJsonObject &obj, QString &errorString) {
bool returnValue = true; bool returnValue = true;
// load initialized.
{
QString e;
QList<JsonHelper::KeyValidateInfo> keyInfo = {
{initializedKey, QJsonValue::Bool, true},
};
if (JsonHelper::validateKeys(obj, keyInfo, e)) {
_initialized = obj[initializedKey].toBool();
} else {
returnValue = false;
errorString.append(e);
errorString.append("\n");
}
}
// load areaList. // load areaList.
{ if (obj.contains(areaListKey) && obj[areaListKey].isArray()) {
QString e;
QList<JsonHelper::KeyValidateInfo> keyInfo = {
{areaListKey, QJsonValue::Array, true},
};
if (JsonHelper::validateKeys(obj, keyInfo, e)) {
this->clear(); this->clear();
// iterate over json array // iterate over json array
for (const auto valueRef : obj[areaListKey].toArray()) { for (const auto valueRef : obj[areaListKey].toArray()) {
const auto jsonArea = valueRef.toObject(); const auto jsonArea = valueRef.toObject();
// check if area type key is present // check if area type key is present
QList<JsonHelper::KeyValidateInfo> areaInfo = { if (jsonArea.contains(GeoArea::areaTypeKey) &&
{GeoArea::areaTypeKey, QJsonValue::String, true}, jsonArea[GeoArea::areaTypeKey].isString()) {
};
if (!JsonHelper::validateKeys(jsonArea, areaInfo, e)) {
// load MeasurementArea // load MeasurementArea
if (jsonArea[GeoArea::areaTypeKey].toString() == if (jsonArea[GeoArea::areaTypeKey].toString() ==
MeasurementArea::name) { MeasurementArea::name) {
auto area = getGeoArea<MeasurementArea *>(_areaList); auto area = getGeoArea<MeasurementArea *>(_areaList);
if (area == nullptr) { if (area == nullptr) {
auto area = new MeasurementArea(this); auto area = new MeasurementArea(this);
QString e;
if (area->loadFromJson(jsonArea, e)) { if (area->loadFromJson(jsonArea, e)) {
this->insert(area); this->insert(area);
} else { } else {
...@@ -332,11 +325,13 @@ bool AreaData::load(const QJsonObject &obj, QString &errorString) { ...@@ -332,11 +325,13 @@ bool AreaData::load(const QJsonObject &obj, QString &errorString) {
} }
} }
// load SafeArea // load SafeArea
else if (jsonArea[GeoArea::areaTypeKey].toString() == else if (jsonArea[GeoArea::areaTypeKey].toString() == SafeArea::name) {
SafeArea::name) {
auto area = getGeoArea<SafeArea *>(_areaList); auto area = getGeoArea<SafeArea *>(_areaList);
if (area == nullptr) { if (area == nullptr) {
auto area = new SafeArea(this); auto area = new SafeArea(this);
QString e;
if (area->loadFromJson(jsonArea, e)) { if (area->loadFromJson(jsonArea, e)) {
this->insert(area); this->insert(area);
} else { } else {
...@@ -357,41 +352,27 @@ bool AreaData::load(const QJsonObject &obj, QString &errorString) { ...@@ -357,41 +352,27 @@ bool AreaData::load(const QJsonObject &obj, QString &errorString) {
errorString.append(tr("Unknown area type: ") + errorString.append(tr("Unknown area type: ") +
jsonArea[GeoArea::areaTypeKey].toString()); jsonArea[GeoArea::areaTypeKey].toString());
} }
} } else {
// GeoArea::areaTypeKey missing // GeoArea::areaTypeKey missing
else {
returnValue = false; returnValue = false;
errorString.append(e); errorString.append(
errorString.append("\n"); "Area type key missing, not able to determine area type.\n");
}
} }
} }
} else {
// AreaList missing // AreaList missing
else {
returnValue = false; returnValue = false;
errorString.append(e); errorString.append("Not able to load areas.\n");
errorString.append("\n");
}
} }
// load origin // load origin
{ if (obj.contains(originKey) && obj[originKey].isObject()) {
QString e;
QList<JsonHelper::KeyValidateInfo> keyInfo = {
{originKey, QJsonValue::Object, true},
};
if (JsonHelper::validateKeys(obj, keyInfo, e)) {
QGeoCoordinate origin; QGeoCoordinate origin;
QString e;
if (JsonHelper::loadGeoCoordinate(obj[originKey], false, origin, e)) { if (JsonHelper::loadGeoCoordinate(obj[originKey], false, origin, e)) {
_origin = origin; _origin = origin;
} }
} }
}
// check if this is correct.
if (!this->isCorrect()) {
returnValue = false;
}
return returnValue; return returnValue;
} }
...@@ -402,7 +383,6 @@ bool AreaData::save(QJsonObject &obj) { ...@@ -402,7 +383,6 @@ bool AreaData::save(QJsonObject &obj) {
QJsonValue jsonOrigin; QJsonValue jsonOrigin;
JsonHelper::saveGeoCoordinate(_origin, false, jsonOrigin); JsonHelper::saveGeoCoordinate(_origin, false, jsonOrigin);
temp[originKey] = jsonOrigin; temp[originKey] = jsonOrigin;
temp[initializedKey] = _initialized;
QJsonArray jsonAreaList; QJsonArray jsonAreaList;
for (int i = 0; i < _areaList.count(); ++i) { for (int i = 0; i < _areaList.count(); ++i) {
......
...@@ -71,6 +71,9 @@ public: ...@@ -71,6 +71,9 @@ public:
Q_INVOKABLE bool initialized(); Q_INVOKABLE bool initialized();
Q_INVOKABLE void intersection(); Q_INVOKABLE void intersection();
Q_INVOKABLE MeasurementArea *measurementArea();
Q_INVOKABLE SafeArea *safeArea();
bool operator==(const AreaData &other) const; bool operator==(const AreaData &other) const;
bool operator!=(const AreaData &other) const; bool operator!=(const AreaData &other) const;
...@@ -98,7 +101,6 @@ private: ...@@ -98,7 +101,6 @@ private:
QGeoCoordinate _origin; QGeoCoordinate _origin;
QmlObjectListModel _areaList; QmlObjectListModel _areaList;
bool _initialized;
QString _errorString; QString _errorString;
bool _showErrorMessages; bool _showErrorMessages;
}; };
...@@ -21,8 +21,6 @@ template <> inline auto get<1>(const IntPoint &p) { return p.Y; } ...@@ -21,8 +21,6 @@ template <> inline auto get<1>(const IntPoint &p) { return p.Y; }
namespace routing { namespace routing {
namespace { namespace {
const QString generatorType = "CircularGenerator";
GeneratorBase *creator(QObject *parent) { GeneratorBase *creator(QObject *parent) {
return new CircularGenerator(parent); return new CircularGenerator(parent);
} }
...@@ -33,8 +31,6 @@ const char *minLengthKey = "MinLength"; ...@@ -33,8 +31,6 @@ const char *minLengthKey = "MinLength";
const char *referenceKey = "ReferencePoint"; const char *referenceKey = "ReferencePoint";
} // namespace } // namespace
REGISTER_GENERATOR(generatorType, creator)
bool circularTransects(const snake::FPoint &reference, bool circularTransects(const snake::FPoint &reference,
const snake::FPolygon &polygon, const snake::FPolygon &polygon,
const std::vector<snake::FPolygon> &tiles, const std::vector<snake::FPolygon> &tiles,
...@@ -42,9 +38,20 @@ bool circularTransects(const snake::FPoint &reference, ...@@ -42,9 +38,20 @@ bool circularTransects(const snake::FPoint &reference,
snake::Length minLength, snake::Transects &transects); snake::Length minLength, snake::Transects &transects);
const char *CircularGenerator::settingsGroup = "CircularGenerator"; const char *CircularGenerator::settingsGroup = "CircularGenerator";
const char *CircularGenerator::typeString = "CircularGenerator";
REGISTER_GENERATOR(CircularGenerator::typeString, creator)
CircularGenerator::CircularGenerator(QObject *parent) CircularGenerator::CircularGenerator(QObject *parent)
: CircularGenerator(nullptr, parent) {} : GeneratorBase(parent),
_metaDataMap(FactMetaData::createMapFromJsonFile(
QStringLiteral(":/json/CircularGenerator.SettingsGroup.json"), this)),
_distance(settingsGroup, _metaDataMap[distanceKey]),
_deltaAlpha(settingsGroup, _metaDataMap[deltaAlphaKey]),
_minLength(settingsGroup, _metaDataMap[minLengthKey]),
_measurementArea(nullptr) {
init();
}
CircularGenerator::CircularGenerator(GeneratorBase::Data d, QObject *parent) CircularGenerator::CircularGenerator(GeneratorBase::Data d, QObject *parent)
: GeneratorBase(d, parent), : GeneratorBase(d, parent),
...@@ -54,28 +61,20 @@ CircularGenerator::CircularGenerator(GeneratorBase::Data d, QObject *parent) ...@@ -54,28 +61,20 @@ CircularGenerator::CircularGenerator(GeneratorBase::Data d, QObject *parent)
_deltaAlpha(settingsGroup, _metaDataMap[deltaAlphaKey]), _deltaAlpha(settingsGroup, _metaDataMap[deltaAlphaKey]),
_minLength(settingsGroup, _metaDataMap[minLengthKey]), _minLength(settingsGroup, _metaDataMap[minLengthKey]),
_measurementArea(nullptr) { _measurementArea(nullptr) {
connect(this->distance(), &Fact::rawValueChanged, this, init();
&GeneratorBase::generatorChanged);
connect(this->deltaAlpha(), &Fact::rawValueChanged, this,
&GeneratorBase::generatorChanged);
connect(this->minLength(), &Fact::rawValueChanged, this,
&GeneratorBase::generatorChanged);
connect(this, &CircularGenerator::referenceChanged, this,
&GeneratorBase::generatorChanged);
setName(tr("Circular Generator"));
} }
QString CircularGenerator::editorQml() { QString CircularGenerator::editorQml() const {
return QStringLiteral("CircularGeneratorEditor.qml"); return QStringLiteral("CircularGeneratorEditor.qml");
} }
QString CircularGenerator::mapVisualQml() { QString CircularGenerator::mapVisualQml() const {
return QStringLiteral("CircularGeneratorMapVisual.qml"); return QStringLiteral("CircularGeneratorMapVisual.qml");
} }
QString CircularGenerator::abbreviation() { return tr("C. Gen."); } QString CircularGenerator::abbreviation() const { return tr("C. Gen."); }
QString CircularGenerator::type() { return generatorType; } QString CircularGenerator::type() const { return typeString; }
bool CircularGenerator::get(Generator &generator) { bool CircularGenerator::get(Generator &generator) {
if (this->_d) { if (this->_d) {
...@@ -327,6 +326,7 @@ void CircularGenerator::resetReferenceIfInvalid() { ...@@ -327,6 +326,7 @@ void CircularGenerator::resetReferenceIfInvalid() {
} }
void CircularGenerator::resetReference() { void CircularGenerator::resetReference() {
if (this->_d != nullptr) {
auto measurementArea = auto measurementArea =
getGeoArea<const MeasurementArea *>(*this->_d->areaList()); getGeoArea<const MeasurementArea *>(*this->_d->areaList());
...@@ -341,6 +341,7 @@ void CircularGenerator::resetReference() { ...@@ -341,6 +341,7 @@ void CircularGenerator::resetReference() {
qCDebug(CircularGeneratorLog) qCDebug(CircularGeneratorLog)
<< "resetReference(): measurement area == nullptr"; << "resetReference(): measurement area == nullptr";
} }
}
} }
Fact *CircularGenerator::distance() { return &_distance; } Fact *CircularGenerator::distance() { return &_distance; }
...@@ -350,8 +351,34 @@ Fact *CircularGenerator::deltaAlpha() { return &_deltaAlpha; } ...@@ -350,8 +351,34 @@ Fact *CircularGenerator::deltaAlpha() { return &_deltaAlpha; }
Fact *CircularGenerator::minLength() { return &_minLength; } Fact *CircularGenerator::minLength() { return &_minLength; }
void CircularGenerator::onAreaListChanged() { void CircularGenerator::onAreaListChanged() {
auto *measurementArea = getGeoArea<MeasurementArea *>(*this->_d->areaList()); if (this->_d != nullptr) {
auto *measurementArea =
getGeoArea<MeasurementArea *>(*this->_d->areaList());
setMeasurementArea(measurementArea); setMeasurementArea(measurementArea);
}
}
void CircularGenerator::onDataChanged() {
if (this->_d != nullptr) {
connect(this->_d, &AreaData::areaListChanged, this,
&CircularGenerator::onAreaListChanged);
onAreaListChanged();
}
}
void CircularGenerator::init() {
connect(this->distance(), &Fact::rawValueChanged, this,
&GeneratorBase::generatorChanged);
connect(this->deltaAlpha(), &Fact::rawValueChanged, this,
&GeneratorBase::generatorChanged);
connect(this->minLength(), &Fact::rawValueChanged, this,
&GeneratorBase::generatorChanged);
connect(this, &CircularGenerator::referenceChanged, this,
&GeneratorBase::generatorChanged);
connect(this, &CircularGenerator::dataChanged, this,
&CircularGenerator::onDataChanged);
onDataChanged();
setName(tr("Circular Generator"));
} }
void CircularGenerator::setMeasurementArea(MeasurementArea *area) { void CircularGenerator::setMeasurementArea(MeasurementArea *area) {
......
...@@ -20,11 +20,11 @@ public: ...@@ -20,11 +20,11 @@ public:
Q_PROPERTY(Fact *deltaAlpha READ deltaAlpha CONSTANT) Q_PROPERTY(Fact *deltaAlpha READ deltaAlpha CONSTANT)
Q_PROPERTY(Fact *minLength READ minLength CONSTANT) Q_PROPERTY(Fact *minLength READ minLength CONSTANT)
virtual QString editorQml() override; virtual QString editorQml() const override;
virtual QString mapVisualQml() override; virtual QString mapVisualQml() const override;
virtual QString abbreviation() override; virtual QString abbreviation() const override;
virtual QString type() override; virtual QString type() const override;
virtual bool get(Generator &generator) override; virtual bool get(Generator &generator) override;
...@@ -47,6 +47,7 @@ public: ...@@ -47,6 +47,7 @@ public:
virtual bool load(const QJsonObject &obj, QString &guiErrorMessage) override; virtual bool load(const QJsonObject &obj, QString &guiErrorMessage) override;
static const char *settingsGroup; static const char *settingsGroup;
static const char *typeString;
signals: signals:
void referenceChanged(); void referenceChanged();
...@@ -55,8 +56,12 @@ public slots: ...@@ -55,8 +56,12 @@ public slots:
Q_INVOKABLE void resetReferenceIfInvalid(); Q_INVOKABLE void resetReferenceIfInvalid();
Q_INVOKABLE void resetReference(); Q_INVOKABLE void resetReference();
private: private slots:
void onAreaListChanged(); void onAreaListChanged();
void onDataChanged();
private:
void init();
void setMeasurementArea(MeasurementArea *area); void setMeasurementArea(MeasurementArea *area);
QGeoCoordinate _reference; QGeoCoordinate _reference;
......
...@@ -11,20 +11,18 @@ GeneratorBase::GeneratorBase(QObject *parent) ...@@ -11,20 +11,18 @@ GeneratorBase::GeneratorBase(QObject *parent)
: GeneratorBase(nullptr, parent) {} : GeneratorBase(nullptr, parent) {}
GeneratorBase::GeneratorBase(GeneratorBase::Data d, QObject *parent) GeneratorBase::GeneratorBase(GeneratorBase::Data d, QObject *parent)
: QObject(parent), _d(d) { : QObject(parent), _d(d) {}
establishConnections();
}
GeneratorBase::~GeneratorBase() {} GeneratorBase::~GeneratorBase() {}
bool GeneratorBase::save(QJsonObject &obj) const { bool GeneratorBase::save(QJsonObject &obj) const {
obj[typeKey] = type(); obj[typeKey] = this->type();
obj[name] = name(); obj[nameKey] = this->name();
return true; return true;
} }
bool GeneratorBase::load(const QJsonObject &obj, QString &errorString) { bool GeneratorBase::load(const QJsonObject &obj, QString &errorString) {
if (obj.contains[nameKey] && obj[nameKey].isString()) { if (obj.contains(nameKey) && obj[nameKey].isString()) {
setName(obj[nameKey].toString()); setName(obj[nameKey].toString());
return true; return true;
} else { } else {
...@@ -46,18 +44,12 @@ void GeneratorBase::setName(const QString &name) { ...@@ -46,18 +44,12 @@ void GeneratorBase::setName(const QString &name) {
GeneratorBase::Data GeneratorBase::data() const { return _d; } GeneratorBase::Data GeneratorBase::data() const { return _d; }
void GeneratorBase::setData(Data d) { void GeneratorBase::setData(Data d) {
if (d != _d && d != nullptr) { if (d != _d) {
deleteConnections();
_d = d; _d = d;
establishConnections();
emit dataChanged(); emit dataChanged();
} }
} }
void GeneratorBase::establishConnections() {}
void GeneratorBase::deleteConnections() {}
GeneratorFactory::GeneratorFactory() {} GeneratorFactory::GeneratorFactory() {}
GeneratorFactory *GeneratorFactory::createInstance() { GeneratorFactory *GeneratorFactory::createInstance() {
...@@ -112,14 +104,14 @@ GeneratorBase *GeneratorFactory::create(const QJsonObject &jsonGenerator, ...@@ -112,14 +104,14 @@ GeneratorBase *GeneratorFactory::create(const QJsonObject &jsonGenerator,
return nullptr; return nullptr;
} }
} else { } else {
errorMessage.append(QObject::tr("Not able to create generator of type") + errorMessage.append(
" " + QObject::tr("Not able to create generator of type.\n") + " " +
jsonGenerator[GeneratorBase::typeKey].toString()); jsonGenerator[GeneratorBase::typeKey].toString());
return nullptr; return nullptr;
} }
} else { } else {
errorMessage.append(QObject::tr( errorMessage.append(QObject::tr(
"Not able to load Generator. Impossible to determine type.")); "Not able to load Generator. Impossible to determine type.\n"));
return nullptr; return nullptr;
} }
} }
......
...@@ -53,8 +53,6 @@ signals: ...@@ -53,8 +53,6 @@ signals:
void nameChanged(); void nameChanged();
protected: protected:
virtual void establishConnections();
virtual void deleteConnections();
Data _d; Data _d;
QString _name; QString _name;
...@@ -87,7 +85,7 @@ private: ...@@ -87,7 +85,7 @@ private:
#define REGISTER_GENERATOR(type, creator) \ #define REGISTER_GENERATOR(type, creator) \
namespace { \ namespace { \
auto registered_##type = \ auto registered = \
GeneratorFactory::instance() -> registerGenerator(type, creator); \ GeneratorFactory::instance() -> registerGenerator(type, creator); \
} }
} // namespace routing } // namespace routing
...@@ -14,8 +14,6 @@ ...@@ -14,8 +14,6 @@
namespace routing { namespace routing {
namespace { namespace {
const QString generatorType = "LinearGenerator";
GeneratorBase *creator(QObject *parent) { return new LinearGenerator(parent); } GeneratorBase *creator(QObject *parent) { return new LinearGenerator(parent); }
const char *distanceKey = "TransectDistance"; const char *distanceKey = "TransectDistance";
...@@ -23,7 +21,6 @@ const char *alphaKey = "Alpha"; ...@@ -23,7 +21,6 @@ const char *alphaKey = "Alpha";
const char *minLengthKey = "MinLength"; const char *minLengthKey = "MinLength";
} // namespace } // namespace
REGISTER_GENERATOR(generatorType, creator)
QGC_LOGGING_CATEGORY(LinearGeneratorLog, "LinearGeneratorLog") QGC_LOGGING_CATEGORY(LinearGeneratorLog, "LinearGeneratorLog")
bool linearTransects(const snake::FPolygon &polygon, bool linearTransects(const snake::FPolygon &polygon,
...@@ -32,9 +29,20 @@ bool linearTransects(const snake::FPolygon &polygon, ...@@ -32,9 +29,20 @@ bool linearTransects(const snake::FPolygon &polygon,
snake::Length minLength, snake::Transects &transects); snake::Length minLength, snake::Transects &transects);
const char *LinearGenerator::settingsGroup = "LinearGenerator"; const char *LinearGenerator::settingsGroup = "LinearGenerator";
const char *LinearGenerator::typeString = "LinearGenerator";
REGISTER_GENERATOR("LinearGenerator", creator)
LinearGenerator::LinearGenerator(QObject *parent) LinearGenerator::LinearGenerator(QObject *parent)
: LinearGenerator(nullptr, parent) {} : GeneratorBase(nullptr, parent),
_metaDataMap(FactMetaData::createMapFromJsonFile(
QStringLiteral(":/json/LinearGenerator.SettingsGroup.json"), this)),
_distance(settingsGroup, _metaDataMap[distanceKey]),
_alpha(settingsGroup, _metaDataMap[alphaKey]),
_minLength(settingsGroup, _metaDataMap[minLengthKey]),
_measurementArea(nullptr) {
init();
}
LinearGenerator::LinearGenerator(GeneratorBase::Data d, QObject *parent) LinearGenerator::LinearGenerator(GeneratorBase::Data d, QObject *parent)
: GeneratorBase(d, parent), : GeneratorBase(d, parent),
...@@ -43,30 +51,24 @@ LinearGenerator::LinearGenerator(GeneratorBase::Data d, QObject *parent) ...@@ -43,30 +51,24 @@ LinearGenerator::LinearGenerator(GeneratorBase::Data d, QObject *parent)
_distance(settingsGroup, _metaDataMap[distanceKey]), _distance(settingsGroup, _metaDataMap[distanceKey]),
_alpha(settingsGroup, _metaDataMap[alphaKey]), _alpha(settingsGroup, _metaDataMap[alphaKey]),
_minLength(settingsGroup, _metaDataMap[minLengthKey]), _minLength(settingsGroup, _metaDataMap[minLengthKey]),
_measurementArea(nullptr), _safeArea(nullptr) { _measurementArea(nullptr) {
connect(this->distance(), &Fact::rawValueChanged, this, init();
&GeneratorBase::generatorChanged);
connect(this->alpha(), &Fact::rawValueChanged, this,
&GeneratorBase::generatorChanged);
connect(this->minLength(), &Fact::rawValueChanged, this,
&GeneratorBase::generatorChanged);
connect(this->_d, &AreaData::areaListChanged, this,
&LinearGenerator::onAreaListChanged);
setName(tr("Linear Generator"));
} }
QString LinearGenerator::editorQml() {