#include "ct_abstractsingularitemmodelt.h" #include template CT_AbstractSingularItemModelT::CT_AbstractSingularItemModelT(const QString &displayableName) : InheritedT(displayableName) { } template CT_AbstractSingularItemModelT::~CT_AbstractSingularItemModelT() { clearItemAttributes(); } template void CT_AbstractSingularItemModelT::addItemAttribute(AttributModelT* attribute) { MODELS_ASSERT(attribute != nullptr); if (attribute == nullptr) {qDebug() << "CT_AbstractSingularItemModelT::addItemAttribute" << ", " << "attribute == nullptr"; return;} attribute->setParentModel(this); m_attributes.append(attribute); itemAttributeAdded(attribute); } template bool CT_AbstractSingularItemModelT::removeItemAttribute(AttributModelT *attribute) { MODELS_ASSERT(attribute != nullptr); if (attribute == nullptr) {qDebug() << "CT_AbstractSingularItemModelT::removeItemAttribute" << ", " << "attribute == nullptr"; return false;} if(m_attributes.removeOne(attribute)) { itemAttributeRemoved(attribute); delete attribute; return true; } return false; } template bool CT_AbstractSingularItemModelT::visitAttributes(const typename InheritedT::AttributeVisitor& visitor) const { for(const AttributModelT* attribute : m_attributes) { if(!visitor(attribute)) return false; } return true; } template void CT_AbstractSingularItemModelT::clearItemAttributes() { for(const AttributModelT* attribute : m_attributes) { itemAttributeRemoved(attribute); delete attribute; } m_attributes.clear(); } template GroupModelT* CT_AbstractSingularItemModelT::parentGroup() const { return static_cast(this->parentModel()); } template bool CT_AbstractSingularItemModelT::visitChildrens(const typename InheritedT::ChildrenVisitor& visitor) const { for(const AttributModelT* attribute : m_attributes) { if(!visitor(attribute)) return false; } return true; } template bool CT_AbstractSingularItemModelT::isEmpty() const { return m_attributes.isEmpty(); } template GroupModelT* CT_AbstractSingularItemModelT::rootGroup() const { GroupModelT* pGroup = parentGroup(); if(pGroup == nullptr) return nullptr; return static_cast(pGroup->rootGroup()); }