diff --git a/src/app/qgsattributesformproperties.cpp b/src/app/qgsattributesformproperties.cpp index 14cfe583661..82856675d91 100644 --- a/src/app/qgsattributesformproperties.cpp +++ b/src/app/qgsattributesformproperties.cpp @@ -60,7 +60,6 @@ void QgsAttributesFormProperties::init() void QgsAttributesFormProperties::loadAttributeTypeDialog() { - FieldConfig cfg; int index = mDragTree->mIndexedWidgets.indexOf( mDragTree->currentItem() ); @@ -118,7 +117,6 @@ void QgsAttributesFormProperties::loadAttributeTypeDialog() void QgsAttributesFormProperties::storeAttributeTypeDialog() { - FieldConfig cfg; cfg.mEditable = mAttributeTypeDialog->fieldEditable(); diff --git a/src/app/qgsattributetypedialog.cpp b/src/app/qgsattributetypedialog.cpp index d6a0086b0e4..5c978e69d79 100644 --- a/src/app/qgsattributetypedialog.cpp +++ b/src/app/qgsattributetypedialog.cpp @@ -48,22 +48,18 @@ QgsAttributeTypeDialog::QgsAttributeTypeDialog( QgsVectorLayer *vl, int fieldIdx setWindowTitle( tr( "Edit Widget Properties - %1 (%2)" ).arg( vl->fields().at( fieldIdx ).name(), vl->name() ) ); QMapIterator it( QgsGui::editorWidgetRegistry()->factories() ); + QStandardItemModel *widgetTypeModel = qobject_cast( mWidgetTypeComboBox->model() ); while ( it.hasNext() ) { it.next(); - QListWidgetItem *item = new QListWidgetItem( selectionListWidget ); - item->setText( it.value()->name() ); - item->setData( Qt::UserRole, it.key() ); + mWidgetTypeComboBox->addItem( it.value()->name(), it.key() ); + QStandardItem *item = widgetTypeModel->item( mWidgetTypeComboBox->count() - 1 ); + item->setData( it.key(), Qt::UserRole ); if ( !it.value()->supportsField( vl, fieldIdx ) ) item->setFlags( item->flags() & ~Qt::ItemIsEnabled ); - selectionListWidget->addItem( item ); } - // Set required list width based on content + twice the border width - selectionListWidget->setMinimumWidth( selectionListWidget->sizeHintForColumn( 0 ) - + 2 ); - selectionListWidget->setMaximumWidth( selectionListWidget->sizeHintForColumn( 0 ) - + 2 ); + connect( mWidgetTypeComboBox, static_cast< void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsAttributeTypeDialog::onCurrentWidgetChanged ); if ( vl->fields().fieldOrigin( fieldIdx ) == QgsFields::OriginJoin || vl->fields().fieldOrigin( fieldIdx ) == QgsFields::OriginExpression ) @@ -105,7 +101,7 @@ QgsAttributeTypeDialog::~QgsAttributeTypeDialog() const QString QgsAttributeTypeDialog::editorWidgetType() { - QListWidgetItem *item = selectionListWidget->currentItem(); + QStandardItem *item = currentItem(); if ( item ) { return item->data( Qt::UserRole ).toString(); @@ -118,7 +114,7 @@ const QString QgsAttributeTypeDialog::editorWidgetType() const QString QgsAttributeTypeDialog::editorWidgetText() { - QListWidgetItem *item = selectionListWidget->currentItem(); + QStandardItem *item = currentItem(); if ( item ) { return item->text(); @@ -131,7 +127,7 @@ const QString QgsAttributeTypeDialog::editorWidgetText() const QVariantMap QgsAttributeTypeDialog::editorWidgetConfig() { - QListWidgetItem *item = selectionListWidget->currentItem(); + QStandardItem *item = currentItem(); if ( item ) { QString widgetType = item->data( Qt::UserRole ).toString(); @@ -147,15 +143,7 @@ const QVariantMap QgsAttributeTypeDialog::editorWidgetConfig() void QgsAttributeTypeDialog::setEditorWidgetType( const QString &type ) { - for ( int i = 0; i < selectionListWidget->count(); i++ ) - { - QListWidgetItem *item = selectionListWidget->item( i ); - if ( item->data( Qt::UserRole ).toString() == type ) - { - selectionListWidget->setCurrentItem( item ); - break; - } - } + mWidgetTypeComboBox->setCurrentIndex( mWidgetTypeComboBox->findData( type ) ); if ( mEditorConfigWidgets.contains( type ) ) { @@ -313,6 +301,14 @@ QgsExpressionContext QgsAttributeTypeDialog::createExpressionContext() const return context; } +void QgsAttributeTypeDialog::onCurrentWidgetChanged( int index ) +{ + QStandardItem *item = currentItem(); + const QString editType = item ? item->data( Qt::UserRole ).toString() : QString(); + + setEditorWidgetType( editType ); +} + QString QgsAttributeTypeDialog::constraintExpression() const { return constraintExpressionWidget->asExpression(); @@ -328,13 +324,6 @@ void QgsAttributeTypeDialog::setLabelOnTop( bool onTop ) labelOnTopCheckBox->setChecked( onTop ); } -void QgsAttributeTypeDialog::on_selectionListWidget_currentRowChanged( int index ) -{ - const QString editType = selectionListWidget->item( index )->data( Qt::UserRole ).toString(); - - setEditorWidgetType( editType ); -} - void QgsAttributeTypeDialog::defaultExpressionChanged() { QString expression = mExpressionWidget->expression(); @@ -377,3 +366,9 @@ void QgsAttributeTypeDialog::defaultExpressionChanged() mDefaultPreviewLabel->setText( "" + previewText + "" ); } + +QStandardItem *QgsAttributeTypeDialog::currentItem() const +{ + QStandardItemModel *widgetTypeModel = qobject_cast( mWidgetTypeComboBox->model() ); + return widgetTypeModel->item( mWidgetTypeComboBox->currentIndex() ); +} diff --git a/src/app/qgsattributetypedialog.h b/src/app/qgsattributetypedialog.h index 8add4716fdd..554205a1a5a 100644 --- a/src/app/qgsattributetypedialog.h +++ b/src/app/qgsattributetypedialog.h @@ -25,6 +25,7 @@ #include "qgis_app.h" class QWidget; +class QStandardItem; class APP_EXPORT QgsAttributeTypeDialog: public QWidget, private Ui::QgsAttributeTypeDialog, QgsExpressionContextGenerator { @@ -176,7 +177,7 @@ class APP_EXPORT QgsAttributeTypeDialog: public QWidget, private Ui::QgsAttribut * Slot to handle change of index in combobox to select correct page * \param index index of value in combobox */ - void on_selectionListWidget_currentRowChanged( int index ); + void onCurrentWidgetChanged( int index ); void defaultExpressionChanged(); @@ -189,6 +190,8 @@ class APP_EXPORT QgsAttributeTypeDialog: public QWidget, private Ui::QgsAttribut //! Cached configuration dialog (lazy loaded) QMap< QString, QgsEditorConfigWidget * > mEditorConfigWidgets; + QStandardItem *currentItem() const; + QgsFeature mPreviewFeature; }; diff --git a/src/ui/qgsattributetypeedit.ui b/src/ui/qgsattributetypeedit.ui index 528d68492d2..c58d4bd9055 100644 --- a/src/ui/qgsattributetypeedit.ui +++ b/src/ui/qgsattributetypeedit.ui @@ -14,6 +14,67 @@ Edit Widget Properties + + + + + + Editable + + + true + + + + + + + Label on top + + + false + + + + + + + Defaults + + + + + + Default value + + + + + + + Preview + + + + + + + Qt::StrongFocus + + + + + + + + + + + + + + + @@ -104,89 +165,18 @@ - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - Editable - - - true - - - - - - - Label on top - - - false - - - - - - - Defaults - - - - - - Default value - - - - - - - Preview - - - - - - - Qt::StrongFocus - - - - - - - - - - - - - - - Widget Type - - - - - + + + + + @@ -213,7 +203,6 @@ - selectionListWidget isFieldEditableCheckBox labelOnTopCheckBox mExpressionWidget @@ -227,38 +216,5 @@ mCheckBoxEnforceExpression - - - buttonBox - accepted() - QgsAttributeTypeDialog - accept() - - - 520 - 435 - - - 157 - 274 - - - - - buttonBox - rejected() - QgsAttributeTypeDialog - reject() - - - 588 - 435 - - - 286 - 274 - - - - +