/**************************************************************************** * * (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. * ****************************************************************************/ #ifndef CameraSection_H #define CameraSection_H #include "ComplexMissionItem.h" #include "MissionItem.h" #include "Fact.h" Q_DECLARE_LOGGING_CATEGORY(CameraSectionLog) class CameraSection : public QObject { Q_OBJECT public: CameraSection(QObject* parent = NULL); enum CameraAction { CameraActionNone, TakePhotosIntervalTime, TakePhotoIntervalDistance, TakeVideo }; Q_ENUMS(CameraAction) Q_PROPERTY(bool available READ available WRITE setAvailable NOTIFY availableChanged) Q_PROPERTY(bool settingsSpecified MEMBER _settingsSpecified NOTIFY settingsSpecifiedChanged) Q_PROPERTY(bool specifyGimbal READ specifyGimbal WRITE setSpecifyGimbal NOTIFY specifyGimbalChanged) Q_PROPERTY(Fact* gimbalPitch READ gimbalPitch CONSTANT) Q_PROPERTY(Fact* gimbalYaw READ gimbalYaw CONSTANT) Q_PROPERTY(Fact* cameraAction READ cameraAction CONSTANT) Q_PROPERTY(Fact* cameraPhotoIntervalTime READ cameraPhotoIntervalTime CONSTANT) Q_PROPERTY(Fact* cameraPhotoIntervalDistance READ cameraPhotoIntervalDistance CONSTANT) bool available (void) const { return _available; } void setAvailable (bool available); bool specifyGimbal (void) const { return _specifyGimbal; } Fact* gimbalYaw (void) { return &_gimbalYawFact; } Fact* gimbalPitch (void) { return &_gimbalPitchFact; } Fact* cameraAction (void) { return &_cameraActionFact; } Fact* cameraPhotoIntervalTime (void) { return &_cameraPhotoIntervalTimeFact; } Fact* cameraPhotoIntervalDistance (void) { return &_cameraPhotoIntervalDistanceFact; } /// Scans the loaded items for the section items /// @param visualItems Item list /// @param scanIndex Index to start scanning from /// @return true: camera section found bool scanForCameraSection(QmlObjectListModel* visualItems, int scanIndex); /// Appends the mission items associated with this section /// @param items List to append to /// @param missionItemParent QObject parent for created MissionItems /// @param nextSequenceNumber Sequence number for first item void appendMissionItems(QList& items, QObject* missionItemParent, int nextSequenceNumber); void setSpecifyGimbal (bool specifyGimbal); bool dirty (void) const { return _dirty; } void setDirty (bool dirty); /// Returns the number of mission items represented by this section. /// Signals: missionItemCountChanged on change int missionItemCount(void) const; signals: void availableChanged (bool available); void settingsSpecifiedChanged (bool settingsSpecified); void dirtyChanged (bool dirty); bool specifyGimbalChanged (bool specifyGimbal); void missionItemCountChanged (int missionItemCount); private slots: void _setDirty(void); void _setDirtyAndUpdateMissionItemCount(void); private: bool _available; bool _settingsSpecified; bool _specifyGimbal; Fact _gimbalYawFact; Fact _gimbalPitchFact; Fact _cameraActionFact; Fact _cameraPhotoIntervalDistanceFact; Fact _cameraPhotoIntervalTimeFact; bool _dirty; static QMap _metaDataMap; static const char* _gimbalPitchName; static const char* _gimbalYawName; static const char* _cameraActionName; static const char* _cameraPhotoIntervalDistanceName; static const char* _cameraPhotoIntervalTimeName; }; #endif