From 486e4c0eba4da0359af089517816e9e14c2b90d6 Mon Sep 17 00:00:00 2001 From: jef Date: Sun, 8 Nov 2009 19:50:24 +0000 Subject: [PATCH] cleaner handling of identify results git-svn-id: http://svn.osgeo.org/qgis/trunk@12033 c8812cc2-4d05-0410-92ff-de0c093fc19c --- src/app/qgsmaptoolidentify.cpp | 41 ++++++++++++++-------------------- src/app/qgsmaptoolidentify.h | 4 +--- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/app/qgsmaptoolidentify.cpp b/src/app/qgsmaptoolidentify.cpp index 14b23324e56..1736813f9f2 100644 --- a/src/app/qgsmaptoolidentify.cpp +++ b/src/app/qgsmaptoolidentify.cpp @@ -45,8 +45,6 @@ QgsMapToolIdentify::QgsMapToolIdentify( QgsMapCanvas* canvas ) // set cursor QPixmap myIdentifyQPixmap = QPixmap(( const char ** ) identify_cursor ); mCursor = QCursor( myIdentifyQPixmap, 1, 1 ); - - mResults = new QgsIdentifyResults( canvas, mCanvas->window() ); } QgsMapToolIdentify::~QgsMapToolIdentify() @@ -57,6 +55,14 @@ QgsMapToolIdentify::~QgsMapToolIdentify() } } +QgsIdentifyResults *QgsMapToolIdentify::results() +{ + if ( !mResults ) + mResults = new QgsIdentifyResults( mCanvas, mCanvas->window() ); + + return mResults; +} + void QgsMapToolIdentify::canvasMoveEvent( QMouseEvent * e ) { } @@ -72,11 +78,7 @@ void QgsMapToolIdentify::canvasReleaseEvent( QMouseEvent * e ) return; } - if ( !mResults ) - { - mResults = new QgsIdentifyResults( mCanvas, mCanvas->window() ); - } - mResults->clear(); + results()->clear(); QSettings settings; int identifyMode = settings.value( "/Map/identifyMode", 0 ).toInt(); @@ -139,8 +141,8 @@ void QgsMapToolIdentify::canvasReleaseEvent( QMouseEvent * e ) if ( res ) { - mResults->show(); - mResults->raise(); + results()->show(); + results()->raise(); } else { @@ -148,11 +150,11 @@ void QgsMapToolIdentify::canvasReleaseEvent( QMouseEvent * e ) bool myDockFlag = mySettings.value( "/qgis/dockIdentifyResults", false ).toBool(); if ( !myDockFlag ) { - mResults->hide(); + results()->hide(); } else { - mResults->clear(); + results()->clear(); } QMessageBox::information( 0, tr( "Identify results" ), tr( "No features at this position found." ) ); } @@ -160,17 +162,13 @@ void QgsMapToolIdentify::canvasReleaseEvent( QMouseEvent * e ) void QgsMapToolIdentify::activate() { - if ( !mResults ) - { - mResults = new QgsIdentifyResults( mCanvas, mCanvas->window() ); - } - mResults->activate(); + results()->activate(); QgsMapTool::activate(); } void QgsMapToolIdentify::deactivate() { - mResults->deactivate(); + results()->deactivate(); QgsMapTool::deactivate(); } @@ -327,7 +325,7 @@ bool QgsMapToolIdentify::identifyVectorLayer( QgsVectorLayer *layer, int x, int derivedAttributes.insert( tr( "feature id" ), fid < 0 ? tr( "new feature" ) : QString::number( fid ) ); - mResults->addFeature( layer, fid, displayField, displayValue, attributes, derivedAttributes ); + results()->addFeature( layer, fid, displayField, displayValue, attributes, derivedAttributes ); } QgsDebugMsg( "Feature count on identify: " + QString::number( featureCount ) ); @@ -388,18 +386,13 @@ bool QgsMapToolIdentify::identifyRasterLayer( QgsRasterLayer *layer, int x, int if ( res ) { derivedAttributes.insert( tr( "(clicked coordinate)" ), idPoint.toString() ); - mResults->addFeature( layer, -1, type, "", attributes, derivedAttributes ); + results()->addFeature( layer, -1, type, "", attributes, derivedAttributes ); } return res; } -void QgsMapToolIdentify::resultsDialogGone() -{ - mResults = 0; -} - void QgsMapToolIdentify::convertMeasurement( QgsDistanceArea &calc, double &measure, QGis::UnitType &u, bool isArea ) { // Helper for converting between meters and feet diff --git a/src/app/qgsmaptoolidentify.h b/src/app/qgsmaptoolidentify.h index bb965006333..45084efff6b 100644 --- a/src/app/qgsmaptoolidentify.h +++ b/src/app/qgsmaptoolidentify.h @@ -82,9 +82,7 @@ class QgsMapToolIdentify : public QgsMapTool const QMap< QString, QString > &attributes, const QMap< QString, QString > &derivedAttributes ); - private slots: - // Let us know when the QgsIdentifyResults dialog box has been closed - void resultsDialogGone(); + QgsIdentifyResults *results(); }; #endif