27 #include <QTableWidgetItem> 34 #include <QPushButton> 35 #include <QHBoxLayout> 36 #include <QFileDialog> 43 connect( layerComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsAttributeTypeLoadDialog::fillComboBoxes );
44 connect( keyComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [ = ](
int index ) { createPreview( index ); } );
45 connect( valueComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [ = ](
int index ) { createPreview( index ); } );
46 connect( previewButton, &QAbstractButton::pressed,
this, &QgsAttributeTypeLoadDialog::previewButtonPushed );
50 keyComboBox->setDisabled(
true );
51 valueComboBox->setDisabled(
true );
59 void QgsAttributeTypeLoadDialog::previewButtonPushed()
61 createPreview( valueComboBox->currentIndex(), true );
64 void QgsAttributeTypeLoadDialog::fillLayerList()
66 layerComboBox->blockSignals(
true );
67 layerComboBox->clear();
72 layerComboBox->addItem( vl->
name(), vl->
id() );
74 layerComboBox->setCurrentIndex( -1 );
75 layerComboBox->blockSignals(
false );
78 void QgsAttributeTypeLoadDialog::fillComboBoxes(
int layerIndex )
80 keyComboBox->blockSignals(
true );
81 valueComboBox->blockSignals(
true );
85 valueComboBox->clear();
91 QMap<QString, int>::iterator it = fieldMap.begin();
92 for ( ; it != fieldMap.end(); ++it )
94 keyComboBox->addItem( it.key(), it.value() );
95 valueComboBox->addItem( it.key(), it.value() );
99 keyComboBox->setEnabled(
nullptr != vLayer );
100 valueComboBox->setEnabled(
nullptr != vLayer );
102 keyComboBox->setCurrentIndex( -1 );
103 valueComboBox->setCurrentIndex( -1 );
105 keyComboBox->blockSignals(
false );
106 valueComboBox->blockSignals(
false );
109 void QgsAttributeTypeLoadDialog::createPreview(
int fieldIndex,
bool full )
111 previewTableWidget->clearContents();
113 for (
int i = previewTableWidget->rowCount() - 1; i > 0; i-- )
115 previewTableWidget->removeRow( i );
117 if ( layerComboBox->currentIndex() < 0 || fieldIndex < 0 )
122 int idx = keyComboBox->currentData().toInt();
123 int idx2 = valueComboBox->currentData().toInt();
130 attributeList.append( idx );
131 attributeList.append( idx2 );
141 if ( val1.isValid() && !val1.isNull() && !val1.toString().isEmpty()
142 && val2.isValid() && !val2.isNull() && !val2.toString().isEmpty() )
144 valueMap.insert( val1.toString(), val2.toString() );
146 if ( !full && valueMap.size() > 8 )
150 for ( QMap<QString, QVariant>::iterator mit = valueMap.begin(); mit != valueMap.end(); ++mit, row++ )
152 previewTableWidget->insertRow( row );
153 previewTableWidget->setItem( row, 0,
new QTableWidgetItem( mit.value().toString() ) );
154 previewTableWidget->setItem( row, 1,
new QTableWidgetItem( mit.key() ) );
165 return nullCheckBox->isChecked();
168 void QgsAttributeTypeLoadDialog::loadDataToValueMap()
171 int idx = keyComboBox->currentData().toInt();
172 int idx2 = valueComboBox->currentData().toInt();
179 attributeList.append( idx );
180 attributeList.append( idx2 );
188 if ( val.isValid() && !val.isNull() && !val.toString().isEmpty() )
190 mValueMap.insert( f.
attribute( idx2 ).toString(), val );
198 loadDataToValueMap();
Wrapper for iterator of features from vector data provider or vector layer.
Base class for all map layer types.
QMap< QString, int > fieldNameMap() const
Return a map where the key is the name of the field and the value is its index.
void setVectorLayer(QgsVectorLayer *layer)
Sets predefined vector layer for selection of data.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
void accept() override
Overloaded accept method which will write the feature field values, then delegate to QDialog::accept(...
QMap< QString, QVariant > & valueMap()
Getter to value map which is currently active.
QString id() const
Returns the layer's unique ID, which is used to access this layer from QgsProject.
QgsAttributeTypeLoadDialog(QgsVectorLayer *vl)
This class wraps a request for features to a vector layer (or directly its vector data provider)...
bool insertNull()
Returns true if the "Add NULL value" checkbox has been checked.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const override
Query the layer for features specified in request.
static QgsProject * instance()
Returns the QgsProject singleton instance.
QgsVectorDataProvider * dataProvider() override
Returns the layer's data provider.
QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
QList< int > QgsAttributeList
bool nextFeature(QgsFeature &f)
Geometry is not required. It may still be returned if e.g. required for a filter condition.
Represents a vector layer which manages a vector based data sets.
QVariant attribute(const QString &name) const
Lookup attribute value from attribute name.