From 191e9f9b5b924a6e17e5700a62b790fdc4029848 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Thu, 3 Jun 2021 09:17:09 +1000 Subject: [PATCH] [gui] Show field types as icons in data defined field submenu, instead of appending the type as a text string It's easier to quickly identify types via the icons vs text. Also show field aliases if present. --- src/gui/qgspropertyoverridebutton.cpp | 11 ++++++++--- src/gui/qgspropertyoverridebutton.h | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/gui/qgspropertyoverridebutton.cpp b/src/gui/qgspropertyoverridebutton.cpp index d958e3a49fce..961d116ee73d 100644 --- a/src/gui/qgspropertyoverridebutton.cpp +++ b/src/gui/qgspropertyoverridebutton.cpp @@ -152,12 +152,14 @@ void QgsPropertyOverrideButton::init( int propertyKey, const QgsAbstractProperty void QgsPropertyOverrideButton::updateFieldLists() { mFieldNameList.clear(); - mFieldTypeList.clear(); + mFieldDisplayNameList.clear(); + mFieldIcons.clear(); if ( mVectorLayer ) { // store just a list of fields of unknown type or those that match the expected type const QgsFields fields = mVectorLayer->fields(); + int idx = 0; for ( const QgsField &f : fields ) { bool fieldMatch = false; @@ -201,8 +203,10 @@ void QgsPropertyOverrideButton::updateFieldLists() if ( fieldMatch ) { mFieldNameList << f.name(); - mFieldTypeList << fieldType; + mFieldDisplayNameList << f.displayNameWithAlias(); + mFieldIcons << fields.iconForField( idx, true ); } + idx++; } } } @@ -395,7 +399,8 @@ void QgsPropertyOverrideButton::aboutToShowMenu() for ( int j = 0; j < mFieldNameList.count(); ++j ) { QString fldname = mFieldNameList.at( j ); - QAction *act = mFieldsMenu->addAction( fldname + " (" + mFieldTypeList.at( j ) + ')' ); + QAction *act = mFieldsMenu->addAction( mFieldDisplayNameList.at( j ) ); + act->setIcon( mFieldIcons.at( j ) ); act->setData( QVariant( fldname ) ); if ( mFieldName == fldname ) { diff --git a/src/gui/qgspropertyoverridebutton.h b/src/gui/qgspropertyoverridebutton.h index e631384fb326..1bbab268f296 100644 --- a/src/gui/qgspropertyoverridebutton.h +++ b/src/gui/qgspropertyoverridebutton.h @@ -273,7 +273,8 @@ class GUI_EXPORT QgsPropertyOverrideButton: public QToolButton const QgsVectorLayer *mVectorLayer = nullptr; QStringList mFieldNameList; - QStringList mFieldTypeList; + QStringList mFieldDisplayNameList; + QList< QIcon > mFieldIcons; QString mExpressionString; QString mFieldName;