From 3dc1c6965366d4d413b69aae763e96e01a4f99a9 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 7 Jan 2018 03:24:14 +0100 Subject: [PATCH] Ref T219, some FP renamings and fix to set prefix/postfix in FP value object --- samples/cliclient/client.cpp | 2 +- src/blackcore/vatsim/networkvatlib.cpp | 2 +- .../components/flightplancomponent.cpp | 54 +++++++++++++------ src/blackgui/components/flightplancomponent.h | 20 +++++-- 4 files changed, 56 insertions(+), 22 deletions(-) diff --git a/samples/cliclient/client.cpp b/samples/cliclient/client.cpp index 5646e0408..cb78ce3bc 100644 --- a/samples/cliclient/client.cpp +++ b/samples/cliclient/client.cpp @@ -511,7 +511,7 @@ namespace BlackSample { const QString rules = flightPlan.getFlightRulesAsString(); std::cout << "FLIGHTPLAN " << callsign - << flightPlan.getPrefixIcaoSuffix().toStdString() << " " << flightPlan.getOriginAirportIcao() << " " + << flightPlan.getCombinedPrefixIcaoSuffix().toStdString() << " " << flightPlan.getOriginAirportIcao() << " " << flightPlan.getDestinationAirportIcao() << " " << flightPlan.getAlternateAirportIcao() << " " << flightPlan.getTakeoffTimePlannedHourMin().toStdString() << " " << flightPlan.getTakeoffTimeActualHourMin().toStdString() << " " << flightPlan.getEnrouteTime() << " " << flightPlan.getFuelTime() << " " diff --git a/src/blackcore/vatsim/networkvatlib.cpp b/src/blackcore/vatsim/networkvatlib.cpp index c3d647de3..02cf6ed81 100644 --- a/src/blackcore/vatsim/networkvatlib.cpp +++ b/src/blackcore/vatsim/networkvatlib.cpp @@ -597,7 +597,7 @@ namespace BlackCore // const QString alt = flightPlan.getCruiseAltitude().asFpAltitudeString(); QByteArray acTypeTemp, altAptTemp, cruiseAltTemp, depAptTemp, destAptTemp, routeTemp, remarksTemp; - vatlibFP.aircraftType = acTypeTemp = toFSD(flightPlan.getPrefixIcaoSuffix()); + vatlibFP.aircraftType = acTypeTemp = toFSD(flightPlan.getCombinedPrefixIcaoSuffix()); vatlibFP.alternateAirport = altAptTemp = toFSD(flightPlan.getAlternateAirportIcao().asString()); vatlibFP.cruiseAltitude = cruiseAltTemp = toFSD(alt); vatlibFP.departAirport = depAptTemp = toFSD(flightPlan.getOriginAirportIcao().asString()); diff --git a/src/blackgui/components/flightplancomponent.cpp b/src/blackgui/components/flightplancomponent.cpp index 10f07e3e4..150c8df17 100644 --- a/src/blackgui/components/flightplancomponent.cpp +++ b/src/blackgui/components/flightplancomponent.cpp @@ -156,7 +156,7 @@ namespace BlackGui void CFlightPlanComponent::loginDataSet() { - if (m_flightPlan.wasSentOrLoaded()) { return; } // when loaded or sent do not override + if (m_sentFlightPlan.wasSentOrLoaded()) { return; } // when loaded or sent do not override this->prefillWithOwnAircraftData(); } @@ -171,7 +171,7 @@ namespace BlackGui void CFlightPlanComponent::prefillWithAircraftData(const CSimulatedAircraft &aircraft) { - if (m_flightPlan.wasSentOrLoaded()) { return; } + if (m_sentFlightPlan.wasSentOrLoaded()) { return; } // only override with valid values if (CCallsign::isValidAircraftCallsign(aircraft.getCallsignAsString())) @@ -189,7 +189,7 @@ namespace BlackGui void CFlightPlanComponent::prefillWithUserData(const CUser &user) { - if (m_flightPlan.wasSentOrLoaded()) { return; } + if (m_sentFlightPlan.wasSentOrLoaded()) { return; } // only override with valid values if (user.hasRealName()) @@ -228,15 +228,15 @@ namespace BlackGui } } - CFlightPlan CFlightPlanComponent::getFlightPlan() const + const CLogCategoryList &CFlightPlanComponent::getLogCategories() { - return m_flightPlan; + static const CLogCategoryList cats { CLogCategory::flightPlan(), CLogCategory::guiComponent() }; + return cats; } CStatusMessageList CFlightPlanComponent::validateAndInitializeFlightPlan(CFlightPlan &flightPlan) { CStatusMessageList messages; - QString v; const bool strict = ui->cb_StrictCheck->isChecked(); const bool vfr = this->isVfr(); const CStatusMessage::StatusSeverity severity = strict ? CStatusMessage::SeverityError : CStatusMessage::SeverityWarning; @@ -246,6 +246,7 @@ namespace BlackGui flightPlan.setFlightRule(rule); // callsign + QString v; v = ui->le_Callsign->text().trimmed().toUpper(); if (v.isEmpty()) { @@ -267,12 +268,27 @@ namespace BlackGui { messages.push_back(CStatusMessage(this).validationError("Invalid aircraft ICAO code '%1'") << v); } - else if (sApp && sApp->hasWebDataServices() && !sApp->getWebDataServices()->containsAircraftIcaoDesignator(v)) + else if (sApp && sApp->hasWebDataServices() && sApp->getWebDataServices()->hasDbAircraftData() && !sApp->getWebDataServices()->containsAircraftIcaoDesignator(v)) { messages.push_back(CStatusMessage(this).validationWarning("Are you sure '%1' is a valid type?") << v); } flightPlan.setAircraftIcao(this->getAircraftIcaoCode()); + // prefix / equipment code + v = this->getPrefix(); + if (!v.isEmpty() && !CFlightPlan::prefixCodes().contains(v)) + { + messages.push_back(CStatusMessage(this).validation(severity, "Invalid prefix")); + } + flightPlan.setPrefix(v); + + v = this->getEquipmentSuffix(); + if (!v.isEmpty() && !CFlightPlan::equipmentCodes().contains(v)) + { + messages.push_back(CStatusMessage(this).validation(severity, "Invalid equipment code")); + } + flightPlan.setEquipmentSuffix(v); + // route v = ui->pte_Route->toPlainText().trimmed(); if (v.isEmpty()) @@ -418,7 +434,7 @@ namespace BlackGui } ui->le_LastSent->setText(lastSent); this->showOverlayMessage(m, showOverlayMs); - m_flightPlan = flightPlan; // last valid FP + m_sentFlightPlan = flightPlan; // last valid FP } else { @@ -627,7 +643,7 @@ namespace BlackGui void CFlightPlanComponent::buildPrefixIcaoSuffix() { - ui->le_PrefixIcaoSuffix->setText(this->getPrefixIcaoSuffix()); + ui->le_PrefixIcaoSuffix->setText(this->getCombinedPrefixIcaoSuffix()); } void CFlightPlanComponent::prefixCheckBoxChanged() @@ -673,13 +689,11 @@ namespace BlackGui }); } - QString CFlightPlanComponent::getPrefixIcaoSuffix() const + QString CFlightPlanComponent::getPrefix() const { - QString prefix; - if (ui->cb_Heavy->isChecked()) { prefix = QStringLiteral("H"); } - else if (ui->cb_Tcas->isChecked()) { prefix = QStringLiteral("T"); } - - return CFlightPlan::concatPrefixIcaoSuffix(prefix, ui->le_AircraftType->text().toUpper().trimmed(), ui->le_EquipmentSuffix->text().trimmed().toUpper()); + if (ui->cb_Heavy->isChecked()) { return QStringLiteral("H"); } + else if (ui->cb_Tcas->isChecked()) { return QStringLiteral("T"); } + return QStringLiteral(""); } CAircraftIcaoCode CFlightPlanComponent::getAircraftIcaoCode() const @@ -689,6 +703,16 @@ namespace BlackGui return sApp->getWebDataServices()->getAircraftIcaoCodeForDesignator(designator); } + QString CFlightPlanComponent::getEquipmentSuffix() const + { + return ui->le_EquipmentSuffix->text().trimmed().toUpper(); + } + + QString CFlightPlanComponent::getCombinedPrefixIcaoSuffix() const + { + return CFlightPlan::concatPrefixIcaoSuffix(this->getPrefix(), this->getAircraftIcaoCode().getDesignator(), this->getEquipmentSuffix()); + } + void CFlightPlanComponent::showEquipmentCodesTab() { this->setCurrentWidget(ui->tb_EquipmentCodes); diff --git a/src/blackgui/components/flightplancomponent.h b/src/blackgui/components/flightplancomponent.h index 17b053aa6..9fab56d86 100644 --- a/src/blackgui/components/flightplancomponent.h +++ b/src/blackgui/components/flightplancomponent.h @@ -22,6 +22,7 @@ #include "blackmisc/datacache.h" #include "blackmisc/identifier.h" #include "blackmisc/statusmessagelist.h" +#include "blackmisc/logcategorylist.h" #include #include @@ -53,12 +54,15 @@ namespace BlackGui //! Prefill with aircraft dara void fillWithFlightPlanData(const BlackMisc::Aviation::CFlightPlan &flightPlan); - //! Get this flight plan - BlackMisc::Aviation::CFlightPlan getFlightPlan() const; + //! Get sent flight plan + const BlackMisc::Aviation::CFlightPlan &getSentFlightPlan() const { return m_sentFlightPlan; } + + //! Log.categories + static const BlackMisc::CLogCategoryList &getLogCategories(); private: QScopedPointer ui; - BlackMisc::Aviation::CFlightPlan m_flightPlan; //!< My flight plan + BlackMisc::Aviation::CFlightPlan m_sentFlightPlan; //!< My flight plan BlackMisc::Simulation::CAircraftModel m_model; //!< currently used model BlackMisc::CIdentifier m_identifier { "FlightPlanComponent", this }; //!< Flightplan identifier BlackMisc::CDataReadOnly m_lastAircraftModel { this }; //!< recently used aircraft model @@ -144,12 +148,18 @@ namespace BlackGui //! Aircraft type changed void aircraftTypeChanged(); - //! Something like "H/B737/F" - QString getPrefixIcaoSuffix() const; + //! Get prefix + QString getPrefix() const; //! Aircraft type as ICAO code BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcaoCode() const; + //! Get equipment code (1 char) + QString getEquipmentSuffix() const; + + //! Something like "H/B737/F" + QString getCombinedPrefixIcaoSuffix() const; + //! Show tab of equipment codes void showEquipmentCodesTab();