Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
46adaf36
Commit
46adaf36
authored
Sep 25, 2020
by
Valentin Platzgummer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wima planer, wima controller edited
parent
912e993b
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
348 additions
and
371 deletions
+348
-371
CircularSurveyItemEditor.qml
src/PlanView/CircularSurveyItemEditor.qml
+12
-5
CSWorker.cpp
src/Wima/CSWorker.cpp
+13
-9
CircularSurvey.h
src/Wima/CircularSurvey.h
+1
-1
WimaServiceArea.cc
src/Wima/Geometry/WimaServiceArea.cc
+9
-5
WimaServiceArea.h
src/Wima/Geometry/WimaServiceArea.h
+1
-1
WimaServiceAreaData.cc
src/Wima/Geometry/WimaServiceAreaData.cc
+41
-81
WimaServiceAreaData.h
src/Wima/Geometry/WimaServiceAreaData.h
+20
-26
WimaBridge.cc
src/Wima/WimaBridge.cc
+19
-40
WimaBridge.h
src/Wima/WimaBridge.h
+20
-24
WimaController.cc
src/Wima/WimaController.cc
+4
-4
WimaController.h
src/Wima/WimaController.h
+1
-1
WimaPlanData.cc
src/Wima/WimaPlanData.cc
+56
-71
WimaPlanData.h
src/Wima/WimaPlanData.h
+30
-29
WimaPlaner.cc
src/Wima/WimaPlaner.cc
+24
-25
WimaPlaner.h
src/Wima/WimaPlaner.h
+3
-2
DragCoordinate.qml
src/WimaView/DragCoordinate.qml
+10
-9
WimaMapPolygonVisuals.qml
src/WimaView/WimaMapPolygonVisuals.qml
+38
-16
WimaServiceAreaMapVisual.qml
src/WimaView/WimaServiceAreaMapVisual.qml
+41
-19
WimaToolBar.qml
src/WimaView/WimaToolBar.qml
+4
-2
WimaView.qml
src/WimaView/WimaView.qml
+1
-1
No files found.
src/PlanView/CircularSurveyItemEditor.qml
View file @
46adaf36
...
...
@@ -174,23 +174,30 @@ Rectangle {
BusyIndicator
{
id
:
indicator
anchors.horizontalCenter
:
parent
.
horizontalCenter
running
:
missionItem
.
calculating
property
bool
calculating
:
missionItem
.
calculating
running
:
calculating
on
Runn
ingChanged
:
{
if
(
runn
ing
){
on
Calculat
ingChanged
:
{
if
(
calculat
ing
){
visible
=
true
}
else
{
timer
.
restart
()
}
}
Component.onCompleted
:
{
if
(
calculating
){
visible
=
true
}
}
Timer
{
id
:
timer
interval
:
2
000
interval
:
1
000
repeat
:
false
onTriggered
:
{
if
(
indicator
.
runn
ing
==
false
){
if
(
indicator
.
calculat
ing
==
false
){
indicator
.
visible
=
false
}
}
...
...
src/Wima/CSWorker.cpp
View file @
46adaf36
...
...
@@ -64,6 +64,9 @@ void CSWorker::update(const QGeoCoordinate &depot,
Lock
lk
(
this
->
_mutex
);
this
->
_depot
=
depot
;
this
->
_safeArea
=
safeArea
;
for
(
auto
&
v
:
this
->
_safeArea
)
{
v
.
setAltitude
(
0
);
}
this
->
_polygon
=
polygon
;
for
(
auto
&
v
:
this
->
_polygon
)
{
v
.
setAltitude
(
0
);
...
...
@@ -96,6 +99,7 @@ void CSWorker::run() {
depot
=
this
->
_depot
;
safeArea
=
this
->
_safeArea
;
}
else
{
depot
=
this
->
_origin
;
safeArea
=
this
->
_polygon
;
}
const
auto
polygon
=
this
->
_polygon
;
...
...
@@ -379,11 +383,11 @@ void CSWorker::run() {
}
else
{
// Find index of first waypoint.
std
::
size_t
idxFirst
=
0
;
const
auto
&
info
1
=
this
->
_useDepotSafeArea
?
transectsInfo
[
1
]
:
transectsInfo
[
0
];
const
auto
&
first
Transect
=
transectsENU
[
info1
.
index
];
const
auto
&
firstWaypoint
=
info1
.
reversed
?
firstTransect
.
back
()
:
firstTransect
.
front
();
const
auto
&
info
First
=
transectsInfo
.
front
();
const
auto
&
firstTransect
=
transectsENU
[
infoFirst
.
index
];
const
auto
&
first
Waypoint
=
infoFirst
.
reversed
?
firstTransect
.
back
()
:
firstTransect
.
front
();
double
th
=
0.001
;
for
(
std
::
size_t
i
=
0
;
i
<
route
.
size
();
++
i
)
{
auto
dist
=
bg
::
distance
(
route
[
i
],
firstWaypoint
);
...
...
@@ -393,11 +397,11 @@ void CSWorker::run() {
}
}
// Find index of last waypoint.
std
::
size_t
idxLast
=
0
;
const
auto
&
info
=
transectsInfo
.
back
();
const
auto
&
lastTransect
=
transectsENU
[
info
.
index
];
std
::
size_t
idxLast
=
route
.
size
()
-
1
;
const
auto
&
info
Last
=
transectsInfo
.
back
();
const
auto
&
lastTransect
=
transectsENU
[
info
Last
.
index
];
const
auto
&
lastWaypoint
=
info
.
reversed
?
lastTransect
.
front
()
:
lastTransect
.
back
();
info
Last
.
reversed
?
lastTransect
.
front
()
:
lastTransect
.
back
();
for
(
long
i
=
route
.
size
()
-
1
;
i
>=
0
;
--
i
)
{
auto
dist
=
bg
::
distance
(
route
[
i
],
lastWaypoint
);
if
(
dist
<
th
)
{
...
...
src/Wima/CircularSurvey.h
View file @
46adaf36
...
...
@@ -29,7 +29,7 @@ public:
Q_PROPERTY
(
Fact
*
deltaAlpha
READ
deltaAlpha
CONSTANT
)
Q_PROPERTY
(
Fact
*
transectMinLength
READ
transectMinLength
CONSTANT
)
Q_PROPERTY
(
bool
calculating
READ
calculating
NOTIFY
calculatingChanged
)
Q_PROPERTY
(
bool
hidePolygon
READ
hidePolygon
NOTIFY
hidePolygon
)
Q_PROPERTY
(
bool
hidePolygon
READ
hidePolygon
NOTIFY
hidePolygon
Changed
)
Q_INVOKABLE
void
resetReference
(
void
);
Q_INVOKABLE
void
reverse
(
void
);
...
...
src/Wima/Geometry/WimaServiceArea.cc
View file @
46adaf36
...
...
@@ -20,11 +20,15 @@ WimaServiceArea &WimaServiceArea::operator=(const WimaServiceArea &other) {
return
*
this
;
}
void
WimaServiceArea
::
setDepot
(
const
QGeoCoordinate
&
coordinate
)
{
bool
WimaServiceArea
::
setDepot
(
const
QGeoCoordinate
&
coordinate
)
{
if
(
_depot
!=
coordinate
)
{
_depot
=
coordinate
;
emit
depotChanged
();
if
(
this
->
containsCoordinate
(
coordinate
))
{
_depot
=
coordinate
;
emit
depotChanged
();
return
true
;
}
}
return
false
;
}
void
WimaServiceArea
::
saveToJson
(
QJsonObject
&
json
)
{
...
...
@@ -58,8 +62,8 @@ void print(const WimaServiceArea &area, QString &outputStr) {
void
WimaServiceArea
::
init
()
{
this
->
setObjectName
(
wimaServiceAreaName
);
connect
(
this
,
&
Wima
ServiceArea
::
center
Changed
,
[
this
]
{
if
(
!
this
->
_depot
.
isValid
())
{
connect
(
this
,
&
Wima
Area
::
path
Changed
,
[
this
]
{
if
(
!
this
->
_depot
.
isValid
()
||
!
this
->
containsCoordinate
(
this
->
_depot
)
)
{
this
->
setDepot
(
this
->
center
());
}
});
...
...
src/Wima/Geometry/WimaServiceArea.h
View file @
46adaf36
...
...
@@ -34,7 +34,7 @@ signals:
void
depotChanged
(
void
);
public
slots
:
void
setDepot
(
const
QGeoCoordinate
&
coordinate
);
bool
setDepot
(
const
QGeoCoordinate
&
coordinate
);
private:
// Member Methodes
...
...
src/Wima/Geometry/WimaServiceAreaData.cc
View file @
46adaf36
...
...
@@ -2,37 +2,33 @@
const
char
*
WimaServiceAreaData
::
typeString
=
"WimaServiceAreaData"
;
WimaServiceAreaData
::
WimaServiceAreaData
(
QObject
*
parent
)
:
WimaAreaData
(
parent
)
{
:
WimaAreaData
(
parent
)
{}
WimaServiceAreaData
::
WimaServiceAreaData
(
const
WimaServiceAreaData
&
other
,
QObject
*
parent
)
:
WimaAreaData
(
parent
)
{
*
this
=
other
;
}
WimaServiceAreaData
::
WimaServiceAreaData
(
const
WimaServiceArea
Data
&
other
,
QObject
*
parent
)
:
WimaAreaData
(
parent
)
{
*
this
=
other
;
WimaServiceAreaData
::
WimaServiceAreaData
(
const
WimaServiceArea
&
other
,
QObject
*
parent
)
:
WimaAreaData
(
parent
)
{
*
this
=
other
;
}
WimaServiceAreaData
::
WimaServiceAreaData
(
const
WimaServiceArea
&
other
,
QObject
*
parent
)
:
WimaAreaData
(
parent
)
{
*
this
=
other
;
WimaServiceAreaData
&
WimaServiceAreaData
::
operator
=
(
const
WimaServiceAreaData
&
otherData
)
{
this
->
assign
(
otherData
);
this
->
setDepot
(
otherData
.
depot
());
return
*
this
;
}
WimaServiceAreaData
&
WimaServiceAreaData
::
operator
=
(
const
WimaServiceAreaData
&
otherData
)
{
this
->
assign
(
otherData
);
return
*
this
;
}
WimaServiceAreaData
&
WimaServiceAreaData
::
operator
=
(
const
WimaServiceArea
&
otherArea
)
{
this
->
assign
(
otherArea
);
return
*
this
;
WimaServiceAreaData
&
WimaServiceAreaData
::
operator
=
(
const
WimaServiceArea
&
otherArea
)
{
this
->
assign
(
otherArea
);
this
->
setDepot
(
otherArea
.
depot
());
return
*
this
;
}
/*!
...
...
@@ -40,77 +36,41 @@ WimaServiceAreaData &WimaServiceAreaData::operator=(const WimaServiceArea &other
* Returns a constant reference to the takeOffPosition.
*
*/
const
QGeoCoordinate
&
WimaServiceAreaData
::
takeOffPosition
()
const
{
return
_takeOffPosition
;
}
/*!
* \fn const QGeoCoordinate &WimaServiceAreaData::landOffPosition() const
* Returns a constant reference to the landOffPosition.
*
*/
const
QGeoCoordinate
&
WimaServiceAreaData
::
landPosition
()
const
{
return
_landPosition
;
}
QString
WimaServiceAreaData
::
type
()
const
{
return
this
->
typeString
;
}
/*!
* \fn void WimaServiceAreaData::setTakeOffPosition(const QGeoCoordinate &newCoordinate)
* Sets the takeoff position to the \a newCoordinate and emits the takeOffPositionChanged() signal,
* if newCoordinate differs from the member value.
*
*/
void
WimaServiceAreaData
::
setTakeOffPosition
(
const
QGeoCoordinate
&
newCoordinate
)
{
if
(
_takeOffPosition
!=
newCoordinate
)
{
_takeOffPosition
=
newCoordinate
;
emit
takeOffPositionChanged
(
_takeOffPosition
);
}
}
const
QGeoCoordinate
&
WimaServiceAreaData
::
depot
()
const
{
return
_depot
;
}
QString
WimaServiceAreaData
::
type
()
const
{
return
this
->
typeString
;
}
/*!
* \fn void WimaServiceAreaData::setLandOffPosition(const QGeoCoordinate &newCoordinate)
* Sets the land position to the \a newCoordinate and emits the landOffPositionChanged() signal,
* if newCoordinate differs from the member value.
* \fn void WimaServiceAreaData::setTakeOffPosition(const QGeoCoordinate
* &newCoordinate) Sets the takeoff position to the \a newCoordinate and emits
* the takeOffPositionChanged() signal, if newCoordinate differs from the member
* value.
*
*/
void
WimaServiceAreaData
::
setLandPosition
(
const
QGeoCoordinate
&
newCoordinate
)
{
if
(
_landPosition
!=
newCoordinate
)
{
_landPosition
=
newCoordinate
;
emit
landPositionChanged
(
_landPosition
);
}
void
WimaServiceAreaData
::
setDepot
(
const
QGeoCoordinate
&
newCoordinate
)
{
if
(
_depot
!=
newCoordinate
)
{
_depot
=
newCoordinate
;
emit
depotChanged
(
_depot
);
}
}
void
WimaServiceAreaData
::
assign
(
const
WimaServiceAreaData
&
other
)
{
WimaAreaData
::
assign
(
other
);
setLandPosition
(
other
.
landPosition
());
setTakeOffPosition
(
other
.
takeOffPosition
());
void
WimaServiceAreaData
::
assign
(
const
WimaServiceAreaData
&
other
)
{
WimaAreaData
::
assign
(
other
);
setDepot
(
other
.
depot
());
}
void
WimaServiceAreaData
::
assign
(
const
WimaServiceArea
&
other
)
{
WimaAreaData
::
assign
(
other
);
setLandPosition
(
other
.
landPosition
());
setTakeOffPosition
(
other
.
depot
());
void
WimaServiceAreaData
::
assign
(
const
WimaServiceArea
&
other
)
{
WimaAreaData
::
assign
(
other
);
setDepot
(
other
.
depot
());
}
/*!
* \class WimaAreaData::WimaServiceAreaData
* \brief Class to store and exchange data of a \c WimaServiceArea Object.
* Class to store and exchange data of a \c WimaServiceArea Object. In contrast to \c WimaServiceArea this class
* does not provied any interface to a grafical user interface, neiter it uses the QGC Fact System.
* It is designed to exchange data between the \c WimaPlaner and the \c WimaController class. And it
* is the derived from WimaAreaData.
* Class to store and exchange data of a \c WimaServiceArea Object. In contrast
* to \c WimaServiceArea this class does not provied any interface to a grafical
* user interface, neiter it uses the QGC Fact System. It is designed to
* exchange data between the \c WimaPlaner and the \c WimaController class. And
* it is the derived from WimaAreaData.
*
* \sa WimaServiceArea, WimaAreaData
*/
src/Wima/Geometry/WimaServiceAreaData.h
View file @
46adaf36
#pragma once
#include <QObject>
#include "QGeoCoordinate"
#include <QObject>
#include "WimaAreaData.h"
#include "WimaServiceArea.h"
class
WimaServiceAreaData
:
public
WimaAreaData
{
Q_OBJECT
class
WimaServiceAreaData
:
public
WimaAreaData
{
Q_OBJECT
public:
WimaServiceAreaData
(
QObject
*
parent
=
nullptr
);
WimaServiceAreaData
(
const
WimaServiceAreaData
&
other
,
QObject
*
parent
=
nullptr
);
WimaServiceAreaData
(
const
WimaServiceArea
&
other
,
QObject
*
parent
=
nullptr
);
WimaServiceAreaData
&
operator
=
(
const
WimaServiceAreaData
&
otherData
);
WimaServiceAreaData
&
operator
=
(
const
WimaServiceArea
&
otherArea
);
WimaServiceAreaData
(
QObject
*
parent
=
nullptr
);
WimaServiceAreaData
(
const
WimaServiceAreaData
&
other
,
QObject
*
parent
=
nullptr
);
WimaServiceAreaData
(
const
WimaServiceArea
&
other
,
QObject
*
parent
=
nullptr
);
WimaServiceAreaData
&
operator
=
(
const
WimaServiceAreaData
&
otherData
);
WimaServiceAreaData
&
operator
=
(
const
WimaServiceArea
&
otherArea
);
const
QGeoCoordinate
&
takeOffPosition
()
const
;
const
QGeoCoordinate
&
landPosition
()
const
;
const
QGeoCoordinate
&
depot
()
const
;
QString
type
()
const
;
WimaServiceAreaData
*
Clone
()
const
{
return
new
WimaServiceAreaData
();
}
static
const
char
*
typeString
;
QString
type
()
const
;
WimaServiceAreaData
*
Clone
()
const
{
return
new
WimaServiceAreaData
();
}
static
const
char
*
typeString
;
signals:
void
takeOffPositionChanged
(
const
QGeoCoordinate
&
other
);
void
landPositionChanged
(
const
QGeoCoordinate
&
other
);
void
depotChanged
(
const
QGeoCoordinate
&
other
);
public
slots
:
void
setTakeOffPosition
(
const
QGeoCoordinate
&
newCoordinate
);
void
setLandPosition
(
const
QGeoCoordinate
&
newCoordinate
);
void
setDepot
(
const
QGeoCoordinate
&
newCoordinate
);
protected:
void
assign
(
const
WimaServiceAreaData
&
other
);
void
assign
(
const
WimaServiceArea
&
other
);
void
assign
(
const
WimaServiceAreaData
&
other
);
void
assign
(
const
WimaServiceArea
&
other
);
private:
// see WimaServieArea.h for explanation
QGeoCoordinate
_takeOffPosition
;
QGeoCoordinate
_landPosition
;
// see WimaServieArea.h for explanation
QGeoCoordinate
_depot
;
};
src/Wima/WimaBridge.cc
View file @
46adaf36
#include "WimaBridge.h"
#include "WimaController.h"
WimaBridge
::
WimaBridge
(
QObject
*
parent
)
:
QObject
(
parent
)
{
WimaBridge
::
WimaBridge
(
QObject
*
parent
)
:
QObject
(
parent
)
{}
}
WimaController
*
WimaBridge
::
wimaController
()
{
return
_wimaController
;
}
WimaController
*
WimaBridge
::
wimaController
()
{
return
_wimaController
;
}
WimaPlaner
*
WimaBridge
::
wimaPlaner
()
{
return
_wimaPlaner
;
}
WimaPlaner
*
WimaBridge
::
wimaPlaner
()
{
return
_wimaPlaner
;
}
WimaBridge
*
WimaBridge
::
thisPointer
()
{
return
this
;
}
WimaBridge
*
WimaBridge
::
thisPointer
()
{
return
this
;
}
void
WimaBridge
::
setWimaController
(
WimaController
*
controller
)
{
if
(
_wimaController
!=
controller
){
_wimaController
=
controller
;
void
WimaBridge
::
setWimaController
(
WimaController
*
controller
)
{
if
(
_wimaController
!=
controller
)
{
_wimaController
=
controller
;
emit
wimaControllerChanged
(
_wimaController
);
}
emit
wimaControllerChanged
(
_wimaController
);
}
}
void
WimaBridge
::
setWimaPlaner
(
WimaPlaner
*
planer
)
{
if
(
_wimaPlaner
!=
planer
){
_wimaPlaner
=
planer
;
emit
wimaPlanerChanged
(
_wimaPlaner
);
}
void
WimaBridge
::
setWimaPlaner
(
WimaPlaner
*
planer
)
{
if
(
_wimaPlaner
!=
planer
)
{
_wimaPlaner
=
planer
;
emit
wimaPlanerChanged
(
_wimaPlaner
);
}
}
bool
WimaBridge
::
setWimaPlanData
(
const
WimaPlanData
&
planData
)
{
if
(
_wimaController
!=
nullptr
)
{
return
_wimaController
->
setWimaPlanData
(
planData
);
}
return
false
;
bool
WimaBridge
::
setWimaPlanData
(
QSharedPointer
<
WimaPlanData
>
planData
)
{
if
(
_wimaController
!=
nullptr
)
{
return
_wimaController
->
setWimaPlanData
(
planData
);
}
return
false
;
}
src/Wima/WimaBridge.h
View file @
46adaf36
#pragma once
#include <QObject>
#include <QSharedPointer>
#include "WimaPlanData.h"
...
...
@@ -11,38 +12,33 @@ class WimaPlaner;
//! \brief The WimaBridge class
//!
//! A bridge establishing a link between WimaController and WimaPlaner
class
WimaBridge
:
public
QObject
{
Q_OBJECT
class
WimaBridge
:
public
QObject
{
Q_OBJECT
public:
WimaBridge
(
QObject
*
parent
=
nullptr
);
WimaBridge
(
WimaBridge
&
other
)
=
delete
;
WimaBridge
(
QObject
*
parent
=
nullptr
);
WimaBridge
(
WimaBridge
&
other
)
=
delete
;
Q_PROPERTY
(
WimaPlaner
*
wimaPlaner
READ
wimaPlaner
WRITE
setWimaPlaner
NOTIFY
wimaPlanerChanged
)
Q_PROPERTY
(
WimaController
*
wimaController
READ
wimaController
WRITE
setWimaController
NOTIFY
wimaControllerChanged
)
Q_PROPERTY
(
WimaPlaner
*
wimaPlaner
READ
wimaPlaner
WRITE
setWimaPlaner
NOTIFY
wimaPlanerChanged
)
Q_PROPERTY
(
WimaController
*
wimaController
READ
wimaController
WRITE
setWimaController
NOTIFY
wimaControllerChanged
)
WimaController
*
wimaController
();
WimaPlaner
*
wimaPlaner
();
WimaController
*
wimaController
();
WimaPlaner
*
wimaPlaner
();
Q_INVOKABLE
WimaBridge
*
thisPointer
();
Q_INVOKABLE
WimaBridge
*
thisPointer
();
void
setWimaController
(
WimaController
*
controller
);
void
setWimaPlaner
(
WimaPlaner
*
planer
);
void
setWimaController
(
WimaController
*
controller
);
void
setWimaPlaner
(
WimaPlaner
*
planer
);
signals:
void
wimaControllerChanged
(
WimaController
*
controller
);
void
wimaPlanerChanged
(
WimaPlaner
*
planer
);
void
wimaControllerChanged
(
WimaController
*
controller
);
void
wimaPlanerChanged
(
WimaPlaner
*
planer
);
public
slots
:
bool
setWimaPlanData
(
const
WimaPlanData
&
planData
);
bool
setWimaPlanData
(
QSharedPointer
<
WimaPlanData
>
planData
);
private:
WimaController
*
_wimaController
;
WimaPlaner
*
_wimaPlaner
;
WimaController
*
_wimaController
;
WimaPlaner
*
_wimaPlaner
;
};
src/Wima/WimaController.cc
View file @
46adaf36
...
...
@@ -353,7 +353,7 @@ bool WimaController::_calcShortestPath(const QGeoCoordinate &start,
return
retVal
;
}
bool
WimaController
::
setWimaPlanData
(
const
WimaPlanData
&
planData
)
{
bool
WimaController
::
setWimaPlanData
(
QSharedPointer
<
WimaPlanData
>
planData
)
{
// reset visual items
_areas
.
clear
();
_defaultWM
.
clear
();
...
...
@@ -368,7 +368,7 @@ bool WimaController::setWimaPlanData(const WimaPlanData &planData) {
_localPlanDataValid
=
false
;
// extract list with WimaAreas
QList
<
const
WimaAreaData
*>
areaList
=
planData
.
areaList
();
QList
<
const
WimaAreaData
*>
areaList
=
planData
->
areaList
();
int
areaCounter
=
0
;
const
int
numAreas
=
4
;
// extract only numAreas Areas, if there are more they
...
...
@@ -424,7 +424,7 @@ bool WimaController::setWimaPlanData(const WimaPlanData &planData) {
emit
visualItemsChanged
();
// extract mission items
QList
<
MissionItem
>
tempMissionItems
=
planData
.
missionItems
();
QList
<
MissionItem
>
tempMissionItems
=
planData
->
missionItems
();
if
(
tempMissionItems
.
size
()
<
1
)
{
qWarning
(
"WimaController: Mission items from WimaPlaner empty!"
);
return
false
;
...
...
@@ -435,7 +435,7 @@ bool WimaController::setWimaPlanData(const WimaPlanData &planData) {
}
_WMSettings
.
setHomePosition
(
QGeoCoordinate
(
_serviceArea
.
center
().
latitude
(),
_serviceArea
.
center
().
longitude
(),
0
));
_serviceArea
.
depot
().
latitude
(),
_serviceArea
.
depot
().
longitude
(),
0
));
if
(
!
_defaultWM
.
reset
())
{
Q_ASSERT
(
false
);
...
...
src/Wima/WimaController.h
View file @
46adaf36
...
...
@@ -148,7 +148,7 @@ public:
// Property setters
void
setMasterController
(
PlanMasterController
*
masterController
);
void
setMissionController
(
MissionController
*
missionController
);
bool
setWimaPlanData
(
const
WimaPlanData
&
planData
);
bool
setWimaPlanData
(
QSharedPointer
<
WimaPlanData
>
planData
);
// Member Methodes
Q_INVOKABLE
WimaController
*
thisPointer
();
...
...
src/Wima/WimaPlanData.cc
View file @
46adaf36
#include "WimaPlanData.h"
WimaPlanData
::
WimaPlanData
(
QObject
*
parent
)
:
QObject
(
parent
)
{
}
WimaPlanData
::
WimaPlanData
(
QObject
*
parent
)
:
QObject
(
parent
)
{}
WimaPlanData
::
WimaPlanData
(
const
WimaPlanData
&
other
,
QObject
*
parent
)
:
QObject
(
parent
)
{
*
this
=
other
;
:
QObject
(
parent
)
{
*
this
=
other
;
}
/*!
...
...
@@ -18,44 +13,41 @@ WimaPlanData::WimaPlanData(const WimaPlanData &other, QObject *parent)
* Copies the data area list of \a other to the calling \c WimaPlanData object.
* Returns a reference to the calling \c WimaPlanData object.
*/
WimaPlanData
&
WimaPlanData
::
operator
=
(
const
WimaPlanData
&
other
)
{
// copy wima areas
QList
<
const
WimaAreaData
*>
areaList
=
other
.
areaList
();
_areaList
.
clear
();
for
(
int
i
=
0
;
i
<
areaList
.
size
();
i
++
)
{
const
WimaAreaData
*
areaData
=
areaList
[
i
];
// determine area type and append
if
(
areaData
->
type
()
==
WimaJoinedAreaData
::
typeString
)
{
this
->
append
(
*
qobject_cast
<
const
WimaJoinedAreaData
*>
(
areaData
));
}
else
if
(
areaData
->
type
()
==
WimaServiceAreaData
::
typeString
)
{
this
->
append
(
*
qobject_cast
<
const
WimaServiceAreaData
*>
(
areaData
));
}
else
if
(
areaData
->
type
()
==
WimaMeasurementAreaData
::
typeString
)
{
this
->
append
(
*
qobject_cast
<
const
WimaMeasurementAreaData
*>
(
areaData
));
}
else
if
(
areaData
->
type
()
==
WimaCorridorData
::
typeString
)
{
this
->
append
(
*
qobject_cast
<
const
WimaCorridorData
*>
(
areaData
));
}
WimaPlanData
&
WimaPlanData
::
operator
=
(
const
WimaPlanData
&
other
)
{
// copy wima areas
QList
<
const
WimaAreaData
*>
areaList
=
other
.
areaList
();
_areaList
.
clear
();
for
(
int
i
=
0
;
i
<
areaList
.
size
();
i
++
)
{
const
WimaAreaData
*
areaData
=
areaList
[
i
];
// determine area type and append
if
(
areaData
->
type
()
==
WimaJoinedAreaData
::
typeString
)
{
this
->
append
(
*
qobject_cast
<
const
WimaJoinedAreaData
*>
(
areaData
));
}
else
if
(
areaData
->
type
()
==
WimaServiceAreaData
::
typeString
)
{
this
->
append
(
*
qobject_cast
<
const
WimaServiceAreaData
*>
(
areaData
));
}
else
if
(
areaData
->
type
()
==
WimaMeasurementAreaData
::
typeString
)
{
this
->
append
(
*
qobject_cast
<
const
WimaMeasurementAreaData
*>
(
areaData
));
}
else
if
(
areaData
->
type
()
==
WimaCorridorData
::
typeString
)
{
this
->
append
(
*
qobject_cast
<
const
WimaCorridorData
*>
(
areaData
));
}
}
// copy mission items
_missionItems
=
other
.
missionItems
();
// copy mission items
_missionItems
=
other
.
missionItems
();
return
*
this
;
return
*
this
;
}
/*!
* \fn void WimaPlanData::append(const WimaAreaData &areaData)
*
* Adds a WimaAreaData item.
*/
void
WimaPlanData
::
append
(
const
WimaJoinedAreaData
&
areaData
)
{
_joinedArea
=
areaData
;
void
WimaPlanData
::
append
(
const
WimaJoinedAreaData
&
areaData
)
{
_joinedArea
=
areaData
;
if
(
!
_areaList
.
contains
(
&
_joinedArea
)
)
{
_areaList
.
append
(
&
_joinedArea
);
}
if
(
!
_areaList
.
contains
(
&
_joinedArea
)
)
{
_areaList
.
append
(
&
_joinedArea
);
}
}
/*!
...
...
@@ -63,13 +55,12 @@ void WimaPlanData::append(const WimaJoinedAreaData &areaData)
*
* Adds a WimaServiceAreaData item.
*/
void
WimaPlanData
::
append
(
const
WimaServiceAreaData
&
areaData
)
{
_serviceArea
=
areaData
;
void
WimaPlanData
::
append
(
const
WimaServiceAreaData
&
areaData
)
{
_serviceArea
=
areaData
;
if
(
!
_areaList
.
contains
(
&
_serviceArea
)
)
{
_areaList
.
append
(
&
_serviceArea
);
}
if
(
!
_areaList
.
contains
(
&
_serviceArea
)
)
{
_areaList
.
append
(
&
_serviceArea
);
}
}
/*!
...
...
@@ -77,13 +68,12 @@ void WimaPlanData::append(const WimaServiceAreaData &areaData)
*
* Adds a WimaCorridorData item.
*/
void
WimaPlanData
::
append
(
const
WimaCorridorData
&
areaData
)
{
_corridor
=
areaData
;
void
WimaPlanData
::
append
(
const
WimaCorridorData
&
areaData
)
{
_corridor
=
areaData
;
if
(
!
_areaList
.
contains
(
&
_corridor
)
)
{
_areaList
.
append
(
&
_corridor
);
}
if
(
!
_areaList
.
contains
(
&
_corridor
)
)
{
_areaList
.
append
(
&
_corridor
);
}
}
/*!
...
...
@@ -91,21 +81,19 @@ void WimaPlanData::append(const WimaCorridorData &areaData)
*
* Adds a WimaMeasurementAreaData item.
*/
void
WimaPlanData
::
append
(
const
WimaMeasurementAreaData
&
areaData
)
{
_measurementArea
=
areaData
;
void
WimaPlanData
::
append
(
const
WimaMeasurementAreaData
&
areaData
)
{
_measurementArea
=
areaData
;
if
(
!
_areaList
.
contains
(
&
_measurementArea
)
)
{
_areaList
.
append
(
&
_measurementArea
);
}
if
(
!
_areaList
.
contains
(
&
_measurementArea
)
)
{
_areaList
.
append
(
&
_measurementArea
);
}
}
void
WimaPlanData
::
append
(
const
QList
<
MissionItem
*>
&
missionItems
)
{
for
(
MissionItem
*
item
:
missionItems
)
{
MissionItem
copy
=
MissionItem
(
*
item
,
this
);
_missionItems
.
append
(
copy
);
}
void
WimaPlanData
::
append
(
const
QList
<
MissionItem
*>
&
missionItems
)
{
for
(
auto
*
item
:
missionItems
)
{
item
->
setParent
(
this
);
_missionItems
.
append
(
item
);
}
}
/*!
...
...
@@ -113,20 +101,17 @@ void WimaPlanData::append(const QList<MissionItem *> &missionItems)
*
* Clears all stored objects
*/
void
WimaPlanData
::
clear
()
{
_areaList
.
clear
();
_missionItems
.
clear
();
void
WimaPlanData
::
clear
()
{
_areaList
.
clear
();
_missionItems
.
clear
();
}
QList
<
const
WimaAreaData
*>
WimaPlanData
::
areaList
()
const
{
return
_areaList
;
const
QList
<
const
WimaAreaData
*>
&
WimaPlanData
::
areaList
()
const
{