3#include <QtCore/QObject>
4#include <QtQmlIntegration/QtQmlIntegration>
15#ifdef QGC_UNITTEST_BUILD
16class PlanMasterControllerTest;
25 Q_MOC_INCLUDE(
"QmlObjectListModel.h")
26 Q_MOC_INCLUDE(
"Vehicle.h")
28#ifdef QGC_UNITTEST_BUILD
29 friend class PlanMasterControllerTest;
34#ifdef QGC_UNITTEST_BUILD
36 PlanMasterController(MAV_AUTOPILOT firmwareType, MAV_TYPE vehicleType, QObject* parent =
nullptr);
41 Q_PROPERTY(
bool flyView MEMBER _flyView)
65 Q_INVOKABLE
void start(
void);
94 Q_INVOKABLE
bool saveToFile(
const QString& filename);
95 Q_INVOKABLE
void saveToKml(
const QString& filename);
156 void _activeVehicleChanged(
Vehicle* activeVehicle);
157 void _loadMissionComplete(
void);
158 void _loadGeoFenceComplete(
void);
159 void _loadRallyPointsComplete(
void);
160 void _sendMissionComplete(
void);
161 void _sendGeoFenceComplete(
void);
162 void _sendRallyPointsComplete(
void);
163 void _updateOverallDirty(
void);
164 void _updateShowCreateFromTemplate(
void);
165 void _updatePlanCreatorsList(
void);
166 void _handleExtractionFinished(
bool success);
169 void _commonInit(
void);
170 void _showPlanFromManagerVehicle(
void);
174 QString _resolvedPlanFilePath()
const;
175 void _clearFileNames();
177#ifdef QGC_UNITTEST_BUILD
184 Vehicle* _controllerVehicle =
nullptr;
185 Vehicle* _managerVehicle =
nullptr;
186 bool _flyView =
true;
187 bool _offline =
true;
191 bool _loadGeoFence =
false;
192 bool _loadRallyPoints =
false;
193 bool _sendGeoFence =
false;
194 bool _sendRallyPoints =
false;
195 QString _currentPlanFile;
200 QString _currentPlanFileName;
201 QString _originalPlanFileName;
203 bool _deleteWhenSendCompleted =
false;
204 bool _dirtyForSave =
false;
205 bool _dirtyForUpload =
false;
206 bool _showCreateFromTemplate =
true;
207 bool _suppressOverallDirtyUpdate =
false;
210 bool _userSelectedManualCreation =
false;
212 QString _extractionOutputDir;
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.
void planFileRenamedChanged(void)
Q_INVOKABLE bool saveWithCurrentName()
Save using the (possibly renamed) currentPlanFileName.
void setCurrentPlanFileName(const QString &name)
Q_INVOKABLE bool saveToCurrent()
void originalPlanFileNameChanged(void)
void containsItemsChanged()
Vehicle * controllerVehicle(void)
QStringList saveNameFilters(void) const
void currentPlanFileNameChanged(void)
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)
QString originalPlanFileName(void) const
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
Q_INVOKABLE void loadFromArchive(const QString &archivePath)
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)
bool planFileRenamed(void) const
Q_INVOKABLE bool resolvedPlanFileExists() const
true if a file at the renamed path already exists on disk
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)
QObject wrapper for compression operations with progress signals.