Skip to content
WimaAreaData.h 1.63 KiB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
#pragma once

#include <QObject>

#include "QGeoCoordinate"

class WimaAreaData : public QObject // Abstract class for all WimaAreaData derived objects
Valentin Platzgummer's avatar
Valentin Platzgummer committed
{
    Q_OBJECT

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

    //WimaAreaData(const WimaAreaData &other, QObject *parent = nullptr);
    //WimaAreaData(const WimaArea &other, QObject *parent = nullptr);
    WimaAreaData& operator=(const WimaAreaData& otherData) = delete; // avoid slicing
Valentin Platzgummer's avatar
Valentin Platzgummer committed

    double                  maxAltitude()           const;
    QVariantList            path()                  const;
    QGeoCoordinate          center()                const;
    QList<QGeoCoordinate>   coordinateList()        const;
    bool                    containsCoordinate(const QGeoCoordinate &coordinate)    const;
Valentin Platzgummer's avatar
Valentin Platzgummer committed


    virtual QString         type()         const = 0;

signals:
    void maxAltitudeChanged (double maxAltitude);
    void pathChanged        (const QVariantList& coordinateList);
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    void centerChanged      (void);
Valentin Platzgummer's avatar
Valentin Platzgummer committed

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

protected:
    void assign(const WimaAreaData &other);
    void assign(const WimaArea    &other);
Valentin Platzgummer's avatar
Valentin Platzgummer committed
private:
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    // see WimaArea.h for explanation
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    QGeoCoordinate _center;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
};