WimaMeasurementArea.h 2.05 KB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
1
#pragma once
2

Valentin Platzgummer's avatar
Valentin Platzgummer committed
3
#include <QObject>
Valentin Platzgummer's avatar
Valentin Platzgummer committed
4
#include <QTimer>
5

Valentin Platzgummer's avatar
Valentin Platzgummer committed
6
#include "WimaArea.h"
7

Valentin Platzgummer's avatar
Valentin Platzgummer committed
8
#include "SettingsFact.h"
9

10 11
class WimaMeasurementArea : public WimaArea {
  Q_OBJECT
12
public:
13 14 15 16
  WimaMeasurementArea(QObject *parent = nullptr);
  WimaMeasurementArea(const WimaMeasurementArea &other,
                      QObject *parent = nullptr);
  WimaMeasurementArea &operator=(const WimaMeasurementArea &other);
Valentin Platzgummer's avatar
Valentin Platzgummer committed
17
  ~WimaMeasurementArea();
18

Valentin Platzgummer's avatar
Valentin Platzgummer committed
19 20 21 22 23 24
  Q_PROPERTY(Fact *tileHeight READ tileHeight CONSTANT)
  Q_PROPERTY(Fact *tileWidth READ tileWidth CONSTANT)
  Q_PROPERTY(Fact *minTileArea READ minTileArea CONSTANT)
  Q_PROPERTY(Fact *transectDistance READ transectDistance CONSTANT)
  Q_PROPERTY(Fact *minTransectLength READ minTransectLength CONSTANT)
  Q_PROPERTY(Fact *showTiles READ showTiles CONSTANT)
25 26

  // Overrides from WimaPolygon
Valentin Platzgummer's avatar
Valentin Platzgummer committed
27 28 29 30 31 32 33 34 35
  QString mapVisualQML(void) const;
  QString editorQML(void) const;

  Fact *tileHeight();
  Fact *tileWidth();
  Fact *minTileArea();
  Fact *transectDistance();
  Fact *minTransectLength();
  Fact *showTiles();
36 37 38 39 40 41 42 43 44 45 46 47 48 49

  // Member Methodes
  void saveToJson(QJsonObject &json);
  bool loadFromJson(const QJsonObject &json, QString &errorString);

  // Friends
  friend void print(const WimaMeasurementArea &area, QString outputStr);
  friend void print(const WimaMeasurementArea &area);

  // Static Variables
  static const char *settingsGroup;
  static const char *tileHeightName;
  static const char *tileWidthName;
  static const char *minTileAreaName;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
50 51 52
  static const char *transectDistanceName;
  static const char *minTransectLengthName;
  static const char *showTilesName;
53
  static const char *WimaMeasurementAreaName;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
54 55 56 57

signals:

public slots:
58

Valentin Platzgummer's avatar
Valentin Platzgummer committed
59 60 61 62
private slots:
  void doUpdate();
  void deferUpdate();

Valentin Platzgummer's avatar
Valentin Platzgummer committed
63
private:
64 65
  // Member Methodes
  void init();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
66

67 68
  // Members
  QMap<QString, FactMetaData *> _metaDataMap;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
69

70
  SettingsFact _tileHeight;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
71
  SettingsFact _tileWidth;
72 73 74
  SettingsFact _minTileArea;
  SettingsFact _transectDistance;
  SettingsFact _minTransectLength;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
75 76 77 78 79 80
  SettingsFact _showTiles;

  // Tile stuff.
  QTimer _timer;
  std::atomic_bool _calculating;
  QmlObjectListModel _tiles;
81
};