[QGIS Commit] r11711 - trunk/qgis/src/app

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri Sep 25 07:31:10 EDT 2009


Author: mhugent
Date: 2009-09-25 07:31:09 -0400 (Fri, 25 Sep 2009)
New Revision: 11711

Modified:
   trunk/qgis/src/app/qgssearchquerybuilder.cpp
Log:
Speed up listing of field values in search dialog by using QSet

Modified: trunk/qgis/src/app/qgssearchquerybuilder.cpp
===================================================================
--- trunk/qgis/src/app/qgssearchquerybuilder.cpp	2009-09-25 08:27:38 UTC (rev 11710)
+++ trunk/qgis/src/app/qgssearchquerybuilder.cpp	2009-09-25 11:31:09 UTC (rev 11711)
@@ -117,6 +117,9 @@
   mModelValues->blockSignals( true );
   lstValues->setUpdatesEnabled( false );
 
+  /**MH: keep already inserted values in a set. Querying is much faster compared to QStandardItemModel::findItems*/
+  QSet<QString> insertedValues;
+
   while ( mLayer->nextFeature( feat ) &&
           ( limit == 0 || mModelValues->rowCount() != limit ) )
   {
@@ -130,12 +133,12 @@
     }
 
     // add item only if it's not there already
-    QList<QStandardItem *> items = mModelValues->findItems( value );
-    if ( items.isEmpty() )
+    if ( !insertedValues.contains( value ) )
     {
       QStandardItem *myItem = new QStandardItem( value );
       myItem->setEditable( false );
       mModelValues->insertRow( mModelValues->rowCount(), myItem );
+      insertedValues.insert( value );
     }
   }
   // Unblock for normal use



More information about the QGIS-commit mailing list