mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Move QObject declaration to header
This commit is contained in:
parent
986aa713ef
commit
9a2e015158
@ -17,6 +17,9 @@
|
||||
#include <qgsrelationeditorwidget.h>
|
||||
%End
|
||||
|
||||
|
||||
|
||||
|
||||
class QgsRelationEditorWidget : QgsCollapsibleGroupBox
|
||||
{
|
||||
|
||||
|
@ -30,74 +30,55 @@
|
||||
#include "qgslogger.h"
|
||||
#include "qgsvectorlayerutils.h"
|
||||
#include "qgsmapcanvas.h"
|
||||
#include "qgsvectorlayerselectionmanager.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QMessageBox>
|
||||
|
||||
/// @cond PRIVATE
|
||||
|
||||
/**
|
||||
* This class is used to filter the current vector layer selection to features matching the given request.
|
||||
* Relation editor widget use it in order to get selected feature for the current relation.
|
||||
*/
|
||||
class QgsFilteredSelectionManager : public QgsVectorLayerSelectionManager
|
||||
///
|
||||
QgsFilteredSelectionManager::QgsFilteredSelectionManager( QgsVectorLayer *layer, const QgsFeatureRequest &request, QObject *parent )
|
||||
: QgsVectorLayerSelectionManager( layer, parent )
|
||||
, mRequest( request )
|
||||
{
|
||||
Q_OBJECT
|
||||
for ( auto fid : layer->selectedFeatureIds() )
|
||||
if ( mRequest.acceptFeature( layer->getFeature( fid ) ) )
|
||||
mSelectedFeatureIds << fid;
|
||||
|
||||
public:
|
||||
QgsFilteredSelectionManager( QgsVectorLayer *layer, const QgsFeatureRequest &request, QObject *parent = nullptr )
|
||||
: QgsVectorLayerSelectionManager( layer, parent )
|
||||
, mRequest( request )
|
||||
{
|
||||
for ( auto fid : layer->selectedFeatureIds() )
|
||||
if ( mRequest.acceptFeature( layer->getFeature( fid ) ) )
|
||||
mSelectedFeatureIds << fid;
|
||||
connect( layer, &QgsVectorLayer::selectionChanged, this, &QgsFilteredSelectionManager::onSelectionChanged );
|
||||
}
|
||||
|
||||
connect( layer, &QgsVectorLayer::selectionChanged, this, &QgsFilteredSelectionManager::onSelectionChanged );
|
||||
}
|
||||
const QgsFeatureIds &QgsFilteredSelectionManager::selectedFeatureIds() const
|
||||
{
|
||||
return mSelectedFeatureIds;
|
||||
}
|
||||
|
||||
const QgsFeatureIds &selectedFeatureIds() const override
|
||||
{
|
||||
return mSelectedFeatureIds;
|
||||
}
|
||||
int QgsFilteredSelectionManager::selectedFeatureCount()
|
||||
{
|
||||
return mSelectedFeatureIds.count();
|
||||
}
|
||||
|
||||
void QgsFilteredSelectionManager::onSelectionChanged( const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect )
|
||||
{
|
||||
QgsFeatureIds lselected = selected;
|
||||
if ( clearAndSelect )
|
||||
{
|
||||
mSelectedFeatureIds.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
for ( auto fid : deselected )
|
||||
mSelectedFeatureIds.remove( fid );
|
||||
}
|
||||
|
||||
int selectedFeatureCount() override
|
||||
{
|
||||
return mSelectedFeatureIds.count();
|
||||
}
|
||||
for ( auto fid : selected )
|
||||
if ( mRequest.acceptFeature( layer()->getFeature( fid ) ) )
|
||||
mSelectedFeatureIds << fid;
|
||||
else
|
||||
lselected.remove( fid );
|
||||
|
||||
private slots:
|
||||
|
||||
void onSelectionChanged( const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect ) override
|
||||
{
|
||||
QgsFeatureIds lselected = selected;
|
||||
if ( clearAndSelect )
|
||||
{
|
||||
mSelectedFeatureIds.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
for ( auto fid : deselected )
|
||||
mSelectedFeatureIds.remove( fid );
|
||||
}
|
||||
|
||||
for ( auto fid : selected )
|
||||
if ( mRequest.acceptFeature( layer()->getFeature( fid ) ) )
|
||||
mSelectedFeatureIds << fid;
|
||||
else
|
||||
lselected.remove( fid );
|
||||
|
||||
emit selectionChanged( lselected, deselected, clearAndSelect );
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
QgsFeatureRequest mRequest;
|
||||
QgsFeatureIds mSelectedFeatureIds;
|
||||
};
|
||||
emit selectionChanged( lselected, deselected, clearAndSelect );
|
||||
}
|
||||
|
||||
/// @endcond
|
||||
|
||||
|
@ -25,10 +25,10 @@
|
||||
#include "qgscollapsiblegroupbox.h"
|
||||
#include "qgsdualview.h"
|
||||
#include "qgsrelation.h"
|
||||
#include "qgsvectorlayerselectionmanager.h"
|
||||
#include "qgis_gui.h"
|
||||
|
||||
class QgsFeature;
|
||||
class QgsVectorLayerSelectionManager;
|
||||
class QgsVectorLayer;
|
||||
class QgsVectorLayerTools;
|
||||
|
||||
@ -41,6 +41,37 @@ class QgsVectorLayerTools;
|
||||
% End
|
||||
#endif
|
||||
|
||||
|
||||
/// @cond PRIVATE
|
||||
#ifndef SIP_RUN
|
||||
|
||||
/**
|
||||
* This class is used to filter the current vector layer selection to features matching the given request.
|
||||
* Relation editor widget use it in order to get selected feature for the current relation.
|
||||
*/
|
||||
class QgsFilteredSelectionManager : public QgsVectorLayerSelectionManager
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QgsFilteredSelectionManager( QgsVectorLayer *layer, const QgsFeatureRequest &request, QObject *parent = nullptr );
|
||||
|
||||
const QgsFeatureIds &selectedFeatureIds() const override;
|
||||
int selectedFeatureCount() override;
|
||||
|
||||
private slots:
|
||||
|
||||
void onSelectionChanged( const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect ) override;
|
||||
|
||||
private:
|
||||
|
||||
QgsFeatureRequest mRequest;
|
||||
QgsFeatureIds mSelectedFeatureIds;
|
||||
};
|
||||
#endif
|
||||
/// @endcond
|
||||
|
||||
|
||||
/**
|
||||
* \ingroup gui
|
||||
* \class QgsRelationEditorWidget
|
||||
|
Loading…
x
Reference in New Issue
Block a user