int QAbstractItemModel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: dataChanged((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< const QModelIndex(*)>(_a[2]))); break; case 1: headerDataChanged((*reinterpret_cast< Qt::Orientation(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 2: layoutChanged(); break; case 3: layoutAboutToBeChanged(); break; case 4: rowsAboutToBeInserted((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 5: rowsInserted((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 6: rowsAboutToBeRemoved((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 7: rowsRemoved((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 8: columnsAboutToBeInserted((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 9: columnsInserted((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 10: columnsAboutToBeRemoved((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 11: columnsRemoved((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 12: modelAboutToBeReset(); break; case 13: modelReset(); break; case 14: rowsAboutToBeMoved((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< const QModelIndex(*)>(_a[4])),(*reinterpret_cast< int(*)>(_a[5]))); break; case 15: rowsMoved((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< const QModelIndex(*)>(_a[4])),(*reinterpret_cast< int(*)>(_a[5]))); break; case 16: columnsAboutToBeMoved((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< const QModelIndex(*)>(_a[4])),(*reinterpret_cast< int(*)>(_a[5]))); break; case 17: columnsMoved((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3])),(*reinterpret_cast< const QModelIndex(*)>(_a[4])),(*reinterpret_cast< int(*)>(_a[5]))); break; case 18: { bool _r = submit(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 19: revert(); break; default: ; } _id -= 20; } return _id; }
void WAbstractItemModel::beginInsertRows(const WModelIndex& parent, int first, int last) { first_ = first; last_ = last; parent_ = parent; rowsAboutToBeInserted().emit(parent, first, last); }
void ReferencedData::setReferencedData(const QString &id, const QString &data) { if (id.isEmpty()) { return; } KeyValueVector::iterator findIt = d->mVector.binaryFind(id); if (findIt != d->mVector.end()) { if (data != findIt->value) { findIt->value = data; emit dataChanged(findIt - d->mVector.begin()); } } else { findIt = qLowerBound(d->mVector.begin(), d->mVector.end(), KeyValue(id), KeyValue::lessThan); const int row = findIt - d->mVector.begin(); emit rowsAboutToBeInserted(row, row); d->mVector.insert(findIt, KeyValue(id, data)); emit rowsInserted(); } }
void ReferencedData::addMap(const QMap<QString, QString> &idDataMap) { QMap<QString, QString>::const_iterator it = idDataMap.constBegin(); const QMap<QString, QString>::const_iterator end = idDataMap.constEnd(); if (d->mVector.isEmpty()) { d->mVector.reserve(idDataMap.count()); // The vector is currently empty -> fast path // The map is already sorted, we can just copy right away // and emit the signals only once, which is the whole point of this method. emit rowsAboutToBeInserted(0, idDataMap.count() - 1); for ( ; it != end ; ++it) { d->mVector.append(KeyValue(it.key(), it.value())); } emit rowsInserted(); } else { // Append to existing data -> slower code path for ( ; it != end ; ++it) { setReferencedData(it.key(), it.value()); } } }