+ Q_ASSERT(model());
+ if (!parent.isValid()) {
+ // ok this means that whole networks are about to be removed
+ // we can't determine which buffers are affect, so we hope that all nets are removed
+ // this is the most common case (for example disconnecting from the core or terminating the client)
+ if (model()->rowCount(parent) != end - start + 1)
+ return;
+
+ foreach (BufferId id, _chatViews.keys()) {
+ removeChatView(id);
+ }
+ _chatViews.clear();
+ }
+ else {
+ // check if there are explicitly buffers removed
+ for (int i = start; i <= end; i++) {
+ QVariant variant = parent.child(i, 0).data(NetworkModel::BufferIdRole);
+ if (!variant.isValid())
+ continue;
+
+ BufferId bufferId = variant.value<BufferId>();
+ removeBuffer(bufferId);
+ }
+ }