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();
73 layerComboBox->addItem( vl->
name(), vl->
id() );
75 layerComboBox->setCurrentIndex( -1 );
76 layerComboBox->blockSignals(
false );
79 void QgsAttributeTypeLoadDialog::fillComboBoxes(
int layerIndex )
81 keyComboBox->blockSignals(
true );
82 valueComboBox->blockSignals(
true );
86 valueComboBox->clear();
92 QMap<QString, int>::iterator it = fieldMap.begin();
93 for ( ; it != fieldMap.end(); ++it )
95 keyComboBox->addItem( it.key(), it.value() );
96 valueComboBox->addItem( it.key(), it.value() );
100 keyComboBox->setEnabled(
nullptr != vLayer );
101 valueComboBox->setEnabled(
nullptr != vLayer );
103 keyComboBox->setCurrentIndex( -1 );
104 valueComboBox->setCurrentIndex( -1 );
106 keyComboBox->blockSignals(
false );
107 valueComboBox->blockSignals(
false );
110 void QgsAttributeTypeLoadDialog::createPreview(
int fieldIndex,
bool full )
112 previewTableWidget->clearContents();
114 for (
int i = previewTableWidget->rowCount() - 1; i > 0; i-- )
116 previewTableWidget->removeRow( i );
118 if ( layerComboBox->currentIndex() < 0 || fieldIndex < 0 )
123 int idx = keyComboBox->currentData().toInt();
124 int idx2 = valueComboBox->currentData().toInt();
131 attributeList.append( idx );
132 attributeList.append( idx2 );
142 if ( val1.isValid() && !val1.isNull() && !val1.toString().isEmpty()
143 && val2.isValid() && !val2.isNull() && !val2.toString().isEmpty() )
145 valueMap.insert( val1.toString(), val2.toString() );
147 if ( !full && valueMap.size() > 8 )
151 for ( QMap<QString, QVariant>::iterator mit = valueMap.begin(); mit != valueMap.end(); ++mit, row++ )
153 previewTableWidget->insertRow( row );
154 previewTableWidget->setItem( row, 0,
new QTableWidgetItem( mit.value().toString() ) );
155 previewTableWidget->setItem( row, 1,
new QTableWidgetItem( mit.key() ) );
166 return nullCheckBox->isChecked();
169 void QgsAttributeTypeLoadDialog::loadDataToValueMap()
172 int idx = keyComboBox->currentData().toInt();
173 int idx2 = valueComboBox->currentData().toInt();
180 attributeList.append( idx );
181 attributeList.append( idx2 );
189 if ( val.isValid() && !val.isNull() && !val.toString().isEmpty() )
191 mValueMap.insert( f.
attribute( idx2 ).toString(), val );
199 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
Returns 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()
Returns the 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.
QMap< QString, QgsMapLayer * > mapLayers(const bool validOnly=false) const
Returns a map of all registered layers by layer ID.
static QgsProject * instance()
Returns the QgsProject singleton instance.
QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const FINAL
Queries the layer for features specified in request.
QgsVectorDataProvider * dataProvider() FINAL
Returns the layer's data provider, it may be nullptr.
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.