use flag instead of enum

This commit is contained in:
Denis Rouzaud 2014-08-14 08:25:09 +02:00
parent faa330401b
commit 71d7445c83
3 changed files with 14 additions and 9 deletions

View File

@ -15,12 +15,13 @@ class QgsMapToolIdentify : QgsMapTool
LayerSelection
};
enum LayerType
enum Type
{
AllLayers,
VectorLayer,
RasterLayer
RasterLayer,
AllLayers
};
typedef QFlags<QgsMapToolIdentify::Type> LayerType;
struct IdentifyResult
{

View File

@ -252,11 +252,11 @@ void QgsMapToolIdentify::deactivate()
bool QgsMapToolIdentify::identifyLayer( QList<IdentifyResult> *results, QgsMapLayer *layer, QgsPoint point, QgsRectangle viewExtent, double mapUnitsPerPixel, LayerType layerType )
{
if ( layer->type() == QgsMapLayer::RasterLayer && ( layerType == AllLayers || layerType == RasterLayer ) )
if ( layer->type() == QgsMapLayer::RasterLayer && layerType.testFlag( RasterLayer ) )
{
return identifyRasterLayer( results, qobject_cast<QgsRasterLayer *>( layer ), point, viewExtent, mapUnitsPerPixel );
}
else if ( layer->type() == QgsMapLayer::VectorLayer && ( layerType == AllLayers || layerType == VectorLayer ) )
else if ( layer->type() == QgsMapLayer::VectorLayer && layerType.testFlag( VectorLayer ) )
{
return identifyVectorLayer( results, qobject_cast<QgsVectorLayer *>( layer ), point );
}

View File

@ -44,6 +44,7 @@ class QgsHighlight;
class GUI_EXPORT QgsMapToolIdentify : public QgsMapTool
{
Q_OBJECT
Q_FLAGS( LayerType )
public:
@ -56,12 +57,13 @@ class GUI_EXPORT QgsMapToolIdentify : public QgsMapTool
LayerSelection
};
enum LayerType
enum Type
{
AllLayers = -1,
VectorLayer,
RasterLayer
VectorLayer = 1,
RasterLayer = 2,
AllLayers = VectorLayer | RasterLayer
};
Q_DECLARE_FLAGS( LayerType, Type )
struct IdentifyResult
{
@ -178,4 +180,6 @@ class GUI_EXPORT QgsMapToolIdentify : public QgsMapTool
void handleMenuHover();
};
Q_DECLARE_OPERATORS_FOR_FLAGS( QgsMapToolIdentify::LayerType )
#endif