mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Make caf::PdmPtrField inherit caf::PdmValueField and make it support QVariant.
This commit is contained in:
parent
b41fee3ee3
commit
ac8a11c813
@ -92,13 +92,15 @@ public :
|
||||
T* operator->() const { return static_cast<T*>(const_cast<PdmObjectHandle*>(m_object)); }
|
||||
PdmPointer<T> & operator= ( const PdmPointer<T>& p ) { if (this != &p) PdmPointerImpl::removeReference(&m_object); m_object = p.m_object; PdmPointerImpl::addReference(&m_object); return *this; }
|
||||
PdmPointer<T> & operator= ( T* p ) { if (m_object != p) PdmPointerImpl::removeReference(&m_object); m_object = p; PdmPointerImpl::addReference(&m_object); return *this; }
|
||||
|
||||
template <class S>
|
||||
bool operator==(const PdmPointer<S>& rhs) const { return m_object == rhs.rawPtr(); }
|
||||
// Private methods used by PdmField<T*> and PdmPointersField<T*>. Do not use unless you mean it !
|
||||
PdmObjectHandle* rawPtr() const { return m_object; }
|
||||
void setRawPtr( PdmObjectHandle* p) { if (m_object != p) PdmPointerImpl::removeReference(&m_object); m_object = p; PdmPointerImpl::addReference(&m_object); }
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // End of namespace caf
|
||||
|
||||
#include <QMetaType>
|
||||
Q_DECLARE_METATYPE(caf::PdmPointer<caf::PdmObjectHandle>);
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
#include "cafAssert.h"
|
||||
#include "cafPdmPointer.h"
|
||||
|
||||
#include "cafPdmFieldHandle.h"
|
||||
#include "cafPdmValueField.h"
|
||||
|
||||
namespace caf
|
||||
{
|
||||
@ -21,7 +21,7 @@ template< typename T> class PdmFieldXmlCap;
|
||||
//==================================================================================================
|
||||
|
||||
template<typename DataType>
|
||||
class PdmPtrField : public PdmFieldHandle
|
||||
class PdmPtrField : public PdmValueField
|
||||
{
|
||||
public:
|
||||
PdmPtrField()
|
||||
@ -31,7 +31,7 @@ public:
|
||||
};
|
||||
|
||||
template<typename DataType >
|
||||
class PdmPtrField <DataType*> : public PdmFieldHandle
|
||||
class PdmPtrField <DataType*> : public PdmValueField
|
||||
{
|
||||
typedef DataType* DataTypePtr;
|
||||
public:
|
||||
@ -51,6 +51,11 @@ public:
|
||||
DataType* value() const { return m_fieldValue; }
|
||||
void setValue(const DataTypePtr& fieldValue);
|
||||
|
||||
// QVariant access
|
||||
virtual QVariant toQVariant() const override;
|
||||
virtual void setFromQVariant(const QVariant& variant) override;
|
||||
virtual bool isReadOnly() const override { return false; }
|
||||
|
||||
// Access operators
|
||||
|
||||
/*Conversion*/ operator DataType* () const { return m_fieldValue; }
|
||||
@ -80,6 +85,3 @@ private:
|
||||
} // End of namespace caf
|
||||
|
||||
#include "cafPdmPtrField.inl"
|
||||
|
||||
#include <QMetaType>
|
||||
Q_DECLARE_METATYPE(caf::PdmPointer<caf::PdmObjectHandle>);
|
||||
|
@ -1,6 +1,29 @@
|
||||
#include <QVariant>
|
||||
|
||||
namespace caf
|
||||
{
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
template<typename DataType >
|
||||
QVariant caf::PdmPtrField<DataType*>::toQVariant() const
|
||||
{
|
||||
caf::PdmObjectHandle* objectHandle = m_fieldValue.rawPtr();
|
||||
caf::PdmPointer<caf::PdmObjectHandle> ptrHandle(objectHandle);
|
||||
return QVariant::fromValue(ptrHandle);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
template<typename DataType >
|
||||
void caf::PdmPtrField<DataType*>::setFromQVariant(const QVariant& variant)
|
||||
{
|
||||
caf::PdmPointer<caf::PdmObjectHandle> variantHandle = variant.value<caf::PdmPointer<caf::PdmObjectHandle>>();
|
||||
m_fieldValue.setRawPtr(variantHandle.rawPtr());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user