From 2857896fbd368f67fa1165822f0925cbe06a051c Mon Sep 17 00:00:00 2001 From: Denis Rouzaud Date: Thu, 26 Mar 2020 11:54:00 +0100 Subject: [PATCH] remove non working caching of field values --- .../qgsexpressionbuilderwidget.sip.in | 4 +-- src/gui/qgsexpressionbuilderwidget.cpp | 32 ++++--------------- src/gui/qgsexpressionbuilderwidget.h | 5 +-- 3 files changed, 9 insertions(+), 32 deletions(-) diff --git a/python/gui/auto_generated/qgsexpressionbuilderwidget.sip.in b/python/gui/auto_generated/qgsexpressionbuilderwidget.sip.in index 02e571848cb..e69c73f50c1 100644 --- a/python/gui/auto_generated/qgsexpressionbuilderwidget.sip.in +++ b/python/gui/auto_generated/qgsexpressionbuilderwidget.sip.in @@ -62,8 +62,8 @@ Loads field names and values from the specified map. .. versionadded:: 2.12 -.. deprecated:: - use setLayer() and expressionTree()-> +.. deprecated:: QGIS 3.14 + this will not do anything, use setLayer() instead %End void setGeomCalculator( const QgsDistanceArea &da ); diff --git a/src/gui/qgsexpressionbuilderwidget.cpp b/src/gui/qgsexpressionbuilderwidget.cpp index 9b2da8018dd..4aad9f908a5 100644 --- a/src/gui/qgsexpressionbuilderwidget.cpp +++ b/src/gui/qgsexpressionbuilderwidget.cpp @@ -259,7 +259,7 @@ void QgsExpressionBuilderWidget::expressionTreeItemChanged( QgsExpressionItem *i bool isField = mLayer && item->getItemType() == QgsExpressionItem::Field; if ( isField ) { - loadFieldValues( mFieldValues.value( item->text() ) ); + mValuesModel->clear(); cbxValuesInUse->setVisible( formatterCanProvideAvailableValues( item->text() ) ); cbxValuesInUse->setChecked( false ); @@ -412,20 +412,8 @@ void QgsExpressionBuilderWidget::insertExpressionText( const QString &text ) void QgsExpressionBuilderWidget::loadFieldsAndValues( const QMap &fieldValues ) { - mFieldValues.clear(); - QgsFields fields; - for ( auto it = fieldValues.constBegin(); it != fieldValues.constEnd(); ++it ) - { - fields.append( QgsField( it.key() ) ); - const QStringList values = it.value(); - QVariantMap map; - for ( const QString &value : values ) - { - map.insert( value, value ); - } - mFieldValues.insert( it.key(), map ); - } - mExpressionTreeView->loadFieldNames( fields ); + Q_UNUSED( fieldValues ) + // This is not maintained and setLayer() should be used instead. } void QgsExpressionBuilderWidget::fillFieldValues( const QString &fieldName, int countLimit, bool forceUsedValues ) @@ -671,17 +659,6 @@ void QgsExpressionBuilderWidget::setParserError( bool parserError ) emit parserErrorChanged(); } -void QgsExpressionBuilderWidget::loadFieldValues( const QVariantMap &values ) -{ - mValuesModel->clear(); - for ( QVariantMap::ConstIterator it = values.constBegin(); it != values.constEnd(); ++ it ) - { - QStandardItem *item = new QStandardItem( it.key() ); - item->setData( it.value() ); - mValuesModel->appendRow( item ); - } -} - bool QgsExpressionBuilderWidget::evalError() const { return mEvalError; @@ -1134,6 +1111,9 @@ QString QgsExpressionBuilderWidget::loadFunctionHelp( QgsExpressionItem *express } + +// Menu provider + QMenu *QgsExpressionBuilderWidget::ExpressionTreeMenuProvider::createContextMenu( QgsExpressionItem *item ) { QMenu *menu = nullptr; diff --git a/src/gui/qgsexpressionbuilderwidget.h b/src/gui/qgsexpressionbuilderwidget.h index 85ea2029f4a..083ced58598 100644 --- a/src/gui/qgsexpressionbuilderwidget.h +++ b/src/gui/qgsexpressionbuilderwidget.h @@ -69,7 +69,7 @@ class GUI_EXPORT QgsExpressionBuilderWidget : public QWidget, private Ui::QgsExp * Loads field names and values from the specified map. * \note The field values must be quoted appropriately if they are strings. * \since QGIS 2.12 - * \deprecated use setLayer() and expressionTree()-> + * \deprecated since QGIS 3.14 this will not do anything, use setLayer() instead */ void loadFieldsAndValues( const QMap &fieldValues ); @@ -393,8 +393,6 @@ class GUI_EXPORT QgsExpressionBuilderWidget : public QWidget, private Ui::QgsExp */ void setParserError( bool parserError ); - void loadFieldValues( const QVariantMap &values ); - // Will hold items with // * a display string that matches the represented field values // * custom data in Qt::UserRole + 1 that contains a ready to use expression literal ('quoted string' or NULL or a plain number ) @@ -409,7 +407,6 @@ class GUI_EXPORT QgsExpressionBuilderWidget : public QWidget, private Ui::QgsExp QgsExpressionHighlighter *highlighter = nullptr; bool mExpressionValid = false; QgsDistanceArea mDa; - QMap mFieldValues; QgsExpressionContext mExpressionContext; QPointer< QgsProject > mProject; bool mEvalError = true;