Commit 2916ae4c authored by Don Gagne's avatar Don Gagne

parent 63680cba
...@@ -202,6 +202,7 @@ ...@@ -202,6 +202,7 @@
<file alias="QGroundControl/FlightMap/QGCPitchIndicator.qml">src/FlightMap/Widgets/QGCPitchIndicator.qml</file> <file alias="QGroundControl/FlightMap/QGCPitchIndicator.qml">src/FlightMap/Widgets/QGCPitchIndicator.qml</file>
<file alias="QGroundControl/FlightMap/QGCVideoBackground.qml">src/FlightMap/QGCVideoBackground.qml</file> <file alias="QGroundControl/FlightMap/QGCVideoBackground.qml">src/FlightMap/QGCVideoBackground.qml</file>
<file alias="QGroundControl/FlightMap/qmldir">src/QmlControls/QGroundControl/FlightMap/qmldir</file> <file alias="QGroundControl/FlightMap/qmldir">src/QmlControls/QGroundControl/FlightMap/qmldir</file>
<file alias="QGroundControl/FlightMap/SplitIndicator.qml">src/FlightMap/MapItems/SplitIndicator.qml</file>
<file alias="QGroundControl/FlightMap/VehicleMapItem.qml">src/FlightMap/MapItems/VehicleMapItem.qml</file> <file alias="QGroundControl/FlightMap/VehicleMapItem.qml">src/FlightMap/MapItems/VehicleMapItem.qml</file>
<file alias="QGroundControl/ScreenTools/qmldir">src/QmlControls/QGroundControl/ScreenTools/qmldir</file> <file alias="QGroundControl/ScreenTools/qmldir">src/QmlControls/QGroundControl/ScreenTools/qmldir</file>
<file alias="QGroundControl/ScreenTools/ScreenTools.qml">src/QmlControls/ScreenTools.qml</file> <file alias="QGroundControl/ScreenTools/ScreenTools.qml">src/QmlControls/ScreenTools.qml</file>
......
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import QtQuick 2.11
import QtQuick.Controls 2.4
import QGroundControl.ScreenTools 1.0
import QGroundControl.Controls 1.0
Rectangle {
id: _root
width: ScreenTools.defaultFontPixelHeight * 1.5
height: width
radius: width / 2
border.color: indicatorColor
color: "transparent"
property color indicatorColor: "white"
signal clicked
Rectangle {
anchors.margins: _root.height / 6
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
width: 1
color: indicatorColor
}
Rectangle {
anchors.margins: _root.height / 6
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
height: 1
color: indicatorColor
}
QGCMouseArea {
fillItem: parent
onClicked: _root.clicked()
}
}
...@@ -69,6 +69,7 @@ MissionController::MissionController(PlanMasterController* masterController, QOb ...@@ -69,6 +69,7 @@ MissionController::MissionController(PlanMasterController* masterController, QOb
, _progressPct (0) , _progressPct (0)
, _currentPlanViewIndex (-1) , _currentPlanViewIndex (-1)
, _currentPlanViewItem (nullptr) , _currentPlanViewItem (nullptr)
, _splitSegment (nullptr)
{ {
_resetMissionFlightStatus(); _resetMissionFlightStatus();
managerVehicleChanged(_managerVehicle); managerVehicleChanged(_managerVehicle);
...@@ -2106,6 +2107,7 @@ VisualMissionItem* MissionController::currentPlanViewItem(void) const ...@@ -2106,6 +2107,7 @@ VisualMissionItem* MissionController::currentPlanViewItem(void) const
void MissionController::setCurrentPlanViewIndex(int sequenceNumber, bool force) void MissionController::setCurrentPlanViewIndex(int sequenceNumber, bool force)
{ {
if(_visualItems && (force || sequenceNumber != _currentPlanViewIndex)) { if(_visualItems && (force || sequenceNumber != _currentPlanViewIndex)) {
_splitSegment = nullptr;
_currentPlanViewItem = nullptr; _currentPlanViewItem = nullptr;
_currentPlanViewIndex = -1; _currentPlanViewIndex = -1;
for (int i = 0; i < _visualItems->count(); i++) { for (int i = 0; i < _visualItems->count(); i++) {
...@@ -2114,12 +2116,26 @@ void MissionController::setCurrentPlanViewIndex(int sequenceNumber, bool force) ...@@ -2114,12 +2116,26 @@ void MissionController::setCurrentPlanViewIndex(int sequenceNumber, bool force)
pVI->setIsCurrentItem(true); pVI->setIsCurrentItem(true);
_currentPlanViewItem = pVI; _currentPlanViewItem = pVI;
_currentPlanViewIndex = sequenceNumber; _currentPlanViewIndex = sequenceNumber;
if (pVI->specifiesCoordinate() && !pVI->isStandaloneCoordinate()) {
// Determine split segment used to display line split editing ui.
for (int j=i-1; j>0; j--) {
VisualMissionItem* pPrev = qobject_cast<VisualMissionItem*>(_visualItems->get(j));
if (pPrev->specifiesCoordinate() && !pPrev->isStandaloneCoordinate()) {
VisualItemPair splitPair(pPrev, pVI);
if (_linesTable.contains(splitPair)) {
_splitSegment = _linesTable[splitPair];
}
}
}
}
} else { } else {
pVI->setIsCurrentItem(false); pVI->setIsCurrentItem(false);
} }
} }
emit currentPlanViewIndexChanged(); emit currentPlanViewIndexChanged();
emit currentPlanViewItemChanged(); emit currentPlanViewItemChanged();
emit splitSegmentChanged();
} }
} }
......
...@@ -73,6 +73,7 @@ public: ...@@ -73,6 +73,7 @@ public:
Q_PROPERTY(QmlObjectListModel* directionArrows READ directionArrows CONSTANT) Q_PROPERTY(QmlObjectListModel* directionArrows READ directionArrows CONSTANT)
Q_PROPERTY(QStringList complexMissionItemNames READ complexMissionItemNames NOTIFY complexMissionItemNamesChanged) Q_PROPERTY(QStringList complexMissionItemNames READ complexMissionItemNames NOTIFY complexMissionItemNamesChanged)
Q_PROPERTY(QGeoCoordinate plannedHomePosition READ plannedHomePosition NOTIFY plannedHomePositionChanged) Q_PROPERTY(QGeoCoordinate plannedHomePosition READ plannedHomePosition NOTIFY plannedHomePositionChanged)
Q_PROPERTY(CoordinateVector* splitSegment MEMBER _splitSegment NOTIFY splitSegmentChanged) ///< Segment which show show + split ui element
Q_PROPERTY(double progressPct READ progressPct NOTIFY progressPctChanged) Q_PROPERTY(double progressPct READ progressPct NOTIFY progressPctChanged)
...@@ -207,6 +208,7 @@ public: ...@@ -207,6 +208,7 @@ public:
signals: signals:
void visualItemsChanged (void); void visualItemsChanged (void);
void waypointPathChanged (void); void waypointPathChanged (void);
void splitSegmentChanged (void);
void newItemsFromVehicle (void); void newItemsFromVehicle (void);
void missionDistanceChanged (double missionDistance); void missionDistanceChanged (double missionDistance);
void missionTimeChanged (void); void missionTimeChanged (void);
...@@ -302,6 +304,7 @@ private: ...@@ -302,6 +304,7 @@ private:
QTimer _updateTimer; QTimer _updateTimer;
QGCGeoBoundingCube _travelBoundingCube; QGCGeoBoundingCube _travelBoundingCube;
QGeoCoordinate _takeoffCoordinate; QGeoCoordinate _takeoffCoordinate;
CoordinateVector* _splitSegment;
static const char* _settingsGroup; static const char* _settingsGroup;
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
* *
****************************************************************************/ ****************************************************************************/
import QtQuick 2.3 import QtQuick 2.3
import QtQuick.Controls 1.2 import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.2 import QtQuick.Dialogs 1.2
...@@ -28,8 +27,6 @@ import QGroundControl.ShapeFileHelper 1.0 ...@@ -28,8 +27,6 @@ import QGroundControl.ShapeFileHelper 1.0
import QGroundControl.Airspace 1.0 import QGroundControl.Airspace 1.0
import QGroundControl.Airmap 1.0 import QGroundControl.Airmap 1.0
/// Mission Editor
Item { Item {
property bool planControlColapsed: false property bool planControlColapsed: false
...@@ -258,6 +255,7 @@ Item { ...@@ -258,6 +255,7 @@ Item {
Connections { Connections {
target: _missionController target: _missionController
onNewItemsFromVehicle: { onNewItemsFromVehicle: {
if (_visualItems && _visualItems.count !== 1) { if (_visualItems && _visualItems.count !== 1) {
mapFitFunctions.fitMapViewportToMissionItems() mapFitFunctions.fitMapViewportToMissionItems()
...@@ -478,8 +476,41 @@ Item { ...@@ -478,8 +476,41 @@ Item {
delegate: MapLineArrow { delegate: MapLineArrow {
fromCoord: object ? object.coordinate1 : undefined fromCoord: object ? object.coordinate1 : undefined
toCoord: object ? object.coordinate2 : undefined toCoord: object ? object.coordinate2 : undefined
arrowPosition: 2 arrowPosition: 3
z: QGroundControl.zOrderWaypointLines z: QGroundControl.zOrderWaypointLines + 1
}
}
// UI for splitting the current segment
MapQuickItem {
id: splitSegmentItem
anchorPoint.x: sourceItem.width / 2
anchorPoint.y: sourceItem.height / 2
z: QGroundControl.zOrderWaypointLines + 1
sourceItem: SplitIndicator {
onClicked: insertSimpleMissionItem(splitSegmentItem.coordinate, _missionController.currentPlanViewIndex)
}
function _updateSplitCoord() {
if (_missionController.splitSegment) {
var distance = _missionController.splitSegment.coordinate1.distanceTo(_missionController.splitSegment.coordinate2)
var azimuth = _missionController.splitSegment.coordinate1.azimuthTo(_missionController.splitSegment.coordinate2)
splitSegmentItem.coordinate = _missionController.splitSegment.coordinate1.atDistanceAndAzimuth(distance / 2, azimuth)
} else {
coordinate = QtPositioning.coordinate()
}
}
Connections {
target: _missionController
onSplitSegmentChanged: splitSegmentItem._updateSplitCoord()
}
Connections {
target: _missionController.splitSegment
onCoordinate1Changed: splitSegmentItem._updateSplitCoord()
onCoordinate2Changed: splitSegmentItem._updateSplitCoord()
} }
} }
......
...@@ -27,4 +27,5 @@ MissionItemView 1.0 MissionItemView.qml ...@@ -27,4 +27,5 @@ MissionItemView 1.0 MissionItemView.qml
MissionLineView 1.0 MissionLineView.qml MissionLineView 1.0 MissionLineView.qml
PlanMapItems 1.0 PlanMapItems.qml PlanMapItems 1.0 PlanMapItems.qml
PolygonEditor 1.0 PolygonEditor.qml PolygonEditor 1.0 PolygonEditor.qml
SplitIndicator 1.0 SplitIndicator.qml
VehicleMapItem 1.0 VehicleMapItem.qml VehicleMapItem 1.0 VehicleMapItem.qml
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment