WimaPolygon.h 3.11 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

    //Property setters
    void        setMaxAltitude     (double alt);
    void        setVehicle         (Vehicle* vehicle);
46
    void        setIsCurrentPolygon(bool isCurrentPolygon);
47

48

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


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


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

70