NemoInterface.h 2.64 KB
Newer Older
1 2 3 4
#pragma once

#include <QGeoCoordinate>
#include <QObject>
Valentin Platzgummer's avatar
Valentin Platzgummer committed
5
#include <QVariant>
6

Valentin Platzgummer's avatar
Valentin Platzgummer committed
7
#include <future>
8 9
#include <memory>

10 11 12 13
#include "IDArray.h"
#include "LogicalArray.h"
#include "TileArray.h"
#include "TilePtrArray.h"
Valentin Platzgummer's avatar
Valentin Platzgummer committed
14
#include "geometry/ProgressArray.h"
15 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
    NOT_CONNECTED,
31
    ERROR,
Valentin Platzgummer's avatar
Valentin Platzgummer committed
32
    SYNC,
Valentin Platzgummer's avatar
Valentin Platzgummer committed
33 34 35
    READY,
    WEBSOCKET_DETECTED,
    TIMEOUT,
36
  };
37
  Q_ENUM(STATUS)
38

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

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

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

Valentin Platzgummer's avatar
Valentin Platzgummer committed
52
  // Tile editing.
Valentin Platzgummer's avatar
Valentin Platzgummer committed
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
  //!
  //! \brief addTiles
  //! \param tileArray
  //! \return Returns a QVariant containing a boolean value, indicating if the
  //! requested operation was successfull.
  //!
  std::shared_future<QVariant> addTiles(const TileArray &tileArray);
  std::shared_future<QVariant> addTiles(const TilePtrArray &tileArray);
  //!
  //! \brief removeTiles
  //! \param idArray
  //! \return Returns a QVariant containing a boolean value, indicating if the
  //! requested operation was successfull.
  //!
  std::shared_future<QVariant> removeTiles(const IDArray &idArray);
  //!
  //! \brief clearTiles
  //! \return Returns a QVariant containing a boolean value, indicating if the
  //! requested operation was successfull.
  //!
  std::shared_future<QVariant> clearTiles();

75 76 77 78 79
  TileArray getTiles(const IDArray &idArray) const;
  TileArray getAllTiles() const;
  LogicalArray containsTiles(const IDArray &idArray) const;
  std::size_t size() const;
  bool empty() const;
80

Valentin Platzgummer's avatar
Valentin Platzgummer committed
81
  // Progress.
82 83
  ProgressArray getProgress() const;
  ProgressArray getProgress(const IDArray &idArray) const;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
84 85

  // Status.
86
  STATUS status() const;
87
  QString statusString() const;
Valentin Platzgummer's avatar
Valentin Platzgummer committed
88 89
  QString infoString() const;
  QString warningString() const;
90
  bool running() const;
91 92 93

signals:
  void statusChanged();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
94 95
  void infoStringChanged();
  void warningStringChanged();
Valentin Platzgummer's avatar
Valentin Platzgummer committed
96 97
  void progressChanged(const ProgressArray &progressArray);
  void tilesChanged();
98 99 100 101 102
  void runningChanged();

private:
  PImpl pImpl;
};
103 104

#define pNemoInterface NemoInterface::instance()