/*! \see QAbstractItemModel::setData */ bool SummaryHandlingProxyModel::setData( const QModelIndex& index, const QVariant& value, int role ) { QAbstractItemModel* model = sourceModel(); if ( role==StartTimeRole || role==EndTimeRole ) { QModelIndex parentIdx = mapToSource( index ); do { if ( d->isSummary(parentIdx) ) { //qDebug() << "removing " << parentIdx << "from cache"; d->removeFromCache( parentIdx ); QModelIndex proxyParentIdx = mapFromSource( parentIdx ); emit dataChanged( proxyParentIdx, proxyParentIdx ); } } while ( ( parentIdx=model->parent( parentIdx ) ) != QModelIndex() ); } return BASE::setData( index, value, role ); }
void SummaryHandlingProxyModel::sourceDataChanged( const QModelIndex& from, const QModelIndex& to ) { QAbstractItemModel* model = sourceModel(); QModelIndex parentIdx = from; do { const QModelIndex& dataIdx = parentIdx; if ( model->data( dataIdx, ItemTypeRole )==TypeSummary ) { //qDebug() << "removing " << parentIdx << "from cache"; d->removeFromCache( dataIdx ); QModelIndex proxyDataIdx = mapFromSource( dataIdx ); emit dataChanged( proxyDataIdx, proxyDataIdx ); } } while ( ( parentIdx=model->parent( parentIdx ) ) != QModelIndex() ); BASE::sourceDataChanged( from, to ); }