#pragma once #include "cafAppEnum.h" #include "cafAssert.h" #include "cafPdmValueField.h" #include #include #include #include namespace caf { template class AppEnumField : public PdmValueField { public: using FieldDataType = caf::AppEnum; AppEnumField() { static_assert( std::is_enum_v == true ); }; QVariant toQVariant() const override { auto enumValue = static_cast>( m_fieldValue.value() ); return enumValue; } void setFromQVariant( const QVariant& variant ) override { m_fieldValue = static_cast( variant.toInt() ); } bool isReadOnly() const override { return false; } void setValue( const DataType& fieldValue ) { m_fieldValue = fieldValue; } DataType value() const { return m_fieldValue; } private: caf::AppEnum m_fieldValue; }; } // namespace caf