51 return Children_.begin ();
56 return Children_.end ();
61 return Children_.begin ();
66 return Children_.end ();
71 return Children_.value (row);
81 return Children_.size ();
86 if (Children_.value (row))
87 return Children_.at (row).get ();
89 if (Children_.size () <= row)
90 Children_.resize (row + 1);
92 const auto& childIdx = Model_->index (row, 0, SrcIdx_);
93 Children_ [row].reset (
new ModelItem { Model_, childIdx, shared_from_this () });
94 return Children_.at (row).get ();
99 return Children_.erase (it);
104 return Children_.erase (begin, end);
114 if (SrcIdx_.isValid ())
115 SrcIdx_ = Model_->index (
GetRow () - modelStartingRow, 0, Parent_.lock ()->GetIndex ());
125 return Parent_.lock ();
130 return Children_.indexOf (item);
135 const auto pos = std::find (Children_.begin (), Children_.end (), item);
136 return pos == Children_.end () ?
138 std::distance (Children_.begin (), pos);
143 return Parent_.lock ()->GetRow (shared_from_this ());
148 index = index.sibling (index.row (), 0);
150 const auto pos = std::find_if (Children_.begin (), Children_.end (),
151 [&index] (
const ModelItem_ptr& item) {
return item->GetIndex () == index; });
ModelItem_ptr GetParent() const
std::shared_ptr< ModelItem > ModelItem_ptr
QVector< ModelItem_ptr > ModelItemsList_t
QAbstractItemModel * GetModel() const
ModelItemsList_t::const_iterator const_iterator
const ModelItemsList_t & GetChildren() const
iterator EraseChild(iterator it)
std::shared_ptr< const ModelItem > ModelItem_cptr
std::weak_ptr< ModelItem > ModelItem_wtr
const QModelIndex & GetIndex() const
iterator EraseChildren(iterator begin, iterator end)
ModelItem_ptr FindChild(QModelIndex index) const
ModelItem_ptr GetChild(int row) const
void RefreshIndex(int modelStartingRow)
ModelItem * EnsureChild(int row)
ModelItemsList_t::iterator iterator