mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 09:15:34 +08:00
committed by
Mathew Sutcliffe
parent
0518e680c3
commit
67a5dbfe48
@@ -104,6 +104,15 @@ namespace BlackMisc
|
||||
return MeanSeaLevel == this->m_datum;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Get reference datum (MSL or AGL)
|
||||
* \return
|
||||
|
||||
@@ -72,6 +72,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CHeading(CAngle heading, ReferenceNorth north) : CAngle(heading), m_north(north) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Equal operator ==
|
||||
* \param other
|
||||
|
||||
@@ -101,6 +101,14 @@ namespace BlackMisc
|
||||
this->validate(true);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Set active frequency
|
||||
|
||||
@@ -78,6 +78,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CComSystem(const CComSystem &other) : CModulator(other) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Constructor
|
||||
* \param name
|
||||
|
||||
@@ -112,6 +112,14 @@ namespace BlackMisc
|
||||
this->validate(true);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Set active frequency
|
||||
|
||||
@@ -148,6 +148,15 @@ namespace BlackMisc
|
||||
this->validate(true);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Transponder mode as string
|
||||
* \return
|
||||
|
||||
@@ -72,6 +72,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CTrack(BlackMisc::PhysicalQuantities::CAngle track, ReferenceNorth north) : BlackMisc::PhysicalQuantities::CAngle(track), m_north(north) {}
|
||||
|
||||
/*!
|
||||
* \brief As QVariant
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Equal operator ==
|
||||
* \param other
|
||||
|
||||
@@ -81,3 +81,88 @@ void BlackMisc::initResources()
|
||||
{
|
||||
initBlackMiscResources();
|
||||
}
|
||||
/*
|
||||
* To string
|
||||
*/
|
||||
QString BlackMisc::qVariantToString(const QVariant &qv, bool i18n)
|
||||
{
|
||||
if (qv.type() != QVariant::UserType) return qv.toString();
|
||||
const CValueObject *s = CValueObject::fromQVariant(qv);
|
||||
if (s)
|
||||
{
|
||||
return s->toQString(i18n);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Fix QVariant if it comes from DBus and contains QDBusArgument
|
||||
*/
|
||||
QVariant BlackMisc::fixQVariantFromDbusArgument(const QVariant &variant, int localUserType)
|
||||
{
|
||||
if (variant.canConvert<QDBusArgument>())
|
||||
{
|
||||
// complex, user type
|
||||
// it has to be made sure, that the cast works
|
||||
const QDBusArgument arg = variant.value<QDBusArgument>();
|
||||
QVariant fixedVariant;
|
||||
if (localUserType < static_cast<int>(QVariant::UserType))
|
||||
{
|
||||
// complex Qt type, e.g. QDateTime
|
||||
fixedVariant = BlackMisc::complexQtTypeFromDbusArgument(arg, localUserType);
|
||||
}
|
||||
else
|
||||
{
|
||||
// http://qt-project.org/doc/qt-5.0/qtcore/qmetatype.html#create
|
||||
void *obByMetaId = QMetaType::create(localUserType);
|
||||
|
||||
// own types, send as QDBusArgument
|
||||
CValueObject *streamable = static_cast<CValueObject *>(obByMetaId);
|
||||
arg >> (*streamable);
|
||||
fixedVariant = streamable->toQVariant();
|
||||
QMetaType::destroy(localUserType, obByMetaId);
|
||||
}
|
||||
return fixedVariant;
|
||||
}
|
||||
else
|
||||
{
|
||||
return variant;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Return QVariant based on QDBusArgument
|
||||
*/
|
||||
QVariant BlackMisc::complexQtTypeFromDbusArgument(const QDBusArgument &argument, int type)
|
||||
{
|
||||
// QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17,
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case QMetaType::QDateTime:
|
||||
{
|
||||
QDateTime dt;
|
||||
argument >> dt;
|
||||
return QVariant::fromValue(dt);
|
||||
}
|
||||
case QMetaType::QDate:
|
||||
{
|
||||
QDate date;
|
||||
argument >> date;
|
||||
return QVariant::fromValue(date);
|
||||
}
|
||||
case QMetaType::QTime:
|
||||
{
|
||||
QTime time;
|
||||
argument >> time;
|
||||
return QVariant::fromValue(time);
|
||||
}
|
||||
default:
|
||||
qFatal("Type cannot be resolved");
|
||||
}
|
||||
return QVariant(); // suppress compiler warning
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#define BLACKMISC_FREEFUNCTIONS_H
|
||||
|
||||
#include <QDir> // for Q_INIT_RESOURCE
|
||||
#include <QVariant>
|
||||
#include <QDBusArgument>
|
||||
|
||||
/*!
|
||||
* Workaround, to call initResource from namespace. Used in BlackMisc::initResources().
|
||||
@@ -79,6 +81,34 @@ namespace BlackMisc
|
||||
*/
|
||||
void initResources();
|
||||
|
||||
/*!
|
||||
* \brief QVariant to string, allows to stringify CValueObject
|
||||
* \param qv
|
||||
* \param i18n
|
||||
* \return
|
||||
*/
|
||||
QString qVariantToString(const QVariant &qv, bool i18n = false);
|
||||
|
||||
/*!
|
||||
* Fix variant. Required if a variant "comes in" via DBus,
|
||||
* and represents a QDBusArgument rather than the real type.
|
||||
* \param variant
|
||||
* \param localUserType
|
||||
* \return
|
||||
*/
|
||||
QVariant fixQVariantFromDbusArgument(const QVariant &variant, int localUserType);
|
||||
|
||||
/*!
|
||||
* Convert a QDBusArgument back to a concrete type if required
|
||||
* This is a workaround if a QVariant is sent via DBus, QDBusArgument is
|
||||
* received and Qt is nor able to get the original QVariant back
|
||||
* \param argument
|
||||
* \param type
|
||||
* \return
|
||||
*/
|
||||
// TODO: To be removed if a better solution is found
|
||||
QVariant complexQtTypeFromDbusArgument(const QDBusArgument &argument, int type);
|
||||
|
||||
} // BlackMisc
|
||||
|
||||
#endif // guard
|
||||
|
||||
@@ -37,6 +37,15 @@ namespace BlackMisc
|
||||
*/
|
||||
explicit CCoordinateEcef(const BlackMisc::Math::CVector3D vector) : CVector3DBase(vector.i(), vector.j(), vector.k()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief x
|
||||
* \return
|
||||
|
||||
@@ -144,6 +144,15 @@ namespace BlackMisc
|
||||
return this->m_height;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Switch unit of latitude / longitude
|
||||
* \param unit
|
||||
|
||||
@@ -85,6 +85,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CCoordinateNed(const CCoordinateGeodetic &referencePosition, const BlackMisc::Math::CVector3D &vector) : CVector3DBase(vector.i(), vector.j(), vector.k()), m_referencePosition(referencePosition), m_hasReferencePosition(true) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Equal operator ==
|
||||
* \param other
|
||||
|
||||
@@ -44,6 +44,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CLatitude(double value, const BlackMisc::PhysicalQuantities::CAngleUnit &unit) : CEarthAngle(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual destructor
|
||||
*/
|
||||
|
||||
@@ -41,6 +41,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CLongitude(double value, const BlackMisc::PhysicalQuantities::CAngleUnit &unit) : CEarthAngle(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual destructor
|
||||
*/
|
||||
|
||||
@@ -49,6 +49,15 @@ namespace BlackMisc
|
||||
this->m_matrix(0, 1) = c2;
|
||||
this->m_matrix(0, 2) = c3;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -54,6 +54,15 @@ namespace BlackMisc
|
||||
*/
|
||||
explicit CMatrix3x1(double fillValue) : CMatrixBase(fillValue) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* \brief Convert to vector
|
||||
|
||||
@@ -64,6 +64,15 @@ namespace BlackMisc
|
||||
this->setElement(2, 2, r3c3);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Calculates the determinant of the matrix
|
||||
* \return
|
||||
|
||||
@@ -39,6 +39,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CVector3D(const CVector3D &other) : CVector3DBase(other) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief i
|
||||
* \return
|
||||
|
||||
@@ -36,6 +36,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CAcceleration(const CPhysicalQuantity &base) : CPhysicalQuantity(base) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual destructor
|
||||
*/
|
||||
|
||||
@@ -54,6 +54,14 @@ namespace BlackMisc
|
||||
degrees + minutes / 100.0,
|
||||
CAngleUnit::sexagesimalDegMin()) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual destructor
|
||||
|
||||
@@ -257,6 +257,16 @@ namespace BlackMisc
|
||||
CMeasurementUnit() : m_name("none"), m_symbol(""), m_epsilon(0), m_displayDigits(0), m_converter(new NilConverter())
|
||||
{}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
// used with None!
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Equal operator ==
|
||||
* \param other
|
||||
|
||||
@@ -29,6 +29,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CFrequency(double value, const CFrequencyUnit &unit) : CPhysicalQuantity(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual destructor
|
||||
*/
|
||||
|
||||
@@ -30,6 +30,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CLength(double value, const CLengthUnit &unit) : CPhysicalQuantity(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual destructor
|
||||
*/
|
||||
|
||||
@@ -30,6 +30,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CMass(double value, const CMassUnit &unit) : CPhysicalQuantity(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual destructor
|
||||
*/
|
||||
|
||||
@@ -32,6 +32,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CPressure(double value, const CPressureUnit &unit) : CPhysicalQuantity(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Virtual destructor
|
||||
*/
|
||||
|
||||
@@ -31,6 +31,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CSpeed(double value, const CSpeedUnit &unit) : CPhysicalQuantity(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Destructor
|
||||
*/
|
||||
|
||||
@@ -31,6 +31,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CTemperature(double value, const CTemperatureUnit &unit): CPhysicalQuantity(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Destructor
|
||||
*/
|
||||
|
||||
@@ -32,6 +32,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CTime(double value, const CTimeUnit &unit) : CPhysicalQuantity(value, unit) {}
|
||||
|
||||
/*!
|
||||
* \brief QVariant, required for DBus QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Destructor
|
||||
*/
|
||||
|
||||
@@ -47,6 +47,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CLengthUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Default unit
|
||||
* \return
|
||||
@@ -176,6 +185,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CAngleUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Default unit
|
||||
* \return
|
||||
@@ -284,6 +302,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CFrequencyUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Default unit
|
||||
* \return
|
||||
@@ -380,6 +407,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CMassUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Default unit
|
||||
* \return
|
||||
@@ -489,6 +525,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CPressureUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Default unit
|
||||
* \return
|
||||
@@ -625,6 +670,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CTemperatureUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Default unit
|
||||
* \return
|
||||
@@ -712,6 +766,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CSpeedUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Default unit
|
||||
* \return
|
||||
@@ -832,6 +895,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CTimeUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Default unit
|
||||
* \return
|
||||
@@ -980,6 +1052,15 @@ namespace BlackMisc
|
||||
*/
|
||||
CAccelerationUnit() : CMeasurementUnit(defaultUnit()) {}
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const
|
||||
{
|
||||
return QVariant::fromValue(*this);
|
||||
}
|
||||
|
||||
/*!
|
||||
* Default unit
|
||||
* \return
|
||||
|
||||
@@ -43,6 +43,23 @@ namespace BlackMisc
|
||||
return this->convertToQString();
|
||||
}
|
||||
|
||||
/*
|
||||
* Return backing streamable object (if any)
|
||||
*/
|
||||
const CValueObject *CValueObject::fromQVariant(const QVariant &qv)
|
||||
{
|
||||
if (!qv.isValid()) return nullptr;
|
||||
QVariant::Type t = qv.type();
|
||||
uint ut = qv.userType();
|
||||
if (t != QVariant::UserType) return nullptr; // not a user type
|
||||
if (ut <= QVariant::UserType) return nullptr; // complex Qt type
|
||||
if (qv.canConvert<QDBusArgument>()) return nullptr; // not unstreamed yet
|
||||
|
||||
// this cast cannot be dynamic, so the aboce conditions are crucical
|
||||
const CValueObject *vo = static_cast<const CValueObject *>(qv.constData());
|
||||
return vo;
|
||||
}
|
||||
|
||||
/*
|
||||
* from DBus
|
||||
*/
|
||||
|
||||
@@ -132,6 +132,18 @@ namespace BlackMisc
|
||||
*/
|
||||
std::string toStdString(bool i18n = false) const;
|
||||
|
||||
/*!
|
||||
* \brief Virtual method to return QVariant, used with DBUS QVariant lists
|
||||
* \return
|
||||
*/
|
||||
virtual QVariant toQVariant() const = 0;
|
||||
|
||||
/*!
|
||||
* \brief The stored object as CValueObject
|
||||
* \param qv
|
||||
* \return
|
||||
*/
|
||||
static const CValueObject *fromQVariant(const QVariant &qv);
|
||||
|
||||
protected:
|
||||
/*!
|
||||
|
||||
Reference in New Issue
Block a user