Browse Source

Show flight area on map when listing flights

Add message asking user confirmation to end a flight
QGC4.4
Gus Grubba 7 years ago
parent
commit
bdb044dfb3
  1. 2
      src/Airmap/AirMapAdvisoryManager.cc
  2. 6
      src/Airmap/AirMapManager.cc
  3. 2
      src/Airmap/AirMapRestrictionManager.cc
  4. 2
      src/Airmap/AirMapRulesetsManager.cc
  5. 2
      src/Airmap/AirMapWeatherInfoManager.cc
  6. 36
      src/Airmap/AirmapSettings.qml
  7. 4
      src/AirspaceManagement/AirspaceFlightPlanProvider.cc

2
src/Airmap/AirMapAdvisoryManager.cc

@ -58,7 +58,7 @@ adv_sort(QObject* a, QObject* b)
void void
AirMapAdvisoryManager::_requestAdvisories() AirMapAdvisoryManager::_requestAdvisories()
{ {
qCDebug(AirMapManagerLog) << "Advisories Request"; qCDebug(AirMapManagerLog) << "Advisories Request (ROI Changed)";
if (!_shared.client()) { if (!_shared.client()) {
qCDebug(AirMapManagerLog) << "No AirMap client instance. Not updating Advisories"; qCDebug(AirMapManagerLog) << "No AirMap client instance. Not updating Advisories";
_valid = false; _valid = false;

6
src/Airmap/AirMapManager.cc

@ -37,9 +37,9 @@ AirMapManager::AirMapManager(QGCApplication* app, QGCToolbox* toolbox)
{ {
_logger = std::make_shared<qt::Logger>(); _logger = std::make_shared<qt::Logger>();
qt::register_types(); // TODO: still needed? qt::register_types(); // TODO: still needed?
_logger->logging_category().setEnabled(QtDebugMsg, true); _logger->logging_category().setEnabled(QtDebugMsg, false);
_logger->logging_category().setEnabled(QtInfoMsg, true); _logger->logging_category().setEnabled(QtInfoMsg, false);
_logger->logging_category().setEnabled(QtWarningMsg, true); _logger->logging_category().setEnabled(QtWarningMsg, false);
_dispatchingLogger = std::make_shared<qt::DispatchingLogger>(_logger); _dispatchingLogger = std::make_shared<qt::DispatchingLogger>(_logger);
connect(&_shared, &AirMapSharedState::error, this, &AirMapManager::_error); connect(&_shared, &AirMapSharedState::error, this, &AirMapManager::_error);
} }

2
src/Airmap/AirMapRestrictionManager.cc

@ -49,7 +49,7 @@ AirMapRestrictionManager::_requestRestrictions(const QGCGeoBoundingCube& roi)
qCWarning(AirMapManagerLog) << "AirMapRestrictionManager::updateROI: state not idle"; qCWarning(AirMapManagerLog) << "AirMapRestrictionManager::updateROI: state not idle";
return; return;
} }
qCDebug(AirMapManagerLog) << "Setting Restriction Manager ROI"; qCDebug(AirMapManagerLog) << "Restrictions Request (ROI Changed)";
_polygons.clear(); _polygons.clear();
_circles.clear(); _circles.clear();
_state = State::RetrieveItems; _state = State::RetrieveItems;

2
src/Airmap/AirMapRulesetsManager.cc

@ -199,7 +199,7 @@ void AirMapRulesetsManager::setROI(const QGCGeoBoundingCube& roi)
qCWarning(AirMapManagerLog) << "AirMapRulesetsManager::updateROI: state not idle"; qCWarning(AirMapManagerLog) << "AirMapRulesetsManager::updateROI: state not idle";
return; return;
} }
qCDebug(AirMapManagerLog) << "Setting ROI for Rulesets"; qCDebug(AirMapManagerLog) << "Rulesets Request (ROI Changed)";
_valid = false; _valid = false;
_ruleSets.clearAndDeleteContents(); _ruleSets.clearAndDeleteContents();
_state = State::RetrieveItems; _state = State::RetrieveItems;

