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

#include <QObject>
4 5 6 7 8 9
#include "QGCMapPolygon.h"
#include "QmlObjectListModel.h"

#include "WimaArea.h"
#include "WimaGOperationArea.h"
#include "WimaServiceArea.h"
10
#include "WimaVCorridor.h"
11 12 13

#include "PlanMasterController.h"
#include "MissionController.h"
14
#include "SurveyComplexItem.h"
15 16
#include "SimpleMissionItem.h"
#include "MissionSettingsItem.h"
17

18 19 20
#include "JsonHelper.h"
#include "QGCApplication.h"

21 22 23 24 25

class WimaController : public QObject
{
    Q_OBJECT
public:
26 27 28 29 30 31 32
    WimaController(QObject *parent = nullptr);


    Q_PROPERTY(PlanMasterController*    masterController        READ masterController           WRITE setMasterController           NOTIFY masterControllerChanged)
    Q_PROPERTY(MissionController*       missionController       READ missionController          WRITE setMissionController          NOTIFY missionControllerChanged)
    Q_PROPERTY(QmlObjectListModel*      visualItems             READ visualItems                                                    NOTIFY visualItemsChanged)
    Q_PROPERTY(int                      currentPolygonIndex     READ currentPolygonIndex        WRITE setCurrentPolygonIndex        NOTIFY currentPolygonIndexChanged)
33
    Q_PROPERTY(QString                  currentFile             READ currentFile                                                    NOTIFY currentFileChanged)
Valentin Platzgummer's avatar
Valentin Platzgummer committed
34
    Q_PROPERTY(QStringList              loadNameFilters         READ loadNameFilters                                                CONSTANT)
35
    Q_PROPERTY(QString                  fileExtension           READ fileExtension                                                  CONSTANT)
36 37 38


    // Property accessors
39 40 41
    PlanMasterController*       masterController       (void) const    { return _masterController; }
    MissionController*          missionController      (void) const    { return _missionController; }
    QmlObjectListModel*         visualItems            (void) const    { return _visualItems; }
42
    int                         currentPolygonIndex    (void) const    { return _currentPolygonIndex; }
43
    QString                     currentFile            (void) const    { return _currentFile; }
Valentin Platzgummer's avatar
Valentin Platzgummer committed
44
    QStringList                 loadNameFilters        (void) const;
45
    QString                     fileExtension         (void) const    { return wimaFileExtension; }
46 47 48 49 50 51



    // Property setters
    void setMasterController        (PlanMasterController* masterController);
    void setMissionController       (MissionController* missionController);
52
    /// Sets the integer index pointing to the current polygon. Current polygon is set interactive.
53 54 55
    void setCurrentPolygonIndex     (int index);

    Q_INVOKABLE void addGOperationArea();
56 57
    /// Removes an area from _visualItems
    /// @param index Index of the area to be removed
58 59
    Q_INVOKABLE void removeArea(int index);
    Q_INVOKABLE void addServiceArea();
60
    /// @return true if a vehicle corridor was added sucessfully and false otherwise.
61
    Q_INVOKABLE void addVehicleCorridor();
62 63 64 65 66

    Q_INVOKABLE void startMission();
    Q_INVOKABLE void abortMission();
    Q_INVOKABLE void pauseMission();
    Q_INVOKABLE void resumeMission();
67 68
    /// Recalculates vehicle corridor, flight path, etc.
    Q_INVOKABLE bool updateMission();
69

70 71
    Q_INVOKABLE void saveToCurrent();
    Q_INVOKABLE void saveToFile(const QString& filename);
72 73
    Q_INVOKABLE bool loadFromCurrent();
    Q_INVOKABLE bool loadFromFile(const QString& filename);
74

75 76
    Q_INVOKABLE void resetAllInteractive(void);
    Q_INVOKABLE void setInteractive(void);
77 78


79 80 81 82 83 84 85
    // static Members
    static const char* wimaFileExtension;

    // Member Methodes
    QJsonDocument saveToJson();


86 87

signals:
88 89 90 91
    void masterControllerChanged        (void);
    void missionControllerChanged       (void);
    void visualItemsChanged             (void);
    void currentPolygonIndexChanged     (int index);
92
    void currentFileChanged             ();
93 94 95 96 97 98

private slots:
    void recalcVehicleCorridor();
    void recalcVehicleMeasurementAreas();
    void recalcAll();
    void recalcPolygonInteractivity(int index);
99 100


101 102 103 104 105 106
private:
    bool                        _planView;
    QmlObjectListModel*         _visualItems;
    PlanMasterController*       _masterController;
    MissionController*          _missionController;
    int                         _currentPolygonIndex;
107
    QString                     _currentFile;
108 109

};