23  : QItemSelectionModel( model, parent )
 
   24  , mFeatureModel( featureModel )
 
   25  , mSyncEnabled( true )
 
   26  , mClearAndSelectBuffer( false )
 
   33  mSyncEnabled = enable;
 
   37    if ( mClearAndSelectBuffer )
 
   43      mFeatureSelectionManager->
select( mSelectedBuffer );
 
   44      mFeatureSelectionManager->
deselect( mDeselectedBuffer );
 
   47    mSelectedBuffer.clear();
 
   48    mDeselectedBuffer.clear();
 
   49    mClearAndSelectBuffer = 
false;
 
   55  if ( mSelectedBuffer.contains( fid ) )
 
   58  if ( mDeselectedBuffer.contains( fid ) )
 
   61  if ( !mClearAndSelectBuffer && mFeatureSelectionManager->
selectedFeatureIds().contains( fid ) )
 
   76  QgsDebugMsgLevel( QStringLiteral( 
"Index count: %1" ).arg( selection.indexes().size() ), 2 );
 
   78  const auto constIndexes = selection.indexes();
 
   79  for ( 
const QModelIndex &index : constIndexes )
 
   88  if ( command.testFlag( QItemSelectionModel::ClearAndSelect ) )
 
   92      mClearAndSelectBuffer = 
true;
 
   93      const auto constIds = ids;
 
   96        if ( !mDeselectedBuffer.remove( 
id ) )
 
   98          mSelectedBuffer.insert( 
id );
 
  107  else if ( command.testFlag( QItemSelectionModel::Select ) )
 
  111      const auto constIds = ids;
 
  114        if ( !mDeselectedBuffer.remove( 
id ) )
 
  116          mSelectedBuffer.insert( 
id );
 
  122      mFeatureSelectionManager->
select( ids );
 
  125  else if ( command.testFlag( QItemSelectionModel::Deselect ) )
 
  129      const auto constIds = ids;
 
  132        if ( !mSelectedBuffer.remove( 
id ) )
 
  134          mDeselectedBuffer.insert( 
id );
 
  140      mFeatureSelectionManager->
deselect( ids );
 
  146  QModelIndexList updatedIndexes;
 
  147  const auto indexes = selection.indexes();
 
  148  for ( 
const QModelIndex &idx : indexes )
 
  150    updatedIndexes.append( expandIndexToRow( idx ) );
 
  158  if ( mFeatureSelectionManager )
 
  161  mFeatureSelectionManager = featureSelectionManager;
 
  166void QgsFeatureSelectionModel::layerSelectionChanged( 
const QgsFeatureIds &selected, 
const QgsFeatureIds &deselected, 
bool clearAndSelect )
 
  168  if ( clearAndSelect )
 
  174    QModelIndexList updatedIndexes;
 
  175    const auto constSelected = selected;
 
  178      updatedIndexes.append( expandIndexToRow( mFeatureModel->
fidToIndex( fid ) ) );
 
  181    const auto constDeselected = deselected;
 
  184      updatedIndexes.append( expandIndexToRow( mFeatureModel->
fidToIndex( fid ) ) );
 
  191QModelIndexList QgsFeatureSelectionModel::expandIndexToRow( 
const QModelIndex &index )
 const 
  193  QModelIndexList indexes;
 
  194  const QAbstractItemModel *model = index.model();
 
  195  const int row = index.row();
 
  200  const int columns = model->columnCount();
 
  201  indexes.reserve( columns );
 
  202  for ( 
int column = 0; column < columns; ++column )
 
  204    indexes.append( model->index( row, column ) );
 
@ FeatureIdRole
Get the feature id of the feature in this row.
 
virtual QModelIndex fidToIndex(QgsFeatureId fid)=0
 
void enableSync(bool enable)
Enables or disables synchronisation to the QgsVectorLayer When synchronisation is disabled,...
 
virtual void selectFeatures(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
Select features on this table.
 
virtual bool isSelected(QgsFeatureId fid)
Returns the selection status of a given feature id.
 
QgsFeatureSelectionModel(QAbstractItemModel *model, QgsFeatureModel *featureModel, QgsIFeatureSelectionManager *featureSelectionHandler, QObject *parent)
 
virtual void setFeatureSelectionManager(QgsIFeatureSelectionManager *featureSelectionManager)
 
void requestRepaint()
Request a repaint of the visible items of connected views.
 
Is an interface class to abstract feature selection handling.
 
virtual void select(const QgsFeatureIds &ids)=0
Select features by feature ids.
 
void selectionChanged(const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect)
Emitted when selection was changed.
 
virtual const QgsFeatureIds & selectedFeatureIds() const =0
Returns reference to identifiers of selected features.
 
virtual void deselect(const QgsFeatureIds &ids)=0
Deselect features by feature ids.
 
virtual void setSelectedFeatures(const QgsFeatureIds &ids)=0
Change selection to the new set of features.
 
QSet< QgsFeatureId > QgsFeatureIds
 
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
 
#define QgsDebugMsgLevel(str, level)