WimaController.h 2.67 KB
Newer Older
1
#pragma once
2 3

#include <QObject>
Valentin Platzgummer's avatar
Valentin Platzgummer committed
4
#include "QGCMapPolygon.h"
5 6
#include "QmlObjectListModel.h"

7 8 9 10
#include "WimaPolygon.h"
#include "WimaGlobalMeasurementPolygon.h"
#include "WimaServicePolygon.h"

11 12
#include "PlanMasterController.h"
#include "MissionController.h"
13

14

15 16 17 18
class WimaController : public QObject
{
    Q_OBJECT
public:
19
    WimaController(QObject *parent = nullptr);
20

21

22 23
    Q_PROPERTY(PlanMasterController*    masterController        READ masterController           WRITE setMasterController           NOTIFY masterControllerChanged)
    Q_PROPERTY(MissionController*       missionController       READ missionController          WRITE setMissionController          NOTIFY missionControllerChanged)
24 25 26
    Q_PROPERTY(QmlObjectListModel*      visualItems             READ visualItems                                                    NOTIFY visualItemsChanged)
    Q_PROPERTY(int                      currentPolygonIndex     READ currentPolygonIndex        WRITE setCurrentPolygonIndex        NOTIFY currentPolygonIndexChanged)

Valentin Platzgummer's avatar
Valentin Platzgummer committed
27

28 29 30
    // Property accessors
    PlanMasterController*       masterController       (void) const    { return _masterController;}
    MissionController*          missionController      (void) const    { return _missionController;}
31 32
    QmlObjectListModel*         visualItems            (void)          { return _visualItems; }
    int                         currentPolygonIndex    (void) const    { return _currentPolygonIndex; }
33

Valentin Platzgummer's avatar
Valentin Platzgummer committed
34 35


36

37 38 39
    // Property setters
    void setMasterController        (PlanMasterController* masterController);
    void setMissionController       (MissionController* missionController);
40
    void setCurrentPolygonIndex     (int index);
41

42
    Q_INVOKABLE void addGlobalMeasurementArea();
43
    Q_INVOKABLE void removeArea(int index);
44 45 46 47 48 49 50 51 52
    Q_INVOKABLE void addServiceArea();

    Q_INVOKABLE void startMission();
    Q_INVOKABLE void abortMission();
    Q_INVOKABLE void pauseMission();
    Q_INVOKABLE void resumeMission();

    Q_INVOKABLE void saveMission();
    Q_INVOKABLE void loadMission();
53

54 55
    Q_INVOKABLE void resetAllIsCurrentPolygon(void);

Valentin Platzgummer's avatar
Valentin Platzgummer committed
56

57 58 59 60 61

signals:
    void masterControllerChanged        (void);
    void missionControllerChanged       (void);
    void visualItemsChanged             (void);
62
    void currentPolygonIndexChanged     (int index);
63

64 65 66 67
private slots:
    void recalcVehicleCorridor();
    void recalcVehicleMeasurementAreas();
    void recalcAll();
68
    void recalcPolygonInteractivity(int index);
69

Valentin Platzgummer's avatar
Valentin Platzgummer committed
70 71

private:
72
    bool                        _planView;
73
    QmlObjectListModel*         _visualItems;
74 75
    PlanMasterController*       _masterController;
    MissionController*          _missionController;
76
    int                         _currentPolygonIndex;
77

78
};