Skip to content

Commit

Permalink
Merge pull request mavlink#4871 from DonLakeFlyer/MorePlanWorm
Browse files Browse the repository at this point in the history
More work on Plan user model
  • Loading branch information
DonLakeFlyer authored Mar 28, 2017
2 parents 4544f67 + 420ea06 commit daf1849
Show file tree
Hide file tree
Showing 5 changed files with 94 additions and 107 deletions.
7 changes: 5 additions & 2 deletions src/MissionManager/MissionController.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1618,12 +1618,15 @@ void MissionController::save(void)
saveToFile(missionDir + "/" + missionName);
}

_settingsItem->setExistingMission(savedToFile);
}

void MissionController::saveAndSend(void)
{
// Send to vehicle if we are connected
if (!_activeVehicle->isOfflineEditingVehicle()) {
sendToVehicle();
}

_settingsItem->setExistingMission(savedToFile);
}

void MissionController::clearMission(void)
Expand Down
7 changes: 5 additions & 2 deletions src/MissionManager/MissionController.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,13 @@ class MissionController : public PlanElementController
/// Sends the mission items to the specified vehicle
static void sendItemsToVehicle(Vehicle* vehicle, QmlObjectListModel* visualMissionItems);

/// Saves the mission to file if any and sends to vehicle
/// Saves the mission to file
Q_INVOKABLE void save(void);

/// Removes all items from the mission saving and sending as needed
/// Save and to file and send to vehicle if possible
Q_INVOKABLE void saveAndSend(void);

/// Removes all items from the mission
Q_INVOKABLE void clearMission(void);

/// Closes the mission, saving and sending as needed before closing
Expand Down
11 changes: 2 additions & 9 deletions src/PlanView/MissionSettingsEditor.qml
Original file line number Diff line number Diff line change
Expand Up @@ -109,25 +109,18 @@ Rectangle {
anchors.right: parent.right

QGCButton {
text: qsTr("Clear")
text: qsTr("Remove All")
visible: !_noMissionItemsAdded
Layout.fillWidth: true
onClicked: missionController.clearMission()
}

QGCButton {
text: qsTr("Close")
text: qsTr("New Mission")
visible: !_noMissionItemsAdded
Layout.fillWidth: true
onClicked: missionController.closeMission()
}

QGCButton {
text: qsTr("Upload")
visible: !_noMissionItemsAdded && !automaticUploadCheckbox.checked
Layout.fillWidth: true
onClicked: missionController.sendToVehicle()
}
}

