9 : QItemSelectionModel( model, parent )
10 , mFeatureModel( featureModel )
11 , mSyncEnabled( true )
12 , mClearAndSelectBuffer( false )
19 mSyncEnabled = enable;
23 if ( mClearAndSelectBuffer )
29 mFeatureSelectionManager->
select( mSelectedBuffer );
30 mFeatureSelectionManager->
deselect( mDeselectedBuffer );
33 mSelectedBuffer.clear();
34 mDeselectedBuffer.clear();
35 mClearAndSelectBuffer =
false;
41 if ( mSelectedBuffer.contains( fid ) )
44 if ( mDeselectedBuffer.contains( fid ) )
47 if ( !mClearAndSelectBuffer && mFeatureSelectionManager->
selectedFeaturesIds().contains( fid ) )
62 foreach (
const QModelIndex
index, selection.indexes() )
71 if ( command.testFlag( QItemSelectionModel::ClearAndSelect ) )
75 mClearAndSelectBuffer =
true;
78 if ( !mDeselectedBuffer.remove(
id ) )
80 mSelectedBuffer.insert(
id );
89 else if ( command.testFlag( QItemSelectionModel::Select ) )
95 if ( !mDeselectedBuffer.remove(
id ) )
97 mSelectedBuffer.insert(
id );
103 mFeatureSelectionManager->
select( ids );
106 else if ( command.testFlag( QItemSelectionModel::Deselect ) )
112 if ( !mSelectedBuffer.remove(
id ) )
114 mDeselectedBuffer.insert(
id );
120 mFeatureSelectionManager->
deselect( ids );
126 QModelIndexList updatedIndexes;
127 foreach ( QModelIndex idx, selection.indexes() )
129 updatedIndexes.append( expandIndexToRow( idx ) );
137 mFeatureSelectionManager = featureSelectionManager;
144 if ( clearAndSelect )
150 QModelIndexList updatedIndexes;
153 updatedIndexes.append( expandIndexToRow( mFeatureModel->
fidToIndex( fid ) ) );
158 updatedIndexes.append( expandIndexToRow( mFeatureModel->
fidToIndex( fid ) ) );
165 QModelIndexList QgsFeatureSelectionModel::expandIndexToRow(
const QModelIndex&
index )
const
167 QModelIndexList indexes;
168 const QAbstractItemModel* model = index.model();
169 int row = index.row();
174 for (
int column = 0; column < model->columnCount(); ++column )
176 indexes.append( model->index( row, column ) );