19#include "moc_qgsattributetypeloaddialog.cpp"
27#include <QTableWidgetItem>
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 );
59void QgsAttributeTypeLoadDialog::previewButtonPushed()
61 createPreview( valueComboBox->currentIndex(),
true );
64void QgsAttributeTypeLoadDialog::fillLayerList()
66 layerComboBox->blockSignals(
true );
67 layerComboBox->clear();
73 layerComboBox->addItem( vl->
name(), vl->
id() );
75 layerComboBox->setCurrentIndex( -1 );
76 layerComboBox->blockSignals(
false );
79void QgsAttributeTypeLoadDialog::fillComboBoxes(
int layerIndex )
81 keyComboBox->blockSignals(
true );
82 valueComboBox->blockSignals(
true );
86 valueComboBox->clear();
88 QgsVectorLayer *vLayer = qobject_cast<QgsVectorLayer *>( layerIndex < 0 ?
nullptr :
QgsProject::instance()->mapLayer( layerComboBox->itemData( layerIndex ).toString() ) );
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 );
110void 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 const int idx = keyComboBox->currentData().toInt();
124 const int idx2 = valueComboBox->currentData().toInt();
126 QgsVectorLayer *vLayer = qobject_cast<QgsVectorLayer *>( dataLayer );
131 attributeList.append( idx );
132 attributeList.append( idx2 );
140 const QVariant val1 = f.
attribute( idx );
141 const QVariant val2 = f.
attribute( idx2 );
145 valueMap.insert( val1.toString(), val2.toString() );
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();
169void QgsAttributeTypeLoadDialog::loadDataToValueMap()
172 const int idx = keyComboBox->currentData().toInt();
173 const int idx2 = valueComboBox->currentData().toInt();
175 QgsVectorLayer *vLayer = qobject_cast<QgsVectorLayer *>( dataLayer );
180 attributeList.append( idx );
181 attributeList.append( idx2 );
191 mValueMap.insert( f.
attribute( idx2 ).toString(), val );
199 loadDataToValueMap();
@ NoGeometry
Geometry is not required. It may still be returned if e.g. required for a filter condition.
void accept() override
Overloaded accept method which will write the feature field values, then delegate to QDialog::accept(...
QgsAttributeTypeLoadDialog(QgsVectorLayer *vl)
bool insertNull()
Returns true if the "Add NULL value" checkbox has been checked.
QMap< QString, QVariant > & valueMap()
Returns the value map which is currently active.
void setVectorLayer(QgsVectorLayer *layer)
Sets predefined vector layer for selection of data.
Wrapper for iterator of features from vector data provider or vector layer.
bool nextFeature(QgsFeature &f)
Fetch next feature and stores in f, returns true on success.
This class wraps a request for features to a vector layer (or directly its vector data provider).
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Q_INVOKABLE QVariant attribute(const QString &name) const
Lookup attribute value by attribute name.
Base class for all map layer types.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
static QgsProject * instance()
Returns the QgsProject singleton instance.
Q_INVOKABLE QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
QMap< QString, QgsMapLayer * > mapLayers(const bool validOnly=false) const
Returns a map of all registered layers by layer ID.
static bool isNull(const QVariant &variant, bool silenceNullWarnings=false)
Returns true if the specified variant should be considered a NULL value.
QMap< QString, int > fieldNameMap() const
Returns a map where the key is the name of the field and the value is its index.
Represents a vector layer which manages a vector based data sets.
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