WimaAreaData.h 1.69 KB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
1 2 3 4 5 6
#pragma once

#include <QObject>

#include "QGeoCoordinate"

7 8
#include "WimaArea.h"

9
class WimaAreaData : public QObject// Abstract class for all WimaAreaData derived objects
Valentin Platzgummer's avatar
Valentin Platzgummer committed
10 11 12 13
{
    Q_OBJECT

public:
14
    Q_PROPERTY(const QVariantList path READ path NOTIFY pathChanged)
15
    Q_PROPERTY(QString            type READ type        CONSTANT)
Valentin Platzgummer's avatar
Valentin Platzgummer committed
16

17
    WimaAreaData(QObject *parent = nullptr);
18
    WimaAreaData(const WimaAreaData& otherData) = delete; // avoid slicing
19
    WimaAreaData& operator=(const WimaAreaData& otherData) = delete; // avoid slicing
Valentin Platzgummer's avatar
Valentin Platzgummer committed
20

21 22 23
    double                  maxAltitude()           const;
    QVariantList            path()                  const;
    QGeoCoordinate          center()                const;
24
    const QList<QGeoCoordinate> &coordinateList() const;
25
    bool                    containsCoordinate(const QGeoCoordinate &coordinate)    const;
26
    virtual QString         type() const = 0;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
27

28
    void append(const QGeoCoordinate &c);
29
    void push_back(const QGeoCoordinate &c);
30
    void clear();
31

32 33 34
signals:
    void maxAltitudeChanged (double maxAltitude);
    void pathChanged        (const QVariantList& coordinateList);
35
    void centerChanged      (void);
Valentin Platzgummer's avatar
Valentin Platzgummer committed
36 37 38

public slots:
    void setMaxAltitude(double maxAltitude);
39
    void setPath(const QList<QGeoCoordinate> &coordinateList);
40
    void setPath(const QVariantList &coordinateList);
41
    void setCenter(const QGeoCoordinate &center);
Valentin Platzgummer's avatar
Valentin Platzgummer committed
42

43 44
protected:
    void assign(const WimaAreaData &other);
45
    void assign(const WimaArea    &other);
46

Valentin Platzgummer's avatar
Valentin Platzgummer committed
47
private:
48 49 50
    // Member Functions

    // Member Variables
Valentin Platzgummer's avatar
Valentin Platzgummer committed
51
    // see WimaArea.h for explanation
52 53
    double         _maxAltitude;
    QVariantList   _path;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
54
    QList<QGeoCoordinate>   _list;
55
    QGeoCoordinate _center;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
56 57
};