mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-26 18:55:38 +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();
|
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
|
* metaTypeId
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
#include "blackmisc/pqbase.h"
|
#include "blackmisc/pqbase.h"
|
||||||
#include "blackmisc/pqunits.h"
|
#include "blackmisc/pqunits.h"
|
||||||
|
#include "blackmisc/propertyindex.h"
|
||||||
#include "blackmisc/mathematics.h"
|
#include "blackmisc/mathematics.h"
|
||||||
#include "blackmisc/pqstring.h"
|
#include "blackmisc/pqstring.h"
|
||||||
#include <QtDBus/QDBusMetaType>
|
#include <QtDBus/QDBusMetaType>
|
||||||
@@ -32,6 +33,18 @@ namespace BlackMisc
|
|||||||
template <class MU, class PQ> class CPhysicalQuantity : public BlackMisc::CValueObject
|
template <class MU, class PQ> class CPhysicalQuantity : public BlackMisc::CValueObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
//! Index
|
||||||
|
enum ColumnIndex
|
||||||
|
{
|
||||||
|
IndexUnit = BlackMisc::CPropertyIndex::GlobalIndexCPhysicalQuantity,
|
||||||
|
IndexValue,
|
||||||
|
IndexValueRounded0DigitsWithUnit,
|
||||||
|
IndexValueRounded1DigitsWithUnit,
|
||||||
|
IndexValueRounded2DigitsWithUnit,
|
||||||
|
IndexValueRounded3DigitsWithUnit,
|
||||||
|
IndexValueRounded6DigitsWithUnit
|
||||||
|
};
|
||||||
|
|
||||||
//! Virtual destructor
|
//! Virtual destructor
|
||||||
virtual ~CPhysicalQuantity() {}
|
virtual ~CPhysicalQuantity() {}
|
||||||
|
|
||||||
@@ -210,6 +223,12 @@ namespace BlackMisc
|
|||||||
*this = CPqString::parse<PQ>(value, CPqString::SeparatorsCLocale);
|
*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
|
//! Register metadata of unit and quantity
|
||||||
static void registerMetadata();
|
static void registerMetadata();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user