WimaAreaData.h 1.5 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 10
class WimaAreaData
    : public QObject // Abstract class for all WimaAreaData derived objects
Valentin Platzgummer's avatar
Valentin Platzgummer committed
11
{
12
  Q_OBJECT
Valentin Platzgummer's avatar
Valentin Platzgummer committed
13
public:
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
  Q_PROPERTY(const QVariantList path READ path NOTIFY pathChanged)
  Q_PROPERTY(QString type READ type CONSTANT)

  WimaAreaData(QObject *parent = nullptr);
  ~WimaAreaData();
  WimaAreaData(const WimaAreaData &otherData) = delete; // avoid slicing
  WimaAreaData &
  operator=(const WimaAreaData &otherData) = delete; // avoid slicing

  double maxAltitude() const;
  QVariantList path() const;
  QGeoCoordinate center() const;
  const QList<QGeoCoordinate> &coordinateList() const;
  bool containsCoordinate(const QGeoCoordinate &coordinate) const;
  virtual QString type() const = 0;

  void append(const QGeoCoordinate &c);
  void push_back(const QGeoCoordinate &c);
  void clear();
33

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

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

45
protected:
46 47
  void assign(const WimaAreaData &other);
  void assign(const WimaArea &other);
48

Valentin Platzgummer's avatar
Valentin Platzgummer committed
49
private:
50 51 52 53 54 55 56 57
  // Member Functions

  // Member Variables
  // see WimaArea.h for explanation
  double _maxAltitude;
  QVariantList _path;
  QList<QGeoCoordinate> _list;
  QGeoCoordinate _center;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
58
};