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.
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()
Returns the value map which is currently active.
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.
QString id() const
Returns the layer's unique ID, which is used to access this layer from QgsProject.
QMap< QString, int > fieldNameMap() const
Returns a map where the key is the name of the field and the value is its index.
QVariant attribute(const QString &name) const
Lookup attribute value from attribute name.
QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
static QgsProject * instance()
Returns the QgsProject singleton instance.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const FINAL
Query the layer for features specified in request.
QgsVectorDataProvider * dataProvider() FINAL
Returns the layer's data provider.
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.