2
src/Airmap/AirMapWeatherInfoManager.cc

@ -42,7 +42,7 @@ AirMapWeatherInfoManager::setROI(const QGCGeoBoundingCube& roi)
void void
AirMapWeatherInfoManager::_requestWeatherUpdate(const QGeoCoordinate& coordinate) AirMapWeatherInfoManager::_requestWeatherUpdate(const QGeoCoordinate& coordinate)
{ {
qCDebug(AirMapManagerLog) << "Request Weather"; qCDebug(AirMapManagerLog) << "Weather Request (ROI Changed)";
if (!_shared.client()) { if (!_shared.client()) {
qCDebug(AirMapManagerLog) << "No AirMap client instance. Not updating Weather information"; qCDebug(AirMapManagerLog) << "No AirMap client instance. Not updating Weather information";
_valid = false; _valid = false;

36
src/Airmap/AirmapSettings.qml

@ -306,14 +306,10 @@ QGCView {
selectionMode: SelectionMode.SingleSelection selectionMode: SelectionMode.SingleSelection
Layout.fillWidth: true Layout.fillWidth: true
onCurrentRowChanged: { onCurrentRowChanged: {
map.fitViewportToMapItems()
var o = _flightList.get(tableView.currentRow) var o = _flightList.get(tableView.currentRow)
if(o) { if(o) {
console.log(o.boundingBox.count) flightArea.path = o.boundingBox
console.log(o.boundingBox) map.fitViewportToMapItems()
console.log(o.flightID)
} else {
console.log('No bounding box')
} }
} }
TableViewColumn { TableViewColumn {
@ -516,10 +512,25 @@ QGCView {
} }
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
onClicked: { onClicked: {
endFlightDialog.visible = true
}
MessageDialog {
id: endFlightDialog
visible: false
icon: StandardIcon.Warning
standardButtons: StandardButton.Yes | StandardButton.No
title: qsTr("End Flight")
text: qsTr("Confirm ending active flight?")
onYes: {
var o = _flightList.get(tableView.currentRow) var o = _flightList.get(tableView.currentRow)
if(o) { if(o) {
QGroundControl.airspaceManager.flightPlan.endFlight(o.flightID) QGroundControl.airspaceManager.flightPlan.endFlight(o.flightID)
} }
endFlightDialog.visible = false
}
onNo: {
endFlightDialog.visible = false
}
} }
} }
QGCButton { QGCButton {
@ -573,20 +584,11 @@ QGCView {
} }
} }
} }
MapItemView { MapPolygon {
model: { id: flightArea
var o = _flightList.get(tableView.currentRow)
if(o) {
return o.boundingBox
}
return []
}
delegate: MapPolygon {
path: object
color: Qt.rgba(1,0,0,0.2) color: Qt.rgba(1,0,0,0.2)
border.color: Qt.rgba(1,1,1,0.65) border.color: Qt.rgba(1,1,1,0.65)
} }
}
Component.onCompleted: { Component.onCompleted: {
updateActiveMapType() updateActiveMapType()
} }

4
src/AirspaceManagement/AirspaceFlightPlanProvider.cc

@ -105,13 +105,13 @@ void
AirspaceFlightModel::clear(void) AirspaceFlightModel::clear(void)
{ {
if(!_flightEntries.isEmpty()) { if(!_flightEntries.isEmpty()) {
beginRemoveRows(QModelIndex(), 0, _flightEntries.count()); beginResetModel();
while (_flightEntries.count()) { while (_flightEntries.count()) {
AirspaceFlightInfo* entry = _flightEntries.last(); AirspaceFlightInfo* entry = _flightEntries.last();
if(entry) entry->deleteLater(); if(entry) entry->deleteLater();
_flightEntries.removeLast(); _flightEntries.removeLast();
} }
endRemoveRows(); endResetModel();
emit countChanged(); emit countChanged();
} }
} }

Loading…
Cancel
Save