void QgsDualView::columnBoxInit() { // load fields QList<QgsField> fields = mLayer->fields().toList(); QString defaultField; // default expression: saved value QString displayExpression = mLayer->displayExpression(); if ( displayExpression.isEmpty() ) { // ... there isn't really much to display displayExpression = QStringLiteral( "'[Please define preview text]'" ); } mFeatureListPreviewButton->addAction( mActionExpressionPreview ); mFeatureListPreviewButton->addAction( mActionPreviewColumnsMenu ); Q_FOREACH ( const QgsField &field, fields ) { int fieldIndex = mLayer->fields().lookupField( field.name() ); if ( fieldIndex == -1 ) continue; QString fieldName = field.name(); if ( QgsGui::editorWidgetRegistry()->findBest( mLayer, fieldName ).type() != QLatin1String( "Hidden" ) ) { QIcon icon = mLayer->fields().iconForField( fieldIndex ); QString text = mLayer->attributeDisplayName( fieldIndex ); // Generate action for the preview popup button of the feature list QAction *previewAction = new QAction( icon, text, mFeatureListPreviewButton ); connect( previewAction, &QAction::triggered, this, [ = ] { previewColumnChanged( previewAction, fieldName ); } ); mPreviewColumnsMenu->addAction( previewAction ); if ( text == defaultField ) { mFeatureListPreviewButton->setDefaultAction( previewAction ); } } }
void QgsDualView::columnBoxInit() { // load fields QList<QgsField> fields = mLayer->fields().toList(); QString defaultField; // default expression: saved value QString displayExpression = mLayer->displayExpression(); if ( displayExpression.isEmpty() ) { // ... there isn't really much to display displayExpression = QStringLiteral( "'[Please define preview text]'" ); } mFeatureListPreviewButton->addAction( mActionExpressionPreview ); mFeatureListPreviewButton->addAction( mActionPreviewColumnsMenu ); const auto constFields = fields; for ( const QgsField &field : constFields ) { int fieldIndex = mLayer->fields().lookupField( field.name() ); if ( fieldIndex == -1 ) continue; QString fieldName = field.name(); if ( QgsGui::editorWidgetRegistry()->findBest( mLayer, fieldName ).type() != QLatin1String( "Hidden" ) ) { QIcon icon = mLayer->fields().iconForField( fieldIndex ); QString text = mLayer->attributeDisplayName( fieldIndex ); // Generate action for the preview popup button of the feature list QAction *previewAction = new QAction( icon, text, mFeatureListPreviewButton ); connect( previewAction, &QAction::triggered, this, [ = ] { previewColumnChanged( previewAction, fieldName ); } ); mPreviewColumnsMenu->addAction( previewAction ); if ( text == defaultField ) { mFeatureListPreviewButton->setDefaultAction( previewAction ); } } } QAction *sortByPreviewExpression = new QAction( QgsApplication::getThemeIcon( QStringLiteral( "sort.svg" ) ), tr( "Sort by preview expression" ), this ); connect( sortByPreviewExpression, &QAction::triggered, this, &QgsDualView::sortByPreviewExpression ); mFeatureListPreviewButton->addAction( sortByPreviewExpression ); QAction *separator = new QAction( mFeatureListPreviewButton ); separator->setSeparator( true ); mFeatureListPreviewButton->addAction( separator ); restoreRecentDisplayExpressions(); // If there is no single field found as preview if ( !mFeatureListPreviewButton->defaultAction() ) { mFeatureListView->setDisplayExpression( displayExpression ); mFeatureListPreviewButton->setDefaultAction( mActionExpressionPreview ); setDisplayExpression( mFeatureListView->displayExpression() ); } else { mFeatureListPreviewButton->defaultAction()->trigger(); } }