WimaPolygon.h 3.16 KB
Newer Older
1 2
#pragma once

3 4

#include "QGCMapPolygon.h"
5
#include "QGCMapPolyline.h"
6
#include "Vehicle.h"
7
#include "qobject.h"
8 9 10
#include "WimaVehicle.h"


11 12 13



14
class WimaPolygon : public QObject //abstract base class for all WimaPolygons
15 16 17 18
{
    Q_OBJECT
public:
    WimaPolygon(QObject* parent = nullptr);
19
    WimaPolygon(QGCMapPolygon* other, QObject* parent = nullptr);
20 21 22



23 24 25 26 27
    Q_PROPERTY(double                   maxAltitude                 READ maxAltitude                WRITE setMaxAltitude                NOTIFY maxAltitudeChanged)
    Q_PROPERTY(QString                  mapVisualQML                READ mapVisualQML                                                   CONSTANT)
    Q_PROPERTY(QString                  editorQML                   READ editorQML                                                      CONSTANT)
    Q_PROPERTY(Vehicle*                 vehicle                     READ vehicle                    WRITE setVehicle                    NOTIFY vehicleChanged)
    Q_PROPERTY(QGCMapPolygon*           polygon                     READ polygon                                                        NOTIFY polygonChanged)
28 29 30
    Q_PROPERTY(QmlObjectListModel*      subPolygons                 READ subPolygons                                                    NOTIFY subPolygonsChanged)
    Q_PROPERTY(QmlObjectListModel*      subPolylines                READ subPolylines                                                   NOTIFY subPolylinesChanged)
    Q_PROPERTY(bool                     isCurrentPolygon            READ isCurrentPolygon           WRITE setIsCurrentPolygon           NOTIFY isCurrentPolygonChanged)
31 32

    //Property accessors
33
    double                  maxAltitude         (void) const    { return _maxAltitude;}
34
    Vehicle*                vehicle             (void) const    { return _vehicle.vehicle();}
35
    QGCMapPolygon*          polygon             (void) const    { return _polygon;}
36 37 38
    QmlObjectListModel*     subPolygons         (void) const    { return _subPolygons;}
    QmlObjectListModel*     subPolylines        (void) const    { return _subPolylines;}
    bool                    isCurrentPolygon    (void) const    { return _isCurrentPolygon;}
39 40 41

    virtual QString                     mapVisualQML    (void) const = 0;
    virtual QString                     editorQML       (void) const = 0;
42 43 44 45 46

    //Property setters
    void        setMaxAltitude     (double alt);
    void        setName            (QString name);
    void        setVehicle         (Vehicle* vehicle);
47
    void        setIsCurrentPolygon(bool isCurrentPolygon);
48

49

50
    QList<QGCMapPolygon*>* splitPolygonArea(int numberOfFractions); // use QScopedPointer to store return value
51 52 53


signals:
54 55
    void    maxAltitudeChanged      (void);
    void    vehicleChanged          (void);
56 57 58 59
    void    polygonChanged          (void);
    void    subPolygonsChanged      (void);
    void    subPolylinesChanged     (void);
    void    isCurrentPolygonChanged (void);
60 61


62
protected:
63
    double                  _maxAltitude;
64
    WimaVehicle             _vehicle;
65
    QGCMapPolygon*          _polygon;
66 67 68
    QmlObjectListModel*     _subPolygons;
    QmlObjectListModel*     _subPolylines;
    bool                    _isCurrentPolygon;
69 70
};

71