Commit e25f7af6 authored by Gus Grubba's avatar Gus Grubba

If briefing evaluation returns no authorization, assume none is required. This...

If briefing evaluation returns no authorization, assume none is required. This is reflected in the UI as "Authorization Not Required".
parent 0a81d37d
......@@ -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<int>(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<int>(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;
......
......@@ -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: {
......
......@@ -135,6 +135,7 @@ public:
PermitPending,
PermitAccepted,
PermitRejected,
PermitNotRequired,
};
Q_ENUM(PermitStatus)
......
......@@ -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
......
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