Browse Source

Add support for mission item insert

QGC4.4
Don Gagne 9 years ago
parent
commit
3ad581bdfb
  1. 11
      src/MissionEditor/MissionEditor.qml
  2. 4
      src/MissionManager/MissionController.cc
  3. 6
      src/MissionManager/MissionController.h
  4. 4
      src/MissionManager/MissionControllerTest.cc
  5. 6
      src/QmlControls/MissionItemEditor.qml

11
src/MissionEditor/MissionEditor.qml

@ -200,7 +200,7 @@ QGCView { @@ -200,7 +200,7 @@ QGCView {
if (false /*homePositionManagerButton.checked*/) {
//offlineHomePosition = coordinate
} else if (addMissionItemsButton.checked) {
var index = controller.addMissionItem(coordinate)
var index = controller.insertMissionItem(coordinate, controller.missionItems.count)
setCurrentItem(index)
} else {
editorMap.zoomLevel = editorMap.maxZoomLevel - 2
@ -288,10 +288,6 @@ QGCView { @@ -288,10 +288,6 @@ QGCView {
} else {
itemDragger.clearItem()
}
// Move to the new position
editorMap.latitude = object.coordinate.latitude
editorMap.longitude = object.coordinate.longitude
}
}
}
@ -374,6 +370,11 @@ QGCView { @@ -374,6 +370,11 @@ QGCView {
itemDragger.clearItem()
controller.removeAllMissionItems()
}
onInsert: {
controller.insertMissionItem(editorMap.center, i)
setCurrentItem(i)
}
}
} // ListView
} // Item - Mission Item editor

4
src/MissionManager/MissionController.cc

@ -158,7 +158,7 @@ void MissionController::sendMissionItems(void) @@ -158,7 +158,7 @@ void MissionController::sendMissionItems(void)
}
}
int MissionController::addMissionItem(QGeoCoordinate coordinate)
int MissionController::insertMissionItem(QGeoCoordinate coordinate, int i)
{
MissionItem * newItem = new MissionItem(this);
newItem->setSequenceNumber(_missionItems->count());
@ -179,7 +179,7 @@ int MissionController::addMissionItem(QGeoCoordinate coordinate) @@ -179,7 +179,7 @@ int MissionController::addMissionItem(QGeoCoordinate coordinate)
newItem->setParam7(lastValue);
}
}
_missionItems->append(newItem);
_missionItems->insert(i, newItem);
_recalcAll();

6
src/MissionManager/MissionController.h

@ -46,8 +46,7 @@ public: @@ -46,8 +46,7 @@ public:
Q_PROPERTY(QGeoCoordinate liveHomePosition READ liveHomePosition NOTIFY liveHomePositionChanged)
Q_PROPERTY(bool autoSync READ autoSync WRITE setAutoSync NOTIFY autoSyncChanged)
Q_INVOKABLE void start(bool editMode) ;
Q_INVOKABLE int addMissionItem(QGeoCoordinate coordinate);
Q_INVOKABLE void start(bool editMode);
Q_INVOKABLE void getMissionItems(void);
Q_INVOKABLE void sendMissionItems(void);
Q_INVOKABLE void loadMissionFromFile(void);
@ -55,6 +54,9 @@ public: @@ -55,6 +54,9 @@ public:
Q_INVOKABLE void removeMissionItem(int index);
Q_INVOKABLE void removeAllMissionItems(void);
/// @param i: index to insert at
Q_INVOKABLE int insertMissionItem(QGeoCoordinate coordinate, int i);
// Property accessors
QmlObjectListModel* missionItems(void);

4
src/MissionManager/MissionControllerTest.cc

@ -176,7 +176,7 @@ void MissionControllerTest::_testAddWaypointWorker(MAV_AUTOPILOT firmwareType) @@ -176,7 +176,7 @@ void MissionControllerTest::_testAddWaypointWorker(MAV_AUTOPILOT firmwareType)
QGeoCoordinate coordinate(37.803784, -122.462276);
_missionController->addMissionItem(coordinate);
_missionController->insertMissionItem(coordinate, _missionController->missionItems()->count());
QCOMPARE(_multiSpyMissionController->checkOnlySignalsByMask(waypointLinesChangedSignalMask), true);
@ -223,7 +223,7 @@ void MissionControllerTest::_testOfflineToOnlineWorker(MAV_AUTOPILOT firmwareTyp @@ -223,7 +223,7 @@ void MissionControllerTest::_testOfflineToOnlineWorker(MAV_AUTOPILOT firmwareTyp
_missionController = new MissionController();
Q_CHECK_PTR(_missionController);
_missionController->start(true /* editMode */);
_missionController->addMissionItem(QGeoCoordinate(37.803784, -122.462276));
_missionController->insertMissionItem(QGeoCoordinate(37.803784, -122.462276), _missionController->missionItems()->count());
// Go online to empty vehicle
MissionControllerManagerTest::_initForFirmwareType(firmwareType);

6
src/QmlControls/MissionItemEditor.qml

@ -21,6 +21,7 @@ Rectangle { @@ -21,6 +21,7 @@ Rectangle {
signal clicked
signal remove
signal removeAll
signal insert(int i)
height: innerItem.height + (_margin * 3)
color: missionItem.isCurrentItem ? qgcPal.buttonHighlight : qgcPal.windowShade
@ -88,6 +89,11 @@ Rectangle { @@ -88,6 +89,11 @@ Rectangle {
id: hamburgerMenu
MenuItem {
text: "Insert"
onTriggered: insert(missionItem.sequenceNumber)
}
MenuItem {
text: "Delete"
onTriggered: remove()
}

Loading…
Cancel
Save