NemoInterface.h 2 KB
Newer Older
1 2 3 4 5 6 7
#pragma once

#include <QGeoCoordinate>
#include <QObject>

#include <memory>

8 9 10 11
#include "IDArray.h"
#include "LogicalArray.h"
#include "TileArray.h"
#include "TilePtrArray.h"
Valentin Platzgummer's avatar
Valentin Platzgummer committed
12
#include "geometry/ProgressArray.h"
13

14 15
// Singelton class used to interface measurement devices implementing the nemo
// interface.
16 17 18 19 20
class NemoInterface : public QObject {
  Q_OBJECT
  class Impl;
  using PImpl = std::unique_ptr<Impl>;

21 22 23 24
  NemoInterface();
  NemoInterface(NemoInterface &other) = delete;
  static NemoInterface *createInstance();

25
public:
26 27 28
  ~NemoInterface() override;
  static NemoInterface *instance();

29
  enum class STATUS {
Valentin Platzgummer's avatar
Valentin Platzgummer committed
30 31 32 33 34
    NOT_CONNECTED,
    READY,
    WEBSOCKET_DETECTED,
    TIMEOUT,
    INVALID_HEARTBEAT
35
  };
36
  Q_ENUM(STATUS)
37

38
  Q_PROPERTY(STATUS status READ status NOTIFY statusChanged)
39
  Q_PROPERTY(QString statusString READ statusString NOTIFY statusChanged)
Valentin Platzgummer's avatar
Valentin Platzgummer committed
40 41 42
  Q_PROPERTY(QString infoString READ infoString NOTIFY infoStringChanged)
  Q_PROPERTY(
      QString warningString READ warningString NOTIFY warningStringChanged)
43 44 45
  Q_PROPERTY(QString editorQml READ editorQml CONSTANT)
  Q_PROPERTY(bool running READ running NOTIFY runningChanged)

Valentin Platzgummer's avatar
Valentin Platzgummer committed
46 47
  QString editorQml();

48 49 50
  Q_INVOKABLE void start();
  Q_INVOKABLE void stop();

Valentin Platzgummer's avatar
Valentin Platzgummer committed
51
  // Tile editing.
52 53 54 55 56 57 58 59
  void addTiles(const TileArray &tileArray);
  void removeTiles(const IDArray &idArray);
  void clearTiles();
  TileArray getTiles(const IDArray &idArray);
  TileArray getAllTiles();
  LogicalArray containsTiles(const IDArray &idArray);
  std::size_t size();
  bool empty();
60

Valentin Platzgummer's avatar
Valentin Platzgummer committed
61 62 63 64 65
  // Progress.
  ProgressArray getProgress();
  ProgressArray getProgress(const IDArray &idArray);

  // Status.
66
  STATUS status() const;
67
  QString statusString() const;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
68 69
  QString infoString() const;
  QString warningString() const;
70 71 72 73
  bool running();

signals:
  void statusChanged();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
74 75
  void infoStringChanged();
  void warningStringChanged();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
76 77
  void progressChanged(const ProgressArray &progressArray);
  void tilesChanged();
78 79 80 81 82
  void runningChanged();

private:
  PImpl pImpl;
};
83 84

#define pNemoInterface NemoInterface::instance()