WimaGOperationArea.h 3.55 KB
Newer Older
1
#pragma once
2

3 4 5 6
#include <QObject>
#include "WimaArea.h"
#include "SettingsFact.h"
#include "WimaTrackerPolyline.h"
7
#include "WimaGOperationArea.h"
8

9 10 11
#include "QScopedPointer"

class WimaGOperationArea : public WimaArea
12
{
13
    Q_OBJECT
14
public:
15
    WimaGOperationArea(QObject* parent = nullptr);
16
    WimaGOperationArea(const WimaGOperationArea &other, QObject *parent = nullptr);
17

18 19 20 21 22
    Q_PROPERTY(Fact*            bottomLayerAltitude     READ bottomLayerAltitudeFact    CONSTANT)
    Q_PROPERTY(Fact*            numberOfLayers          READ numberOfLayersFact         CONSTANT)
    Q_PROPERTY(Fact*            layerDistance           READ layerDistanceFact          CONSTANT)
    Q_PROPERTY(Fact*            borderPolygonOffset     READ borderPolygonOffsetFact    CONSTANT)
    Q_PROPERTY(QGCMapPolygon    borderPolygon           READ borderPolygon              NOTIFY borderPolygonChanged)
23 24 25 26 27 28

    // Overrides from WimaPolygon
    QString         mapVisualQML    (void) const { return "WimaGOperationAreaMapVisual.qml";}
    QString         editorQML       (void) const { return "WimaGOperationAreaEditor.qml";}

    // Property accessors
29 30 31 32 33 34 35 36 37
    Fact*           bottomLayerAltitudeFact (void)          { return &_bottomLayerAltitude;}
    Fact*           numberOfLayersFact      (void)          { return &_numberOfLayers;}
    Fact*           layerDistanceFact       (void)          { return &_layerDistance;}
    Fact*           borderPolygonOffsetFact (void)          { return &_borderPolygonOffset;}
    double          bottomLayerAltitude     (void) const    { return _bottomLayerAltitude.rawValue().toDouble();}
    int             numberOfLayers          (void) const    { return _numberOfLayers.rawValue().toInt();}
    double          layerDistance           (void) const    { return _layerDistance.rawValue().toDouble();}
    double          borderPolygonOffset     (void) const    { return _borderPolygonOffset.rawValue().toDouble();}
    QGCMapPolygon   borderPolygon           (void) const    { return _borderPolygon;}
38

39 40 41 42
    // Member Methodes
    void saveToJson(QJsonObject& json);
    bool loadFromJson(const QJsonObject& json, QString &errorString);

43 44 45
    // Friends
    friend void print(const WimaGOperationArea& area, QString outputStr);
    friend void print(const WimaGOperationArea& area);
46

47
    // Static Variables
48 49 50 51
    static const char* settingsGroup;
    static const char* bottomLayerAltitudeName;
    static const char* numberOfLayersName;
    static const char* layerDistanceName;
52
    static const char* borderPolygonOffsetName;
53
    static const char* wimaGOperationAreaName;
54 55 56 57 58 59

signals:
    void bottomLayerAltitudeChanged     (void);
    void numberOfLayersChanged          (void);
    void layerDistanceChanged           (void);
    void polylineChanged                (void);
60
    void vehicleCorridorChanged         (WimaVCorridor* corridor);
61 62
    void borderPolygonChanged           (void);

63 64 65 66 67 68 69
public slots:
    /// Updates this with data from area
    void update(const WimaGOperationArea &area);
    void setBottomLayerAltitude (double altitude);
    void setNumberOfLayers      (double numLayers);
    void setLayerDistance       (double layerDistance);
    void setBorderPolygonOffset (double offset);
70 71
private slots:
    void recalcBorderPolygon            (void);
72
private:
73 74 75 76
    // Member Methodes
    void init();

    // Members
77 78 79 80 81
    QMap<QString, FactMetaData*> _metaDataMap;

    SettingsFact            _bottomLayerAltitude;
    SettingsFact            _numberOfLayers;
    SettingsFact            _layerDistance;
82
    SettingsFact            _borderPolygonOffset;
83

84
    QGCMapPolygon           _borderPolygon;
85 86
};

87