| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| /*************************************************************************** | ||
| qgsgenericfeatureselectionmgr.cpp | ||
| -------------------------------------- | ||
| Date : 11.6.2013 | ||
| Copyright : (C) 2013 Matthias Kuhn | ||
| Email : matthias dot kuhn at gmx dot ch | ||
| *************************************************************************** | ||
| * * | ||
| * This program is free software; you can redistribute it and/or modify * | ||
| * it under the terms of the GNU General Public License as published by * | ||
| * the Free Software Foundation; either version 2 of the License, or * | ||
| * (at your option) any later version. * | ||
| * * | ||
| ***************************************************************************/ | ||
|
|
||
| #include "qgsgenericfeatureselectionmanager.h" | ||
|
|
||
| QgsGenericFeatureSelectionManager::QgsGenericFeatureSelectionManager( QObject *parent ) | ||
| : QgsIFeatureSelectionManager( parent ) | ||
| { | ||
| } | ||
|
|
||
| QgsGenericFeatureSelectionManager::QgsGenericFeatureSelectionManager( const QgsFeatureIds& initialSelection, QObject* parent ) | ||
| : QgsIFeatureSelectionManager( parent ) | ||
| , mSelectedFeatures( initialSelection ) | ||
| { | ||
| } | ||
|
|
||
| int QgsGenericFeatureSelectionManager::selectedFeatureCount() | ||
| { | ||
| return mSelectedFeatures.size(); | ||
| } | ||
|
|
||
| void QgsGenericFeatureSelectionManager::select( const QgsFeatureIds& ids ) | ||
| { | ||
| mSelectedFeatures += ids; | ||
| emit selectionChanged( ids, QgsFeatureIds(), false ); | ||
| } | ||
|
|
||
| void QgsGenericFeatureSelectionManager::deselect( const QgsFeatureIds& ids ) | ||
| { | ||
| mSelectedFeatures -= ids; | ||
| emit selectionChanged( QgsFeatureIds(), ids, false ); | ||
| } | ||
|
|
||
| void QgsGenericFeatureSelectionManager::setSelectedFeatures( const QgsFeatureIds& ids ) | ||
| { | ||
| QgsFeatureIds selected = mSelectedFeatures - ids; | ||
| QgsFeatureIds deselected = ids - mSelectedFeatures; | ||
|
|
||
| mSelectedFeatures = ids; | ||
| emit selectionChanged( selected, deselected, true ); | ||
| } | ||
|
|
||
| const QgsFeatureIds& QgsGenericFeatureSelectionManager::selectedFeaturesIds() const | ||
| { | ||
| return mSelectedFeatures; | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,46 @@ | ||
| /*************************************************************************** | ||
| qgsgenericfeatureselectionmgr.h | ||
| -------------------------------------- | ||
| Date : 11.6.2013 | ||
| Copyright : (C) 2013 Matthias Kuhn | ||
| Email : matthias dot kuhn at gmx dot ch | ||
| *************************************************************************** | ||
| * * | ||
| * This program is free software; you can redistribute it and/or modify * | ||
| * it under the terms of the GNU General Public License as published by * | ||
| * the Free Software Foundation; either version 2 of the License, or * | ||
| * (at your option) any later version. * | ||
| * * | ||
| ***************************************************************************/ | ||
|
|
||
| #ifndef QGSGENERICFEATURESELECTIONMANAGER_H | ||
| #define QGSGENERICFEATURESELECTIONMANAGER_H | ||
|
|
||
| #include "qgsfeature.h" | ||
| #include "qgsifeatureselectionmanager.h" | ||
|
|
||
| /** | ||
| * This selection manager synchronizes a local set of selected features with an attribute table. | ||
| * If you want to synchronize the attribute table selection with the map canvas selection, you | ||
| * should use { @link QgsVectorLayerSelectionManager } instead. | ||
| */ | ||
| class CORE_EXPORT QgsGenericFeatureSelectionManager : public QgsIFeatureSelectionManager | ||
| { | ||
| Q_OBJECT | ||
|
|
||
| public: | ||
| explicit QgsGenericFeatureSelectionManager( QObject *parent = NULL ); | ||
| QgsGenericFeatureSelectionManager( const QgsFeatureIds& initialSelection, QObject *parent = NULL ); | ||
|
|
||
| // QgsIFeatureSelection interface | ||
| virtual int selectedFeatureCount(); | ||
| virtual void select( const QgsFeatureIds& ids ); | ||
| virtual void deselect( const QgsFeatureIds& ids ); | ||
| virtual void setSelectedFeatures( const QgsFeatureIds& ids ); | ||
| virtual const QgsFeatureIds& selectedFeaturesIds() const; | ||
|
|
||
| private: | ||
| QgsFeatureIds mSelectedFeatures; | ||
| }; | ||
|
|
||
| #endif // QGSGENERICFEATURESELECTIONMANAGER_H |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,86 @@ | ||
| /*************************************************************************** | ||
| qgsifeatureselection.h | ||
| -------------------------------------- | ||
| Date : 6.6.2013 | ||
| Copyright : (C) 2013 Matthias Kuhn | ||
| Email : matthias dot kuhn at gmx dot ch | ||
| *************************************************************************** | ||
| * * | ||
| * This program is free software; you can redistribute it and/or modify * | ||
| * it under the terms of the GNU General Public License as published by * | ||
| * the Free Software Foundation; either version 2 of the License, or * | ||
| * (at your option) any later version. * | ||
| * * | ||
| ***************************************************************************/ | ||
|
|
||
| #ifndef QGSIFEATURESELECTIONMANAGER_H | ||
| #define QGSIFEATURESELECTIONMANAGER_H | ||
|
|
||
| #include <QObject> | ||
|
|
||
| #include "qgsfeature.h" | ||
|
|
||
| /** | ||
| * Is an interface class to abstract feature selection handling. | ||
| * | ||
| * e.g. { @link QgsVectorLayer } implements this interface to manage its selections. | ||
| */ | ||
|
|
||
| class CORE_EXPORT QgsIFeatureSelectionManager : public QObject | ||
| { | ||
| Q_OBJECT | ||
|
|
||
| public: | ||
| QgsIFeatureSelectionManager( QObject* parent ) | ||
| : QObject( parent ) {} | ||
|
|
||
| /** | ||
| * The number of features that are selected in this layer | ||
| * | ||
| * @return See description | ||
| */ | ||
| virtual int selectedFeatureCount() = 0; | ||
|
|
||
| /** | ||
| * Select features | ||
| * | ||
| * @param ids Feature ids to select | ||
| */ | ||
| virtual void select( const QgsFeatureIds& ids ) = 0; | ||
|
|
||
| /** | ||
| * Deselect features | ||
| * | ||
| * @param ids Feature ids to deselect | ||
| */ | ||
| virtual void deselect( const QgsFeatureIds& ids ) = 0; | ||
|
|
||
| /** | ||
| * Change selection to the new set of features. Dismisses the current selection. | ||
| * Will emit the { @link selectionChanged( QgsFeatureIds, QgsFeatureIds, bool ) } signal with the | ||
| * clearAndSelect flag set. | ||
| * | ||
| * @param ids The ids which will be the new selection | ||
| */ | ||
| virtual void setSelectedFeatures( const QgsFeatureIds& ids ) = 0; | ||
|
|
||
| /** | ||
| * Return reference to identifiers of selected features | ||
| * | ||
| * @return A list of { @link QgsFeatureId } 's | ||
| * @see selectedFeatures() | ||
| */ | ||
| virtual const QgsFeatureIds &selectedFeaturesIds() const = 0; | ||
|
|
||
| signals: | ||
| /** | ||
| * This signal is emitted when selection was changed | ||
| * | ||
| * @param selected Newly selected feature ids | ||
| * @param deselected Ids of all features which have previously been selected but are not any more | ||
| * @param clearAndSelect In case this is set to true, the old selection was dismissed and the new selection corresponds to selected | ||
| */ | ||
| void selectionChanged( const QgsFeatureIds selected, const QgsFeatureIds deselected, const bool clearAndSelect ); | ||
| }; | ||
|
|
||
| #endif // QGSIFEATURESELECTIONMANAGER_H |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| /*************************************************************************** | ||
| qgsvectorlayerselectionmanager.cpp | ||
| -------------------------------------- | ||
| Date : 6.6.2013 | ||
| Copyright : (C) 2013 Matthias Kuhn | ||
| Email : matthias dot kuhn at gmx dot ch | ||
| *************************************************************************** | ||
| * * | ||
| * This program is free software; you can redistribute it and/or modify * | ||
| * it under the terms of the GNU General Public License as published by * | ||
| * the Free Software Foundation; either version 2 of the License, or * | ||
| * (at your option) any later version. * | ||
| * * | ||
| ***************************************************************************/ | ||
|
|
||
| #include "qgsvectorlayerselectionmanager.h" | ||
|
|
||
| #include "qgsvectorlayer.h" | ||
|
|
||
| QgsVectorLayerSelectionManager::QgsVectorLayerSelectionManager( QgsVectorLayer* layer, QObject* parent ) | ||
| : QgsIFeatureSelectionManager( parent ) | ||
| , mLayer( layer ) | ||
| { | ||
| connect( mLayer, SIGNAL( selectionChanged( QgsFeatureIds, QgsFeatureIds, bool ) ), this, SIGNAL( selectionChanged( QgsFeatureIds, QgsFeatureIds, bool ) ) ); | ||
| } | ||
|
|
||
| int QgsVectorLayerSelectionManager::selectedFeatureCount() | ||
| { | ||
| return mLayer->selectedFeatureCount(); | ||
| } | ||
|
|
||
| void QgsVectorLayerSelectionManager::select( const QgsFeatureIds& ids ) | ||
| { | ||
| mLayer->select( ids ); | ||
| } | ||
|
|
||
| void QgsVectorLayerSelectionManager::deselect( const QgsFeatureIds& ids ) | ||
| { | ||
| mLayer->deselect( ids ); | ||
| } | ||
|
|
||
| void QgsVectorLayerSelectionManager::setSelectedFeatures( const QgsFeatureIds& ids ) | ||
| { | ||
| mLayer->setSelectedFeatures( ids ); | ||
| } | ||
|
|
||
| const QgsFeatureIds& QgsVectorLayerSelectionManager::selectedFeaturesIds() const | ||
| { | ||
| return mLayer->selectedFeaturesIds(); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,71 @@ | ||
| /*************************************************************************** | ||
| qgsvectorlayerselectionmanager.h | ||
| -------------------------------------- | ||
| Date : 6.6.2013 | ||
| Copyright : (C) 2013 Matthias Kuhn | ||
| Email : matthias dot kuhn at gmx dot ch | ||
| *************************************************************************** | ||
| * * | ||
| * This program is free software; you can redistribute it and/or modify * | ||
| * it under the terms of the GNU General Public License as published by * | ||
| * the Free Software Foundation; either version 2 of the License, or * | ||
| * (at your option) any later version. * | ||
| * * | ||
| ***************************************************************************/ | ||
|
|
||
| #ifndef QGSVECTORLAYERSELECTIONMANAGER_H | ||
| #define QGSVECTORLAYERSELECTIONMANAGER_H | ||
|
|
||
| #include "qgsifeatureselectionmanager.h" | ||
|
|
||
| class QgsVectorLayer; | ||
|
|
||
| class CORE_EXPORT QgsVectorLayerSelectionManager : public QgsIFeatureSelectionManager | ||
| { | ||
| Q_OBJECT | ||
|
|
||
| public: | ||
| explicit QgsVectorLayerSelectionManager( QgsVectorLayer* layer, QObject *parent = 0 ); | ||
| /** | ||
| * The number of features that are selected in this layer | ||
| * | ||
| * @return See description | ||
| */ | ||
| virtual int selectedFeatureCount(); | ||
|
|
||
| /** | ||
| * Select features | ||
| * | ||
| * @param ids Feature ids to select | ||
| */ | ||
| virtual void select( const QgsFeatureIds& ids ); | ||
|
|
||
| /** | ||
| * Deselect features | ||
| * | ||
| * @param ids Feature ids to deselect | ||
| */ | ||
| virtual void deselect( const QgsFeatureIds& ids ); | ||
|
|
||
| /** | ||
| * Change selection to the new set of features. Dismisses the current selection. | ||
| * Will emit the { @link selectionChanged( QgsFeatureIds, QgsFeatureIds, bool ) } signal with the | ||
| * clearAndSelect flag set. | ||
| * | ||
| * @param ids The ids which will be the new selection | ||
| */ | ||
| virtual void setSelectedFeatures( const QgsFeatureIds& ids ); | ||
|
|
||
| /** | ||
| * Return reference to identifiers of selected features | ||
| * | ||
| * @return A list of { @link QgsFeatureIds } | ||
| * @see selectedFeatures() | ||
| */ | ||
| virtual const QgsFeatureIds& selectedFeaturesIds() const; | ||
|
|
||
| private: | ||
| QgsVectorLayer* mLayer; | ||
| }; | ||
|
|
||
| #endif // QGSVECTORLAYERSELECTIONMANAGER_H |