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 ) )
87 if ( command.testFlag( QItemSelectionModel::ClearAndSelect ) )
91 mClearAndSelectBuffer =
true;
94 if ( !mDeselectedBuffer.
remove(
id ) )
96 mSelectedBuffer.
insert(
id );
105 else if ( command.testFlag( QItemSelectionModel::Select ) )
111 if ( !mDeselectedBuffer.
remove(
id ) )
113 mSelectedBuffer.
insert(
id );
119 mFeatureSelectionManager->
select( ids );
122 else if ( command.testFlag( QItemSelectionModel::Deselect ) )
128 if ( !mSelectedBuffer.
remove(
id ) )
130 mDeselectedBuffer.
insert(
id );
136 mFeatureSelectionManager->
deselect( ids );
142 QModelIndexList updatedIndexes;
145 updatedIndexes.append( expandIndexToRow( idx ) );
153 mFeatureSelectionManager = featureSelectionManager;
158 void QgsFeatureSelectionModel::layerSelectionChanged(
const QgsFeatureIds& selected,
const QgsFeatureIds& deselected,
bool clearAndSelect )
160 if ( clearAndSelect )
166 QModelIndexList updatedIndexes;
169 updatedIndexes.append( expandIndexToRow( mFeatureModel->
fidToIndex( fid ) ) );
174 updatedIndexes.append( expandIndexToRow( mFeatureModel->
fidToIndex( fid ) ) );
181 QModelIndexList QgsFeatureSelectionModel::expandIndexToRow(
const QModelIndex&
index )
const 183 QModelIndexList indexes;
185 int row = index.
row();
191 indexes.reserve( columns );
192 for (
int column = 0; column < columns; ++column )
194 indexes.append( model->
index( row, column ) );
QModelIndexList indexes() const
qlonglong toLongLong(bool *ok) const
void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
virtual bool isSelected(QgsFeatureId fid)
Returns the selection status of a given feature id.
virtual const QgsFeatureIds & selectedFeaturesIds() const =0
Return reference to identifiers of selected features.
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const=0
virtual void setSelectedFeatures(const QgsFeatureIds &ids)=0
Change selection to the new set of features.
const_iterator insert(const T &value)
bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
void enableSync(bool enable)
Enables or disables synchronisation to the QgsVectorLayer When synchronisation is disabled...
virtual QModelIndex fidToIndex(QgsFeatureId fid)=0
Get the feature id of the feature in this row.
virtual void deselect(const QgsFeatureIds &ids)=0
Deselect features.
void requestRepaint()
Request a repaint of the visible items of connected views.
const QItemSelection selection() const
virtual void setFeatureSelectionManager(QgsIFeatureSelectionManager *featureSelectionManager)
virtual QVariant data(const QModelIndex &index, int role) const=0
bool contains(const T &value) const
virtual void selectFeatures(const QItemSelection &selection, const SelectionFlags &command)
Select features on this table.
const QAbstractItemModel * model() const
bool remove(const T &value)
virtual int columnCount(const QModelIndex &parent) const=0
QgsFeatureSelectionModel(QAbstractItemModel *model, QgsFeatureModel *featureModel, QgsIFeatureSelectionManager *featureSelectionHandler, QObject *parent)
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Is an interface class to abstract feature selection handling.
const QAbstractItemModel * model() const
virtual void select(const QgsFeatureIds &ids)=0
Select features.