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

#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
  WimaAreaData(QObject *parent = nullptr);

16 17
  Q_PROPERTY(const QVariantList path READ path NOTIFY pathChanged)
  Q_PROPERTY(QString type READ type CONSTANT)
18
  Q_PROPERTY(QString mapVisualQML READ mapVisualQML CONSTANT)
19

20 21 22
  bool operator==(const WimaAreaData &data) const;
  bool operator!=(const WimaAreaData &data) const;

23 24
  virtual QString mapVisualQML(void) const = 0;

25 26 27 28 29 30 31 32 33
  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();
34

35
signals:
36 37
  void pathChanged();
  void centerChanged();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
38 39

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

44
protected:
45 46 47 48
  WimaAreaData(const WimaAreaData &otherData, QObject *parent);
  WimaAreaData(const WimaArea &otherData, QObject *parent);
  WimaAreaData &operator=(const WimaAreaData &otherData);
  WimaAreaData &operator=(const WimaArea &otherData);
49

Valentin Platzgummer's avatar
Valentin Platzgummer committed
50
private:
51 52
  void _setPathImpl(const QList<QGeoCoordinate> &coordinateList);
  void _setPathImpl(const QVariantList &coordinateList);
53
  // Member Variables
54 55
  mutable QVariantList _path;
  QList<QGeoCoordinate> _list;
56
  QGeoCoordinate _center;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
57
};
58 59 60

bool operator==(const WimaAreaData &m1, const WimaArea &m2);
bool operator!=(const WimaAreaData &m1, const WimaArea &m2);
61 62
bool operator==(const WimaArea &m1, const WimaAreaData &m2);
bool operator!=(const WimaArea &m1, const WimaAreaData &m2);