/**************************************************************************** * * (c) 2009-2016 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * ****************************************************************************/ #pragma once #include "MissionItem.h" #include "Vehicle.h" #include "QmlObjectListModel.h" Q_DECLARE_LOGGING_CATEGORY(SectionLog) // A Section encapsulates a set of mission commands which can be associated with another simple mission item. class Section : public QObject { Q_OBJECT public: Section(Vehicle* vehicle, QObject* parent = NULL) : QObject(parent) , _vehicle(vehicle) { } Q_PROPERTY(bool available READ available WRITE setAvailable NOTIFY availableChanged) Q_PROPERTY(bool settingsSpecified READ settingsSpecified NOTIFY settingsSpecifiedChanged) Q_PROPERTY(bool dirty READ dirty WRITE setDirty NOTIFY availableChanged) virtual bool available (void) const = 0; virtual bool settingsSpecified (void) const = 0; virtual bool dirty (void) const = 0; virtual void setAvailable (bool available) = 0; virtual void setDirty (bool dirty) = 0; /// Scans the loaded items for the section items /// @param visualItems Item list /// @param scanIndex Index to start scanning from /// @return true: section found, items added, scanIndex updated virtual bool scanForSection(QmlObjectListModel* visualItems, int scanIndex) = 0; /// Appends the mission items associated with this section /// @param items List to append to /// @param missionItemParent QObject parent for created MissionItems /// @param nextSequenceNumber[in,out] Sequence number for first item, updated as items are added virtual void appendSectionItems(QList& items, QObject* missionItemParent, int& nextSequenceNumber) = 0; /// Returns the number of mission items represented by this section. /// Signals: itemCountChanged virtual int itemCount(void) const = 0; signals: void availableChanged (bool available); void settingsSpecifiedChanged (bool settingsSpecified); void dirtyChanged (bool dirty); void itemCountChanged (int itemCount); protected: Vehicle* _vehicle; };