diff --git a/src/Airmap/AirMapFlightPlanManager.cc b/src/Airmap/AirMapFlightPlanManager.cc index 01d03a6e30c545176c0d8c1c93bf100a20a92208..60696bca1725f80d749e9b49c6aaa255be869643 100644 --- a/src/Airmap/AirMapFlightPlanManager.cc +++ b/src/Airmap/AirMapFlightPlanManager.cc @@ -754,46 +754,47 @@ AirMapFlightPlanManager::_pollBriefing() qCDebug(AirMapManagerLog) << "Adding briefing ruleset" << pRuleSet->id(); } //-- Evaluate briefing status - bool rejected = false; - bool accepted = false; - bool pending = false; - for (const auto& authorization : briefing.evaluation.authorizations) { - AirMapFlightAuthorization* pAuth = new AirMapFlightAuthorization(authorization, this); - _authorizations.append(pAuth); - qCDebug(AirMapManagerLog) << "Autorization:" << pAuth->name() << " (" << pAuth->message() << ")" << static_cast(pAuth->status()); - switch (authorization.status) { - case Evaluation::Authorization::Status::accepted: - case Evaluation::Authorization::Status::accepted_upon_submission: - accepted = true; - break; - case Evaluation::Authorization::Status::rejected: - case Evaluation::Authorization::Status::rejected_upon_submission: - rejected = true; - break; - case Evaluation::Authorization::Status::pending: - pending = true; - break; - } - } if (briefing.evaluation.authorizations.size() == 0) { - // If we don't get any authorizations, we assume it's accepted - accepted = true; - } - emit advisoryChanged(); - emit rulesChanged(); - qCDebug(AirMapManagerLog) << "Flight approval: accepted=" << accepted << "rejected" << rejected << "pending" << pending; - _state = State::Idle; - if ((rejected || accepted) && !pending) { - if (rejected) { // rejected has priority - _flightPermitStatus = AirspaceFlightPlanProvider::PermitRejected; - } else { - _flightPermitStatus = AirspaceFlightPlanProvider::PermitAccepted; - } + _flightPermitStatus = AirspaceFlightPlanProvider::PermitNotRequired; emit flightPermitStatusChanged(); } else { - //-- Pending. Try again. - _pollTimer.setSingleShot(true); - _pollTimer.start(1000); + bool rejected = false; + bool accepted = false; + bool pending = false; + for (const auto& authorization : briefing.evaluation.authorizations) { + AirMapFlightAuthorization* pAuth = new AirMapFlightAuthorization(authorization, this); + _authorizations.append(pAuth); + qCDebug(AirMapManagerLog) << "Autorization:" << pAuth->name() << " (" << pAuth->message() << ")" << static_cast(pAuth->status()); + switch (authorization.status) { + case Evaluation::Authorization::Status::accepted: + case Evaluation::Authorization::Status::accepted_upon_submission: + accepted = true; + break; + case Evaluation::Authorization::Status::rejected: + case Evaluation::Authorization::Status::rejected_upon_submission: + rejected = true; + break; + case Evaluation::Authorization::Status::pending: + pending = true; + break; + } + } + emit advisoryChanged(); + emit rulesChanged(); + qCDebug(AirMapManagerLog) << "Flight approval: accepted=" << accepted << "rejected" << rejected << "pending" << pending; + _state = State::Idle; + if ((rejected || accepted) && !pending) { + if (rejected) { // rejected has priority + _flightPermitStatus = AirspaceFlightPlanProvider::PermitRejected; + } else { + _flightPermitStatus = AirspaceFlightPlanProvider::PermitAccepted; + } + emit flightPermitStatusChanged(); + } else { + //-- Pending. Try again. + _pollTimer.setSingleShot(true); + _pollTimer.start(1000); + } } } else { _state = State::Idle; diff --git a/src/Airmap/FlightBrief.qml b/src/Airmap/FlightBrief.qml index 64f849800c624ef30b6ce673a17c8a3fc83a8926..75f7ef13eb01ce780c2e64a93fd677209bcf1305 100644 --- a/src/Airmap/FlightBrief.qml +++ b/src/Airmap/FlightBrief.qml @@ -113,7 +113,7 @@ Item { color: { if(_flightPermit === AirspaceFlightPlanProvider.PermitPending) return _colorOrange - if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted) + if(_flightPermit === AirspaceFlightPlanProvider.PermitAccepted || _flightPermit === AirspaceFlightPlanProvider.PermitNotRequired) return _colorGreen if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected) return _colorRed @@ -129,6 +129,8 @@ Item { return qsTr("Authorization Accepted") if(_flightPermit === AirspaceFlightPlanProvider.PermitRejected) return qsTr("Authorization Rejected") + if(_flightPermit === AirspaceFlightPlanProvider.PermitNotRequired) + return qsTr("Authorization Not Required") return qsTr("Authorization Unknown") } anchors.centerIn: parent @@ -209,7 +211,7 @@ Item { backRadius: 4 heightFactor: 0.3333 showBorder: true - enabled: _flightPermit === AirspaceFlightPlanProvider.PermitAccepted + enabled: _flightPermit === AirspaceFlightPlanProvider.PermitAccepted || _flightPermit === AirspaceFlightPlanProvider.PermitNotRequired width: ScreenTools.defaultFontPixelWidth * 12 visible: planView onClicked: { diff --git a/src/AirspaceManagement/AirspaceFlightPlanProvider.h b/src/AirspaceManagement/AirspaceFlightPlanProvider.h index f62fee3c5d1bba2f5bec62acf570a3f4fb767f04..7ae16c3bc669e000dcb8ea69d2edc887a3e91979 100644 --- a/src/AirspaceManagement/AirspaceFlightPlanProvider.h +++ b/src/AirspaceManagement/AirspaceFlightPlanProvider.h @@ -135,6 +135,7 @@ public: PermitPending, PermitAccepted, PermitRejected, + PermitNotRequired, }; Q_ENUM(PermitStatus) diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index 3ac35cb92046eef42507b81e93c1f83c621cf3cc..dcc9e410292361e229ce7be7c11a759d11d4e6bb 100644 --- a/src/FlightDisplay/FlightDisplayView.qml +++ b/src/FlightDisplay/FlightDisplayView.qml @@ -689,7 +689,7 @@ QGCView { if(airspaceIndicator.flightPermit) { if(airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitPending) return qsTr("Approval Pending") - if(airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitAccepted) + if(airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitAccepted || airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitNotRequired) return qsTr("Flight Approved") if(airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitRejected) return qsTr("Flight Rejected") @@ -700,7 +700,7 @@ QGCView { if(airspaceIndicator.flightPermit) { if(airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitPending) return qgcPal.colorOrange - if(airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitAccepted) + if(airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitAccepted || airspaceIndicator.flightPermit === AirspaceFlightPlanProvider.PermitNotRequired) return qgcPal.colorGreen } return qgcPal.colorRed