AirspaceFlightPlanProvider.h 4.92 KB
Newer Older
Gus Grubba's avatar
Gus Grubba committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/****************************************************************************
 *
 *   (c) 2017 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
 *
 * QGroundControl is licensed according to the terms in the file
 * COPYING.md in the root of the source code directory.
 *
 ****************************************************************************/

#pragma once

/**
 * @file AirspaceFlightPlanProvider.h
 * Create and maintain a flight plan
 */

17 18 19
#include "AirspaceAdvisoryProvider.h"
#include "QmlObjectListModel.h"

Gus Grubba's avatar
Gus Grubba committed
20
#include <QObject>
21
#include <QDateTime>
Gus Grubba's avatar
Gus Grubba committed
22

23
class PlanMasterController;
Gus Grubba's avatar
Gus Grubba committed
24 25 26 27 28 29 30 31

//-----------------------------------------------------------------------------
class AirspaceFlightPlanProvider : public QObject
{
    Q_OBJECT
public:

    enum PermitStatus {
32
        PermitNone = 0,     //-- No flght plan
Gus Grubba's avatar
Gus Grubba committed
33 34 35 36 37 38 39
        PermitPending,
        PermitAccepted,
        PermitRejected,
    };

    Q_ENUM(PermitStatus)

40 41
    AirspaceFlightPlanProvider                      (QObject *parent = nullptr);
    virtual ~AirspaceFlightPlanProvider             () {}
Gus Grubba's avatar
Gus Grubba committed
42

43 44 45 46 47
    Q_PROPERTY(PermitStatus         flightPermitStatus      READ flightPermitStatus                             NOTIFY flightPermitStatusChanged)   ///< State of flight permission
    Q_PROPERTY(QDateTime            flightStartTime         READ flightStartTime    WRITE  setFlightStartTime   NOTIFY flightStartTimeChanged)      ///< Start of flight
    Q_PROPERTY(QDateTime            flightEndTime           READ flightEndTime      WRITE  setFlightEndTime     NOTIFY flightEndTimeChanged)        ///< End of flight
    Q_PROPERTY(bool                 valid                   READ valid                                          NOTIFY advisoryChanged)
    Q_PROPERTY(QmlObjectListModel*  advisories              READ advisories                                     NOTIFY advisoryChanged)
Gus Grubba's avatar
Gus Grubba committed
48
    Q_PROPERTY(QmlObjectListModel*  ruleSets                READ ruleSets                                       NOTIFY advisoryChanged)
49
    Q_PROPERTY(QGCGeoBoundingCube*  missionArea             READ missionArea                                    NOTIFY missionAreaChanged)
50
    Q_PROPERTY(AirspaceAdvisoryProvider::AdvisoryColor airspaceColor READ airspaceColor                         NOTIFY advisoryChanged)
51

52 53 54 55
    Q_PROPERTY(QmlObjectListModel*  rulesViolation          READ rulesViolation                                 NOTIFY rulesChanged)
    Q_PROPERTY(QmlObjectListModel*  rulesInfo               READ rulesInfo                                      NOTIFY rulesChanged)
    Q_PROPERTY(QmlObjectListModel*  rulesReview             READ rulesReview                                    NOTIFY rulesChanged)
    Q_PROPERTY(QmlObjectListModel*  rulesFollowing          READ rulesFollowing                                 NOTIFY rulesChanged)
56
    Q_PROPERTY(QmlObjectListModel*  briefFeatures           READ briefFeatures                                  NOTIFY rulesChanged)
57

58 59
    Q_INVOKABLE virtual void    updateFlightPlan    () = 0;

60
    virtual PermitStatus        flightPermitStatus  () const { return PermitNone; }
61 62
    virtual QDateTime           flightStartTime     () const = 0;
    virtual QDateTime           flightEndTime       () const = 0;
63
    virtual QGCGeoBoundingCube* missionArea         () = 0;
Gus Grubba's avatar
Gus Grubba committed
64 65 66 67
    virtual bool                valid               () = 0;                     ///< Current advisory list is valid
    virtual QmlObjectListModel* advisories          () = 0;                     ///< List of AirspaceAdvisory
    virtual QmlObjectListModel* ruleSets            () = 0;                     ///< List of AirspaceRuleSet
    virtual AirspaceAdvisoryProvider::AdvisoryColor  airspaceColor () = 0;      ///< Aispace overall color
Gus Grubba's avatar
Gus Grubba committed
68

69 70 71 72
    virtual QmlObjectListModel* rulesViolation      () = 0;                     ///< List of AirspaceRule in violation
    virtual QmlObjectListModel* rulesInfo           () = 0;                     ///< List of AirspaceRule need more information
    virtual QmlObjectListModel* rulesReview         () = 0;                     ///< List of AirspaceRule should review
    virtual QmlObjectListModel* rulesFollowing      () = 0;                     ///< List of AirspaceRule following
73
    virtual QmlObjectListModel* briefFeatures       () = 0;                     ///< List of AirspaceRule in violation
74

75 76
    virtual void                setFlightStartTime  (QDateTime start) = 0;
    virtual void                setFlightEndTime    (QDateTime end) = 0;
77
    virtual void                startFlightPlanning (PlanMasterController* planController) = 0;
78 79
    //-- TODO: This will submit the current flight plan in memory.
    virtual void                submitFlightPlan    () = 0;
Gus Grubba's avatar
Gus Grubba committed
80 81

signals:
82 83 84 85
    void flightPermitStatusChanged                  ();
    void flightStartTimeChanged                     ();
    void flightEndTimeChanged                       ();
    void advisoryChanged                            ();
86
    void missionAreaChanged                         ();
87
    void rulesChanged                               ();
Gus Grubba's avatar
Gus Grubba committed
88
};