mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 11:25:33 +08:00
refs #413 All value classes which had custom policies shall inherit from mixins instead.
This commit is contained in:
@@ -17,27 +17,46 @@
|
||||
|
||||
namespace BlackMisc
|
||||
{
|
||||
namespace Aviation { class CAltitude; }
|
||||
|
||||
//! \private
|
||||
template <> struct CValueObjectPolicy<Aviation::CAltitude> : public CValueObjectPolicy<>
|
||||
{
|
||||
using Equals = Policy::Equals::MetaTuple;
|
||||
using Compare = Policy::Compare::MetaTuple;
|
||||
using Hash = Policy::Hash::MetaTuple;
|
||||
using DBus = Policy::DBus::MetaTuple;
|
||||
using Json = Policy::Json::MetaTuple;
|
||||
};
|
||||
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
/*!
|
||||
* Altitude as used in aviation, can be AGL or MSL altitude
|
||||
* \remarks Intentionally allowing +/- CLength , and >= / <= CLength.
|
||||
*/
|
||||
class BLACKMISC_EXPORT CAltitude : public CValueObject<CAltitude, PhysicalQuantities::CLength>
|
||||
class BLACKMISC_EXPORT CAltitude :
|
||||
public PhysicalQuantities::CLength,
|
||||
public Mixin::MetaTypeAndQList<CAltitude>,
|
||||
public Mixin::EqualsByTuple<CAltitude>,
|
||||
public Mixin::CompareByTuple<CAltitude>,
|
||||
public Mixin::HashByTuple<CAltitude>,
|
||||
public Mixin::DBusByTuple<CAltitude>,
|
||||
public Mixin::JsonByTuple<CAltitude>,
|
||||
public Mixin::String<CAltitude>,
|
||||
public Mixin::Icon<CAltitude>
|
||||
{
|
||||
public:
|
||||
//! Base type
|
||||
using base_type = PhysicalQuantities::CLength;
|
||||
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::registerMetadata;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::getMetaTypeId;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::isA;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::toCVariant;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::toQVariant;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::convertFromCVariant;
|
||||
using Mixin::MetaTypeAndQList<CAltitude>::convertFromQVariant;
|
||||
using Mixin::String<CAltitude>::toQString;
|
||||
using Mixin::String<CAltitude>::toFormattedQString;
|
||||
using Mixin::String<CAltitude>::toStdString;
|
||||
using Mixin::String<CAltitude>::stringForStreaming;
|
||||
using Mixin::DBusByTuple<CAltitude>::marshallToDbus;
|
||||
using Mixin::DBusByTuple<CAltitude>::unmarshallFromDbus;
|
||||
using Mixin::JsonByTuple<CAltitude>::toJson;
|
||||
using Mixin::JsonByTuple<CAltitude>::convertFromJson;
|
||||
using Mixin::Icon<CAltitude>::toIcon;
|
||||
using Mixin::Icon<CAltitude>::toPixmap;
|
||||
|
||||
/*!
|
||||
* Enum type to distinguish between MSL and AGL
|
||||
*/
|
||||
@@ -52,16 +71,16 @@ namespace BlackMisc
|
||||
QString convertToQString(bool i18n = false) const;
|
||||
|
||||
//! Default constructor: 0 Altitude true
|
||||
CAltitude() : CValueObject(0, BlackMisc::PhysicalQuantities::CLengthUnit::m()), m_datum(MeanSeaLevel) {}
|
||||
CAltitude() : CLength(0, BlackMisc::PhysicalQuantities::CLengthUnit::m()), m_datum(MeanSeaLevel) {}
|
||||
|
||||
//! Constructor
|
||||
CAltitude(double value, ReferenceDatum datum, const BlackMisc::PhysicalQuantities::CLengthUnit &unit) : CValueObject(value, unit), m_datum(datum) {}
|
||||
CAltitude(double value, ReferenceDatum datum, const BlackMisc::PhysicalQuantities::CLengthUnit &unit) : CLength(value, unit), m_datum(datum) {}
|
||||
|
||||
//! Altitude as string
|
||||
CAltitude(const QString &altitudeAsString, BlackMisc::PhysicalQuantities::CPqString::SeparatorMode mode = BlackMisc::PhysicalQuantities::CPqString::SeparatorsLocale);
|
||||
|
||||
//! Constructor by CLength
|
||||
CAltitude(BlackMisc::PhysicalQuantities::CLength altitude, ReferenceDatum datum) : CValueObject(altitude), m_datum(datum) {}
|
||||
CAltitude(BlackMisc::PhysicalQuantities::CLength altitude, ReferenceDatum datum) : CLength(altitude), m_datum(datum) {}
|
||||
|
||||
//! AGL Above ground level?
|
||||
bool isAboveGroundLevel() const { return AboveGround == this->m_datum; }
|
||||
|
||||
Reference in New Issue
Block a user