GeneratorBase.h 997 Bytes
Newer Older
1 2 3 4 5 6 7
#pragma once

#include <QObject>

#include <functional>
#include <memory>

8
#include "geometry/snake.h"
9

10
#include "AreaData.h"
11 12 13 14 15 16

namespace routing {

class GeneratorBase : public QObject {
  Q_OBJECT
public:
17
  using Data = AreaData *;
18 19 20 21 22 23 24 25 26
  using Generator = std::function<bool(snake::Transects &)>;

  explicit GeneratorBase(QObject *parent = nullptr);
  explicit GeneratorBase(Data d, QObject *parent = nullptr);
  ~GeneratorBase();

  Q_PROPERTY(QString editorQml READ editorQml CONSTANT)
  Q_PROPERTY(QString mapVisualQml READ mapVisualQml CONSTANT)

27 28
  virtual QString editorQml() = 0;
  virtual QString mapVisualQml() = 0;
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

  virtual QString name() = 0;
  virtual QString abbreviation() = 0;

  virtual bool get(Generator &generator) = 0;

  Data data() const;
  void setData(const Data &d);

signals:
  void generatorChanged();

protected:
  virtual void establishConnections();
  virtual void deleteConnections();
  Data _d;
45 46 47

private:
  void _areaListChangedHandler();
48 49 50
};

} // namespace routing