mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-01 13:36:48 +08:00
refs #314, new propertyBy methods (nested indexes) for PQs
This commit is contained in:
@@ -310,6 +310,66 @@ namespace BlackMisc
|
||||
this->m_value = json.value("value").toDouble();
|
||||
}
|
||||
|
||||
/*
|
||||
* Property
|
||||
*/
|
||||
template <class MU, class PQ> QVariant CPhysicalQuantity<MU, PQ>::propertyByIndex(const CPropertyIndex &index) const
|
||||
{
|
||||
if (index.isMyself()) { return this->toQVariant(); }
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexValue:
|
||||
return QVariant(this->m_value);
|
||||
case IndexUnit:
|
||||
return this->m_unit.toQVariant();
|
||||
case IndexValueRounded0DigitsWithUnit:
|
||||
return QVariant(this->valueRoundedWithUnit(0));
|
||||
case IndexValueRounded1DigitsWithUnit:
|
||||
return QVariant(this->valueRoundedWithUnit(1));
|
||||
case IndexValueRounded2DigitsWithUnit:
|
||||
return QVariant(this->valueRoundedWithUnit(2));
|
||||
case IndexValueRounded3DigitsWithUnit:
|
||||
return QVariant(this->valueRoundedWithUnit(3));
|
||||
case IndexValueRounded6DigitsWithUnit:
|
||||
return QVariant(this->valueRoundedWithUnit(6));
|
||||
default:
|
||||
return CValueObject::propertyByIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Property
|
||||
*/
|
||||
template <class MU, class PQ> void CPhysicalQuantity<MU, PQ>::setPropertyByIndex(const QVariant &variant, const CPropertyIndex &index)
|
||||
{
|
||||
if (index.isMyself())
|
||||
{
|
||||
this->fromQVariant(variant);
|
||||
return;
|
||||
}
|
||||
ColumnIndex i = index.frontCasted<ColumnIndex>();
|
||||
switch (i)
|
||||
{
|
||||
case IndexValue:
|
||||
this->m_value = variant.toDouble();
|
||||
break;
|
||||
case IndexUnit:
|
||||
this->m_unit.fromQVariant(variant);
|
||||
break;
|
||||
case IndexValueRounded0DigitsWithUnit:
|
||||
case IndexValueRounded1DigitsWithUnit:
|
||||
case IndexValueRounded2DigitsWithUnit:
|
||||
case IndexValueRounded3DigitsWithUnit:
|
||||
case IndexValueRounded6DigitsWithUnit:
|
||||
this->parseFromString(variant.toString());
|
||||
break;
|
||||
default:
|
||||
CValueObject::setPropertyByIndex(variant, index);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* metaTypeId
|
||||
*/
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "blackmisc/pqbase.h"
|
||||
#include "blackmisc/pqunits.h"
|
||||
#include "blackmisc/propertyindex.h"
|
||||
#include "blackmisc/mathematics.h"
|
||||
#include "blackmisc/pqstring.h"
|
||||
#include <QtDBus/QDBusMetaType>
|
||||
@@ -32,6 +33,18 @@ namespace BlackMisc
|
||||
template <class MU, class PQ> class CPhysicalQuantity : public BlackMisc::CValueObject
|
||||
{
|
||||
public:
|
||||
//! Index
|
||||
enum ColumnIndex
|
||||
{
|
||||
IndexUnit = BlackMisc::CPropertyIndex::GlobalIndexCPhysicalQuantity,
|
||||
IndexValue,
|
||||
IndexValueRounded0DigitsWithUnit,
|
||||
IndexValueRounded1DigitsWithUnit,
|
||||
IndexValueRounded2DigitsWithUnit,
|
||||
IndexValueRounded3DigitsWithUnit,
|
||||
IndexValueRounded6DigitsWithUnit
|
||||
};
|
||||
|
||||
//! Virtual destructor
|
||||
virtual ~CPhysicalQuantity() {}
|
||||
|
||||
@@ -210,6 +223,12 @@ namespace BlackMisc
|
||||
*this = CPqString::parse<PQ>(value, CPqString::SeparatorsCLocale);
|
||||
}
|
||||
|
||||
//! \copydoc CValueObject::propertyByIndex(int)
|
||||
virtual QVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const override;
|
||||
|
||||
//! \copydoc CValueObject::setPropertyByIndex(const QVariant, int)
|
||||
virtual void setPropertyByIndex(const QVariant &variant, const BlackMisc::CPropertyIndex &index) override;
|
||||
|
||||
//! Register metadata of unit and quantity
|
||||
static void registerMetadata();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user