Newer
Older
const char* WimaController::wimaFileExtension = "wima";
const char* WimaController::areaItemsName = "AreaItems";
const char* WimaController::missionItemsName = "MissionItems";
WimaController::WimaController(QObject *parent)
: QObject (parent)
, _container (nullptr)
, _joinedArea (this)
Valentin Platzgummer
committed
, _measurementArea (this)
, _serviceArea (this)
Valentin Platzgummer
committed
, _localPlanDataValid (false)
Valentin Platzgummer
committed
QmlObjectListModel* WimaController::visualItems()
{
}
QStringList WimaController::loadNameFilters() const
{
QStringList filters;
filters << tr("Supported types (*.%1 *.%2)").arg(wimaFileExtension).arg(AppSettings::planFileExtension) <<
}
QStringList WimaController::saveNameFilters() const
{
QStringList filters;
filters << tr("Supported types (*.%1 *.%2)").arg(wimaFileExtension).arg(AppSettings::planFileExtension);
return filters;
Valentin Platzgummer
committed
WimaDataContainer *WimaController::dataContainer() const
{
Valentin Platzgummer
committed
return _container;
}
void WimaController::setMasterController(PlanMasterController *masterC)
{
_masterController = masterC;
emit masterControllerChanged();
}
void WimaController::setMissionController(MissionController *missionC)
{
_missionController = missionC;
emit missionControllerChanged();
}
Valentin Platzgummer
committed
/*!
* \fn void WimaController::setDataContainer(WimaDataContainer *container)
* Sets the pointer to the \c WimaDataContainer, which is meant to exchange data between the \c WimaController and the \c WimaPlaner.
*
* \sa WimaPlaner, WimaDataContainer, WimaPlanData
*/
void WimaController::setDataContainer(WimaDataContainer *container)
{
Valentin Platzgummer
committed
if (container != nullptr) {
if (_container != nullptr) {
disconnect(_container, &WimaDataContainer::dataValidChanged, this, &WimaController::containerDataValidChanged);
}
Valentin Platzgummer
committed
connect(_container, &WimaDataContainer::dataValidChanged, this, &WimaController::containerDataValidChanged);
emit dataContainerChanged();
}
}
void WimaController::startMission()
{
}
void WimaController::abortMission()
{
}
void WimaController::pauseMission()
{
}
void WimaController::resumeMission()
{
}
bool WimaController::updateMission()
{
Valentin Platzgummer
committed
return true;
void WimaController::saveToFile(const QString& filename)
{
}
}
bool WimaController::loadFromFile(const QString &filename)
{
QJsonDocument WimaController::saveToJson(FileType fileType)
Valentin Platzgummer
committed
return QJsonDocument();
Valentin Platzgummer
committed
/*!
* \fn void WimaController::containerDataValidChanged(bool valid)
* Pulls plan data generated by \c WimaPlaner from the \c _container if the data is valid (\a valid equals true).
* Is connected to the dataValidChanged() signal of the \c WimaDataContainer.
*
* \sa WimaDataContainer, WimaPlaner, WimaPlanData
*/
void WimaController::containerDataValidChanged(bool valid)
Valentin Platzgummer
committed
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
if ( valid ) {
if (_container == nullptr) {
qWarning("WimaController::containerDataValidChanged(): No container assigned!");
}
_localPlanDataValid = false;
WimaPlanData planData = _container->pull();
// extract list with WimaAreas
QList<const WimaAreaData*> areaList = planData.areaList();
int areaCounter = 0;
int numAreas = 4; // extract only numAreas Areas, if there are more they are invalid and ignored
bool joinedAreaAssigned = false;
for (int i = 0; i < areaList.size(); i++) {
const WimaAreaData *areaData = areaList[i];
if (areaData->type() == WimaServiceAreaData::typeString) { // is it a service area?
_serviceArea = *qobject_cast<WimaServiceAreaData*>(areaData);
qWarning("Service area, wuhuuu!");
areaCounter++;
continue;
}
WimaMeasurementAreaData *measurementAreaData = qobject_cast<WimaMeasurementAreaData*>(areaData);
if (measurementAreaData != nullptr) { // is it a measurement area?
_measurementArea = *measurementAreaData;
qWarning("Measurement area, wuhuuu!");
areaCounter++;
continue;
}
WimaCorridorData *corridorAreaData = qobject_cast<WimaCorridorData*>(areaData);
if (corridorAreaData != nullptr) { // is it a corridor?
_corridor = *corridorAreaData;
qWarning("Corridor, wuhuuu!");
areaCounter++;
continue;
}
if (!joinedAreaAssigned) { // first WimaAreaData object is assumed to be the joined Area
_joinedArea = *areaData;
qWarning("Joined area, wuhuuu!");
areaCounter++;
joinedAreaAssigned = true;
continue;
}
if (areaCounter >= numAreas)
break;
}
// append areas to _visualItems, don't append _corridor, it's not necessary to display it in flyView
_visualItems.clear();
//_visualItems.append(&_measurementArea);
//_visualItems.append(&_serviceArea);
_visualItems.append(&_joinedArea);
emit visualItemsChanged();
_localPlanDataValid = true;
} else {
_localPlanDataValid = false;
_visualItems.clear();
emit visualItemsChanged();