diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafInternalPdmValueFieldSpecializations.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafInternalPdmValueFieldSpecializations.h index 50112cc5cd..7e37599b80 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafInternalPdmValueFieldSpecializations.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmCore/cafInternalPdmValueFieldSpecializations.h @@ -1,5 +1,9 @@ #pragma once +#include "cafAppEnum.h" + +#include + #include namespace caf @@ -39,15 +43,12 @@ public: { return variantValue == variantValue2; } - }; -} // End of namespace caf -#include "cafAppEnum.h" - -namespace caf -{ +//================================================================================================== +/// Partial specialization for caf::AppEnum +//================================================================================================== template class PdmValueFieldSpecialization > { @@ -67,18 +68,12 @@ public: { return variantValue == variantValue2; } - }; -} // End of namespace caf - - - -#include - -namespace caf -{ +//================================================================================================== +/// Partial specialization for std::vector +//================================================================================================== template class PdmValueFieldSpecialization > { @@ -89,10 +84,10 @@ public: typename std::vector::const_iterator it; for (it = value.begin(); it != value.end() ; ++it) { - returnList.push_back(QVariant::fromValue(*it)); + returnList.push_back(PdmValueFieldSpecialization::convert(*it)); } - return returnList; + return returnList; } static void setFromVariant(const QVariant& variantValue, std::vector& value) @@ -103,7 +98,10 @@ public: QList lst = variantValue.toList(); for (int i = 0; i < lst.size(); ++i) { - value.push_back(lst[i].value()); + T val; + PdmValueFieldSpecialization::setFromVariant(lst[i], val); + + value.push_back(val); } } } @@ -112,7 +110,6 @@ public: { return variantValue == variantValue2; } - }; } // End of namespace caf diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafInternalPdmFieldTypeSpecializations.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafInternalPdmFieldTypeSpecializations.h index 749c956410..ea4e37d1e8 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafInternalPdmFieldTypeSpecializations.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmUiCore/cafInternalPdmFieldTypeSpecializations.h @@ -111,28 +111,13 @@ public: /// Convert the field value into a QVariant static QVariant convert(const std::vector& value) { - QList returnList; - typename std::vector::const_iterator it; - for (it = value.begin(); it != value.end() ; ++it) - { - returnList.push_back(QVariant(*it)); - } - return returnList; + return PdmValueFieldSpecialization< std::vector >::convert(value); } /// Set the field value from a QVariant static void setFromVariant(const QVariant& variantValue, std::vector& value) { - if (variantValue.canConvert< QList >()) - { - value.clear(); - QList lst = variantValue.toList(); - int i; - for (i = 0; i < lst.size(); ++i) - { - value.push_back(lst[i].value()); - } - } + return PdmValueFieldSpecialization< std::vector >::setFromVariant(variantValue, value); } static bool isEqual(const QVariant& variantValue, const QVariant& variantValue2)