Loader {
Expand Down
25 changes: 22 additions & 3 deletions src/PlanView/PlanToolBar.qml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ Rectangle {
property bool _statusValid: currentMissionItem != undefined
property bool _missionValid: missionItems != undefined
property bool _controllerValid: missionController != undefined
property bool _manualUpload: QGroundControl.settingsManager.appSettings.automaticMissionUpload.rawValue == 0

Connections {
target: QGroundControl.settingsManager.appSettings.automaticMissionUpload
onRawValueChanged: console.log("changed", QGroundControl.settingsManager.appSettings.automaticMissionUpload.rawValue)
}

property real _distance: _statusValid ? currentMissionItem.distance : NaN
property real _altDifference: _statusValid ? currentMissionItem.altDifference : NaN
Expand Down Expand Up @@ -66,9 +72,11 @@ Rectangle {
onReleased: { mouse.accepted = true; }
}

Row {
RowLayout {
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: uploadButton.visible ? uploadButton.left : uploadButton.right
spacing: ScreenTools.defaultFontPixelWidth * 2

QGCToolBarButton {
Expand All @@ -81,8 +89,9 @@ Rectangle {

onClicked: {
checked = false
missionController.saveOnSwitch()
showFlyView()
if (missionController.saveOnSwitch()) {
showFlyView()
}
}
}

Expand Down Expand Up @@ -163,5 +172,15 @@ Rectangle {
QGCLabel { text: "--" }
}
}

QGCButton {
id: uploadButton
anchors.rightMargin: _margins
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
text: qsTr("Upload")
visible: _manualUpload && missionController.dirty
onClicked: missionController.uploadFromToolbar()
}
}

151 changes: 60 additions & 91 deletions src/PlanView/PlanView.qml
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,16 @@ QGCView {
property bool _lightWidgetBorders: editorMap.isSatelliteMap
property bool _addWaypointOnClick: false
property bool _singleComplexItem: missionController.complexMissionItemNames.length === 1
property real _toolbarHeight: _qgcView.height - ScreenTools.availableHeight
property real _toolbarHeight: _qgcView.height - ScreenTools.availableHeight
property int _editingLayer: _layerMission

/// The controller which should be called for load/save, send to/from vehicle calls
property var _syncDropDownController: missionController

readonly property int _layerMission: 1
readonly property int _layerGeoFence: 2
readonly property int _layerRallyPoints: 3
property int _editingLayer: _layerMission
readonly property int _layerMission: 1
readonly property int _layerGeoFence: 2
readonly property int _layerRallyPoints: 3
readonly property string _armedVehicleUploadPrompt: qsTr("Vehicle is currently armed. Do you want to upload the mission to the vehicle?")

Component.onCompleted: {
toolbar.missionController = Qt.binding(function () { return missionController })
Expand Down Expand Up @@ -106,7 +107,28 @@ QGCView {

// Users is switching away from Plan View
function saveOnSwitch() {
save()
if (missionController.dirty) {
save()
if (_activeVehicle.armed) {
_qgcView.showDialog(confirmSendToActiveVehicleAndSwitchView, qsTr("Mission Upload"), _qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No)
return false
} else {
sendToVehicle()
}
}
return true
}

// User clicked upload button in plan toolbar
function uploadFromToolbar() {
if (missionController.dirty) {
save()
if (_activeVehicle.armed) {
_qgcView.showDialog(confirmSendToActiveVehicle, qsTr("Mission Upload"), _qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No)
} else {
sendToVehicle()
}
}
}

function loadFromSelectedFile() {
Expand Down Expand Up @@ -506,7 +528,6 @@ QGCView {
color: qgcPal.window
title: qsTr("Plan")
z: QGroundControl.zOrderWidgets
buttonEnabled: [ true, true, true, true, true ]
buttonVisible: [ true, true, true, _showZoom, _showZoom ]
maxHeight: mapScale.y - toolStrip.y

Expand Down Expand Up @@ -777,90 +798,6 @@ QGCView {

//- ToolStrip DropPanel Components

Component {
id: syncDropPanel

Column {
id: columnHolder
spacing: _margin

property string _overwriteText: (_editingLayer == _layerMission) ? qsTr("Mission overwrite") : ((_editingLayer == _layerGeoFence) ? qsTr("GeoFence overwrite") : qsTr("Rally Points overwrite"))

QGCLabel {
width: sendSaveGrid.width
wrapMode: Text.WordWrap
text: _syncDropDownController.dirty ?
qsTr("You have unsaved changes. You should send to your vehicle, or save to a file:") :
qsTr("Sync:")
}

GridLayout {
id: sendSaveGrid
columns: 2
anchors.margins: _margin
rowSpacing: _margin
columnSpacing: ScreenTools.defaultFontPixelWidth

QGCButton {
text: qsTr("Save")
Layout.fillWidth: true
enabled: !_syncDropDownController.syncInProgress
onClicked: {
dropPanel.hide()
_syncDropDownController.save()
}
}

QGCButton {
text: qsTr("Load From Vehicle")
Layout.fillWidth: true
enabled: _activeVehicle && !_syncDropDownController.syncInProgress
onClicked: {
dropPanel.hide()
if (_syncDropDownController.dirty) {
_qgcView.showDialog(syncLoadFromVehicleOverwrite, columnHolder._overwriteText, _qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.Cancel)
} else {
_syncDropDownController.loadFromVehicle()
}
}
}

QGCButton {
text: qsTr("Save To File...")
Layout.fillWidth: true
enabled: !_syncDropDownController.syncInProgress
onClicked: {
dropPanel.hide()
_syncDropDownController.saveToSelectedFile()
}
}

QGCButton {
text: qsTr("Load From File...")
Layout.fillWidth: true
enabled: !_syncDropDownController.syncInProgress
onClicked: {
dropPanel.hide()
if (_syncDropDownController.dirty) {
_qgcView.showDialog(syncLoadFromFileOverwrite, columnHolder._overwriteText, _qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.Cancel)
} else {
_syncDropDownController.loadFromSelectedFile()
}
}
}

QGCButton {
text: qsTr("Remove All")
Layout.fillWidth: true
onClicked: {
dropPanel.hide()
_qgcView.showDialog(removeAllPromptDialog, qsTr("Remove all"), _qgcView.showDialogDefaultWidth, StandardButton.Yes | StandardButton.No)
}
}
}
}
}

Component {
id: centerMapDropPanel

Expand Down Expand Up @@ -904,4 +841,36 @@ QGCView {
flightMap: editorMap
}
}

Component {
id: confirmSendToActiveVehicleAndSwitchView

QGCViewMessage {
message: _armedVehicleUploadPrompt

function accept() {
missionController.sendToVehicle()
toolbar.showFlyView()
hideDialog()
}

function reject() {
toolbar.showFlyView()
hideDialog()
}
}
}

Component {
id: confirmSendToActiveVehicle

QGCViewMessage {
message: _armedVehicleUploadPrompt

function accept() {
missionController.sendToVehicle()
hideDialog()
}
}
}
} // QGCVIew

0 comments on commit daf1849

Please sign in to comment.