AssetListModel::Iterator AssetListModel::erase( const AssetListModel::Iterator & position ) { auto index = std::distance( items_.cbegin(), position.iterator() ); signalPreItemsRemoved( index, 1 ); auto it = items_.erase( position.iterator() ); signalPostItemsRemoved( index, 1 ); return it; }
AssetListModel::Iterator AssetListModel::erase( const AssetListModel::Iterator & first, const AssetListModel::Iterator & last ) { auto index = std::distance( items_.cbegin(), first.iterator() ); auto count = std::distance( first.iterator(), last.iterator() ); signalPreItemsRemoved( index, count ); auto it = items_.erase( first.iterator(), last.iterator() ); signalPostItemsRemoved( index, count ); return it; }
void AssetListModel::resize( size_t newSize ) { auto oldSize = size(); if (newSize < oldSize) { signalPreItemsRemoved( newSize, oldSize - newSize ); items_.resize( newSize ); signalPostItemsRemoved( newSize, oldSize - newSize ); } else if (newSize > oldSize) { signalPreItemsInserted( oldSize, newSize - oldSize ); items_.resize( newSize ); signalPostItemsInserted( oldSize, newSize - oldSize ); } }
void GenericTreeModel::removeRootItem(GenericTreeItem* item) { assert(item != nullptr); assert(item->model_ == this); const auto foundItr = std::find(rootItems_.cbegin(), rootItems_.cend(), item); assert(foundItr != rootItems_.cend()); item->model_ = nullptr; auto findIter = std::find(rootItems_.begin(), rootItems_.end(), item); if (findIter == rootItems_.end()) return; size_t index = std::distance(findIter, rootItems_.begin()); signalPreItemsRemoved(nullptr, index, 1); rootItems_.erase(foundItr); signalPostItemsRemoved(nullptr, index, 1); }