refs #219, load flight plan

* fixed issue with parsing, only default locale is used. Now user's local possible
* allow to load FP for other callsigns as well (voice capabilities)
* Improved handling of CTime, inclusive bug fixes and time formatting
* Max. lengths for FP fields as const value (so we can change it if required)
* Load FP from GUI component
* Samples for PQ classes
* Adjusted depending classes (e.g. client)
This commit is contained in:
Klaus Basan
2014-06-05 02:33:03 +02:00
parent e823f87bab
commit 226edda23b
17 changed files with 293 additions and 147 deletions

View File

@@ -37,6 +37,9 @@ namespace BlackMisc
SVFR //!< Special VFR (reserved for ATC use)
};
static const int MaxRemarksLength = 150; //!< Max remarks length
static const int MaxRouteLength = 150; //!< Max route length
/*!
* Default constructor
*/
@@ -50,8 +53,12 @@ namespace BlackMisc
const CAltitude &cruiseAltitude, const PhysicalQuantities::CSpeed &cruiseTrueAirspeed, FlightRules flightRules, const QString &route, const QString &remarks)
: m_equipmentIcao(equipmentIcao), m_originAirportIcao(originAirportIcao), m_destinationAirportIcao(destinationAirportIcao), m_alternateAirportIcao(alternateAirportIcao),
m_takeoffTimePlanned(takeoffTimePlanned), m_takeoffTimeActual(takeoffTimeActual), m_enrouteTime(enrouteTime), m_fuelTime(fuelTime),
m_cruiseAltitude(cruiseAltitude), m_cruiseTrueAirspeed(cruiseTrueAirspeed), m_flightRules(flightRules), m_route(route), m_remarks(remarks.left(100))
{}
m_cruiseAltitude(cruiseAltitude), m_cruiseTrueAirspeed(cruiseTrueAirspeed), m_flightRules(flightRules),
m_route(route.trimmed().left(MaxRouteLength).toUpper()), m_remarks(remarks.trimmed().left(MaxRemarksLength).toUpper())
{
m_enrouteTime.switchUnit(BlackMisc::PhysicalQuantities::CTimeUnit::hrmin());
m_fuelTime.switchUnit(BlackMisc::PhysicalQuantities::CTimeUnit::hrmin());
}
//! Set ICAO aircraft equipment code string (e.g. "T/A320/F")
void setEquipmentIcao(const QString &equipmentIcao) { m_equipmentIcao = equipmentIcao; }
@@ -87,10 +94,10 @@ namespace BlackMisc
void setTakeoffTimeActual(QString time) { m_takeoffTimeActual = QDateTime::currentDateTimeUtc(); m_takeoffTimeActual.setTime(QTime::fromString(time, "hh:mm"));}
//! Set planned enroute flight time
void setEnrouteTime(const PhysicalQuantities::CTime &enrouteTime) { m_enrouteTime = enrouteTime; }
void setEnrouteTime(const PhysicalQuantities::CTime &enrouteTime) { m_enrouteTime = enrouteTime; m_enrouteTime.switchUnit(BlackMisc::PhysicalQuantities::CTimeUnit::hrmin());}
//! Set amount of fuel load in time
void setFuelTime(const PhysicalQuantities::CTime &fuelTime) { m_fuelTime = fuelTime; }
void setFuelTime(const PhysicalQuantities::CTime &fuelTime) { m_fuelTime = fuelTime; m_fuelTime.switchUnit(BlackMisc::PhysicalQuantities::CTimeUnit::hrmin());}
//! Set amount of fuel load in time hh:mm
void setFuelTime(const QString &fuelTime) { m_fuelTime = PhysicalQuantities::CTime(fuelTime); }
@@ -105,13 +112,13 @@ namespace BlackMisc
void setFlightRule(FlightRules flightRules) { m_flightRules = flightRules; }
//! Set route string
void setRoute(const QString &route) { m_route = route; }
void setRoute(const QString &route) { m_route = route.trimmed().left(MaxRouteLength).toUpper(); }
//! Set remarks string (max 100 characters)
void setRemarks(const QString &remarks) { m_remarks = remarks.left(100); }
void setRemarks(const QString &remarks) { m_remarks = remarks.trimmed().left(MaxRemarksLength).toUpper(); }
//! When last sent
void setWhenLastSent(const QDateTime &dateTime) { m_lastSent = dateTime; }
void setWhenLastSentOrLoaded(const QDateTime &dateTime) { m_lastSentOrLoaded = dateTime; }
//! Get ICAO aircraft equipment code string
const QString &getEquipmentIcao() const { return m_equipmentIcao; }
@@ -147,7 +154,7 @@ namespace BlackMisc
const PhysicalQuantities::CTime &getFuelTime() const { return m_fuelTime; }
//! Get amount of fuel load in time
QString getFuelTimeHourMin() const { return m_enrouteTime.valueRoundedWithUnit(BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); }
QString getFuelTimeHourMin() const { return m_fuelTime.valueRoundedWithUnit(BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); }
//! Cruising altitudes
const BlackMisc::Aviation::CAltitude &getCruiseAltitude() const { return m_cruiseAltitude; }
@@ -162,10 +169,16 @@ namespace BlackMisc
const QString &getRoute() const { return m_route; }
//! When last sent
const QDateTime &whenLastSent() const { return m_lastSent; }
const QDateTime &whenLastSentOrLoaded() const { return m_lastSentOrLoaded; }
//! Flight plan already sent
bool wasSent() const { return m_lastSent.isValid() && !m_lastSent.isNull(); }
bool wasSentOrLoaded() const { return m_lastSentOrLoaded.isValid() && !m_lastSentOrLoaded.isNull(); }
//! \brief Received before n ms
qint64 timeDiffSentOrLoadedMs() const
{
return this->m_lastSentOrLoaded.msecsTo(QDateTime::currentDateTimeUtc());
}
//! Get remarks string
const QString &getRemarks() const { return m_remarks; }
@@ -219,13 +232,13 @@ namespace BlackMisc
FlightRules m_flightRules;
QString m_route;
QString m_remarks;
QDateTime m_lastSent;
QDateTime m_lastSentOrLoaded;
};
} // namespace
} // namespace
Q_DECLARE_METATYPE(BlackMisc::Aviation::CFlightPlan)
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::Aviation::CFlightPlan, (o.m_equipmentIcao, o.m_originAirportIcao, o.m_destinationAirportIcao, o.m_alternateAirportIcao,
o.m_takeoffTimePlanned, o.m_takeoffTimeActual, o.m_enrouteTime, o.m_fuelTime, o.m_cruiseAltitude, tie(o.m_cruiseTrueAirspeed, o.m_flightRules, o.m_route, o.m_remarks, o.m_lastSent)))
o.m_takeoffTimePlanned, o.m_takeoffTimeActual, o.m_enrouteTime, o.m_fuelTime, o.m_cruiseAltitude, tie(o.m_cruiseTrueAirspeed, o.m_flightRules, o.m_route, o.m_remarks, o.m_lastSentOrLoaded)))
#endif // guard