28 , mReferencedLayer( 0 )
31 connect( mComboRelation, SIGNAL( currentIndexChanged(
int ) ),
this, SLOT( relationChanged(
int ) ) );
45 if ( config.
contains(
"AllowNULL" ) )
47 mCbxAllowNull->setChecked( config[
"AllowNULL" ].toBool() );
50 if ( config.
contains(
"OrderByValue" ) )
52 mCbxOrderByValue->setChecked( config[
"OrderByValue" ].toBool() );
57 mCbxShowForm->setChecked( config[
"ShowForm" ].toBool() );
62 mComboRelation->setCurrentIndex( mComboRelation->findData( config[
"Relation" ].toString() ) );
63 relationChanged( mComboRelation->currentIndex() );
66 if ( config.
contains(
"MapIdentification" ) )
68 mCbxMapIdentification->setChecked( config[
"MapIdentification"].toBool() );
73 mCbxReadOnly->setChecked( config[
"ReadOnly"].toBool() );
76 if ( config.
contains(
"FilterFields" ) )
78 mFilterGroupBox->setChecked(
true );
79 Q_FOREACH (
const QString& fld, config[
"FilterFields"].toStringList() )
81 addFilterField( fld );
84 mCbxChainFilters->setChecked( config[
"ChainFilters"].toBool() );
88 void QgsRelationReferenceConfigDlg::relationChanged(
int idx )
90 QString relName = mComboRelation->itemData( idx ).toString();
94 mExpressionWidget->setLayer( mReferencedLayer );
95 if ( mReferencedLayer )
98 mCbxMapIdentification->setEnabled( mReferencedLayer->
hasGeometryType() );
104 void QgsRelationReferenceConfigDlg::on_mAddFilterButton_clicked()
106 Q_FOREACH (
QListWidgetItem* item, mAvailableFieldsList->selectedItems() )
108 addFilterField( item );
112 void QgsRelationReferenceConfigDlg::on_mRemoveFilterButton_clicked()
114 Q_FOREACH (
QListWidgetItem* item , mFilterFieldsList->selectedItems() )
116 mFilterFieldsList->takeItem( indexFromListWidgetItem( item ) );
117 mAvailableFieldsList->addItem( item );
124 myConfig.
insert(
"AllowNULL", mCbxAllowNull->isChecked() );
125 myConfig.
insert(
"OrderByValue", mCbxOrderByValue->isChecked() );
126 myConfig.
insert(
"ShowForm", mCbxShowForm->isChecked() );
127 myConfig.
insert(
"MapIdentification", mCbxMapIdentification->isEnabled() && mCbxMapIdentification->isChecked() );
128 myConfig.
insert(
"ReadOnly", mCbxReadOnly->isChecked() );
129 myConfig.
insert(
"Relation", mComboRelation->itemData( mComboRelation->currentIndex() ) );
131 if ( mFilterGroupBox->isChecked() )
134 for (
int i = 0; i < mFilterFieldsList->count(); i++ )
136 filterFields << mFilterFieldsList->item( i )->data( Qt::UserRole ).toString();
138 myConfig.
insert(
"FilterFields", filterFields );
140 myConfig.
insert(
"ChainFilters", mCbxChainFilters->isChecked() );
143 if ( mReferencedLayer )
151 void QgsRelationReferenceConfigDlg::loadFields()
153 mAvailableFieldsList->clear();
154 mFilterFieldsList->clear();
156 if ( mReferencedLayer )
160 for (
int i = 0; i < flds.
count(); i++ )
163 mAvailableFieldsList->item( mAvailableFieldsList->count() - 1 )->setData( Qt::UserRole, flds.
at( i ).
name() );
168 void QgsRelationReferenceConfigDlg::addFilterField(
const QString& field )
170 for (
int i = 0; i < mAvailableFieldsList->count(); i++ )
172 if ( mAvailableFieldsList->item( i )->data( Qt::UserRole ).toString() ==
field )
174 addFilterField( mAvailableFieldsList->item( i ) );
180 void QgsRelationReferenceConfigDlg::addFilterField(
QListWidgetItem* item )
182 mAvailableFieldsList->takeItem( indexFromListWidgetItem( item ) );
183 mFilterFieldsList->addItem( item );
186 int QgsRelationReferenceConfigDlg::indexFromListWidgetItem(
QListWidgetItem* item )
190 for (
int i = 0; i < lw->
count(); i++ )
192 if ( lw->
item( i ) == item )
const QString & name() const
Gets the name of the field.
virtual QgsEditorWidgetConfig config() override
Create a configuration from the current GUI state.
bool contains(const Key &key) const
QgsVectorLayer * referencedLayer() const
Access the referenced (parent) layer.
Container of fields for a vector layer.
void setDisplayExpression(const QString &displayExpression)
Set the preview expression, used to create a human readable preview string.
QList< QgsRelation > referencingRelations(int idx)
Get relations, where the foreign key is on this layer.
const QString displayExpression()
Get the preview expression, used to create a human readable preview string.
virtual void setConfig(const QgsEditorWidgetConfig &config) override
Update the configuration widget to represent the given configuration.
QgsRelation relation(const QString &id) const
Get access to a relation by its id.
const QString & id() const
The id.
int count() const
Return number of items.
QString attributeAlias(int attributeIndex) const
Returns the alias of an attribute name or an empty string if there is no alias.
const QgsField & at(int i) const
Get field at particular index (must be in range 0..N-1)
QString referencedLayerId() const
Access the referenced (parent) layer's id.
bool hasGeometryType() const
Returns true if this is a geometry layer and false in case of NoGeometry (table only) or UnknownGeome...
static QgsProject * instance()
access to canonical QgsProject instance
iterator insert(const Key &key, const T &value)
const QgsFields & pendingFields() const
returns field list in the to-be-committed state
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Represents a vector layer which manages a vector based data sets.
QgsRelationManager * relationManager() const
QgsRelationReferenceConfigDlg(QgsVectorLayer *vl, int fieldIdx, QWidget *parent)