3#include <QtCore/QObject>
4#include <QtQmlIntegration/QtQmlIntegration>
14#ifdef QGC_UNITTEST_BUILD
15class PlanMasterControllerTest;
24 Q_MOC_INCLUDE(
"QmlObjectListModel.h")
25 Q_MOC_INCLUDE(
"Vehicle.h")
27#ifdef QGC_UNITTEST_BUILD
28 friend class PlanMasterControllerTest;
33#ifdef QGC_UNITTEST_BUILD
35 PlanMasterController(MAV_AUTOPILOT firmwareType, MAV_TYPE vehicleType, QObject* parent =
nullptr);
40 Q_PROPERTY(
bool flyView MEMBER _flyView)
62 Q_INVOKABLE
void start(
void);
85 Q_INVOKABLE
bool saveToFile(
const QString& filename);
86 Q_INVOKABLE
void saveToKml(
const QString& filename);
95 bool offline(
void)
const {
return _offline; }
139 void _activeVehicleChanged(
Vehicle* activeVehicle);
140 void _loadMissionComplete(
void);
141 void _loadGeoFenceComplete(
void);
142 void _loadRallyPointsComplete(
void);
143 void _sendMissionComplete(
void);
144 void _sendGeoFenceComplete(
void);
145 void _sendRallyPointsComplete(
void);
146 void _updateOverallDirty(
void);
147 void _updateShowCreateFromTemplate(
void);
148 void _updatePlanCreatorsList(
void);
156 enum class SyncSequence {
164 void _commonInit(
void);
165 void _showPlanFromManagerVehicle(
void);
166 void _initialPlanRequestCompleteChanged(
bool initialPlanRequestComplete);
170 void _clearElementDirtyStates();
171 void _clearCurrentPlanFile();
172 bool _loadPlanJson(
const QByteArray& bytes, QString&
errorString);
174#ifdef QGC_UNITTEST_BUILD
181 Vehicle* _controllerVehicle =
nullptr;
182 Vehicle* _managerVehicle =
nullptr;
183 bool _flyView =
true;
184 bool _offline =
true;
188 SyncSequence _loadSequence = SyncSequence::Idle;
189 SyncSequence _sendSequence = SyncSequence::Idle;
190 QString _currentPlanFile;
191 bool _deleteWhenSendCompleted =
false;
192 bool _dirtyForSave =
false;
193 bool _dirtyForUpload =
false;
194 bool _showCreateFromTemplate =
true;
195 bool _suppressOverallDirtyUpdate =
false;
198 bool _userSelectedManualCreation =
false;
int readyForSaveState(void) const
Master controller for mission, fence, rally.
Q_INVOKABLE void removeAll(void)
Removes all from controller only, sync required to remove from vehicle.
Q_INVOKABLE bool saveToCurrent()
void containsItemsChanged()
Vehicle * controllerVehicle(void)
QStringList saveNameFilters(void) const
Q_INVOKABLE int readyForSaveState(void) const
void promptForPlanUsageOnVehicleChange(void)
void showCreateFromTemplateChanged()
Q_INVOKABLE void saveToKml(const QString &filename)
QmlObjectListModel * planCreators(void) const
void setUserSelectedManualCreation(bool userSelectedManualCreation)
Q_INVOKABLE void showPlanFromManagerVehicle(void)
Replaces any current plan with the plan from the manager vehicle even if offline.
static constexpr int kPlanFileVersion
Q_INVOKABLE void start(void)
Should be called immediately upon Component.onCompleted.
QStringList loadNameFilters(void) const
void planCreatorsChanged(QmlObjectListModel *planCreators)
Q_INVOKABLE void loadFromVehicle(void)
void managerVehicleChanged(Vehicle *managerVehicle)
QString kmlFileExtension(void) const
void syncInProgressChanged(void)
Q_INVOKABLE void loadFromFile(const QString &filename)
RallyPointController * rallyPointController(void)
Q_INVOKABLE void startStaticActiveVehicle(Vehicle *vehicle, bool deleteWhenSendCompleted=false)
bool dirtyForUpload(void) const
QString currentPlanFile(void) const
static constexpr const char * kJsonGeoFenceObjectKey
GeoFenceController * geoFenceController(void)
void dirtyForSaveChanged(bool dirtyForSave)
QString currentPlanFileName(void) const
void userSelectedManualCreationChanged()
bool syncInProgress(void) const
void currentPlanFileChanged(void)
bool showCreateFromTemplate(void) const
bool dirtyForSave(void) const
QString fileExtension(void) const
~PlanMasterController()
Either active vehicle or _controllerVehicle if no active vehicle.
void setFlyView(bool flyView)
Q_INVOKABLE bool saveToFile(const QString &filename)
void dirtyForUploadChanged(bool dirtyForUpload)
static constexpr const char * kPlanFileType
static constexpr const char * kJsonMissionObjectKey
Q_INVOKABLE void removeAllFromVehicle(void)
Removes all from vehicle and controller.
static void sendPlanToVehicle(Vehicle *vehicle, const QString &filename)
QJsonDocument saveToJson()
MissionController * missionController(void)
void offlineChanged(bool offlineEditing)
Q_INVOKABLE void sendToVehicle(void)
bool userSelectedManualCreation(void) const
static constexpr const char * kJsonRallyPointsObjectKey
bool containsItems(void) const
Vehicle * managerVehicle(void)