void QgsAttributeTableView::setModel( QgsAttributeTableFilterModel* filterModel ) { if ( mFilterModel ) { // Cleanup old model stuff if present disconnect( mMasterSelection, SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( onMasterSelectionChanged( QItemSelection, QItemSelection ) ) ); disconnect( selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( onSelectionChanged( QItemSelection, QItemSelection ) ) ); disconnect( mFilterModel, SIGNAL( filterAboutToBeInvalidated() ), this, SLOT( onFilterAboutToBeInvalidated() ) ); disconnect( mFilterModel, SIGNAL( filterInvalidated() ), this, SLOT( onFilterInvalidated() ) ); } mFilterModel = filterModel; QTableView::setModel( filterModel ); if ( filterModel ) { // Connect new model stuff mMasterSelection = mFilterModel->masterSelection(); connect( mMasterSelection, SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( onMasterSelectionChanged( QItemSelection, QItemSelection ) ) ); connect( selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( onSelectionChanged( QItemSelection, QItemSelection ) ) ); connect( mFilterModel, SIGNAL( filterAboutToBeInvalidated() ), SLOT( onFilterAboutToBeInvalidated() ) ); connect( mFilterModel, SIGNAL( filterInvalidated() ), SLOT( onFilterInvalidated() ) ); } }
void QgsFeatureListView::onSelectionChanged( const QItemSelection& selected, const QItemSelection& deselected ) { disconnect( mMasterSelection, SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( onMasterSelectionChanged( QItemSelection, QItemSelection ) ) ); QItemSelection masterSelected = mModel->mapSelectionToMaster( selected ); QItemSelection masterDeselected = mModel->mapSelectionToMaster( deselected ); mMasterSelection->select( masterSelected, QItemSelectionModel::Select ); mMasterSelection->select( masterDeselected, QItemSelectionModel::Deselect ); connect( mMasterSelection, SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( onMasterSelectionChanged( QItemSelection, QItemSelection ) ) ); }
void QgsFeatureListView::setModel( QgsFeatureListModel* featureListModel ) { QListView::setModel( featureListModel ); mModel = featureListModel; mMasterSelection = featureListModel->masterSelection(); connect( mMasterSelection, SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( onMasterSelectionChanged( QItemSelection, QItemSelection ) ) ); connect( selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( onSelectionChanged( QItemSelection, QItemSelection ) ) ); connect( mModel->sourceModel(), SIGNAL( filterAboutToBeInvalidated() ), SLOT( onFilterAboutToBeInvalidated() ) ); connect( mModel->sourceModel(), SIGNAL( filterInvalidated() ), SLOT( onFilterInvalidated() ) ); mCurrentEditSelectionModel = new QItemSelectionModel( mModel->masterModel(), this ); if ( mItemDelegate && mItemDelegate->parent() == this ) { delete mItemDelegate; } mItemDelegate = new QgsFeatureListViewDelegate( mModel, this ); mItemDelegate->setEditSelectionModel( mCurrentEditSelectionModel ); setItemDelegate( mItemDelegate ); connect( mCurrentEditSelectionModel, SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( editSelectionChanged( QItemSelection, QItemSelection ) ) ); }
void QgsAttributeTableView::onSelectionChanged( const QItemSelection& selected, const QItemSelection& deselected ) { disconnect( mMasterSelection, SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( onMasterSelectionChanged( QItemSelection, QItemSelection ) ) ); QItemSelection masterSelected = mFilterModel->mapSelectionToSource( selected ); QItemSelection masterDeselected = mFilterModel->mapSelectionToSource( deselected ); mMasterSelection->select( masterSelected, QItemSelectionModel::Select ); mMasterSelection->select( masterDeselected, QItemSelectionModel::Deselect ); connect( mMasterSelection, SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), SLOT( onMasterSelectionChanged( QItemSelection, QItemSelection ) ) ); }