Skip to content

Commit 5e21c55

Browse files
committedFeb 18, 2014
[relations] Preview expression from relation reference field config dialog
Fix #9538
1 parent 517b859 commit 5e21c55

File tree

3 files changed

+62
-15
lines changed

3 files changed

+62
-15
lines changed
 

‎src/gui/editorwidgets/qgsrelreferenceconfigdlg.cpp

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "qgsproject.h"
2121
#include "qgsrelationmanager.h"
2222
#include "qgsvectorlayer.h"
23+
#include "qgsexpressionbuilderdialog.h"
2324

2425
QgsRelReferenceConfigDlg::QgsRelReferenceConfigDlg( QgsVectorLayer* vl, int fieldIdx, QWidget* parent )
2526
: QgsEditorConfigWidget( vl, fieldIdx, parent )
@@ -28,13 +29,14 @@ QgsRelReferenceConfigDlg::QgsRelReferenceConfigDlg( QgsVectorLayer* vl, int fiel
2829

2930
foreach ( const QgsRelation& relation, vl->referencingRelations( fieldIdx ) )
3031
{
31-
QgsField fld = relation.fieldPairs().first().second;
3232
mComboRelation->addItem( QString( "%1 (%2)" ).arg( relation.id(), relation.referencedLayerId() ), relation.id() );
3333
if ( relation.referencedLayer() )
3434
{
3535
mTxtDisplayExpression->setText( relation.referencedLayer()->displayExpression() );
3636
}
3737
}
38+
39+
connect( mPbnPreviewExpression, SIGNAL( clicked() ), this, SLOT( previewExpressionBuilder() ) );
3840
}
3941

4042
void QgsRelReferenceConfigDlg::setConfig( const QMap<QString, QVariant>& config )
@@ -74,5 +76,28 @@ QgsEditorWidgetConfig QgsRelReferenceConfigDlg::config()
7476
myConfig.insert( "ShowForm", mCbxShowForm->isChecked() );
7577
myConfig.insert( "Relation", mComboRelation->itemData( mComboRelation->currentIndex() ) );
7678

79+
QString relName = mComboRelation->itemData( mComboRelation->currentIndex() ).toString();
80+
QgsRelation relation = QgsProject::instance()->relationManager()->relation( relName );
81+
82+
if ( relation.isValid() )
83+
{
84+
relation.referencedLayer()->setDisplayExpression( mTxtDisplayExpression->text() );
85+
}
86+
7787
return myConfig;
7888
}
89+
90+
void QgsRelReferenceConfigDlg::previewExpressionBuilder()
91+
{
92+
QString relName = mComboRelation->itemData( mComboRelation->currentIndex() ).toString();
93+
QgsRelation relation = QgsProject::instance()->relationManager()->relation( relName );
94+
95+
// Show expression builder
96+
QgsExpressionBuilderDialog dlg( relation.referencedLayer(), mTxtDisplayExpression->text() , this );
97+
dlg.setWindowTitle( tr( "Preview Expression" ) );
98+
99+
if ( dlg.exec() == QDialog::Accepted )
100+
{
101+
mTxtDisplayExpression->setText( dlg.expressionText() );
102+
}
103+
}

‎src/gui/editorwidgets/qgsrelreferenceconfigdlg.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ class GUI_EXPORT QgsRelReferenceConfigDlg : public QgsEditorConfigWidget, privat
3030

3131
private slots:
3232
void on_mComboRelation_indexChanged( int idx );
33+
void previewExpressionBuilder();
34+
3335
};
3436

3537
#endif // QGSRELREFERENCECONFIGDLGBASE_H

‎src/ui/editorwidgets/qgsrelreferenceconfigdlgbase.ui

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,45 @@
77
<x>0</x>
88
<y>0</y>
99
<width>400</width>
10-
<height>175</height>
10+
<height>176</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
1414
<string>Dialog</string>
1515
</property>
1616
<layout class="QFormLayout" name="formLayout">
17+
<property name="fieldGrowthPolicy">
18+
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
19+
</property>
1720
<item row="0" column="0">
1821
<widget class="QLabel" name="label">
1922
<property name="text">
2023
<string>Display expression</string>
2124
</property>
2225
</widget>
2326
</item>
24-
<item row="2" column="0" colspan="2">
25-
<widget class="QCheckBox" name="mCbxAllowNull">
26-
<property name="text">
27-
<string>Allow NULL value</string>
28-
</property>
29-
</widget>
27+
<item row="0" column="1">
28+
<layout class="QHBoxLayout" name="horizontalLayout">
29+
<item>
30+
<widget class="QLineEdit" name="mTxtDisplayExpression"/>
31+
</item>
32+
<item>
33+
<widget class="QToolButton" name="mPbnPreviewExpression">
34+
<property name="text">
35+
<string>Expression Builder</string>
36+
</property>
37+
<property name="icon">
38+
<iconset resource="../../../images/images.qrc">
39+
<normaloff>:/images/themes/default/mIconExpressionEditorOpen.svg</normaloff>:/images/themes/default/mIconExpressionEditorOpen.svg</iconset>
40+
</property>
41+
</widget>
42+
</item>
43+
</layout>
44+
</item>
45+
<item row="1" column="1">
46+
<widget class="QComboBox" name="mComboRelation"/>
3047
</item>
31-
<item row="3" column="0" colspan="2">
48+
<item row="7" column="0">
3249
<widget class="QCheckBox" name="mCbxShowForm">
3350
<property name="text">
3451
<string>Show embedded form</string>
@@ -42,14 +59,17 @@
4259
</property>
4360
</widget>
4461
</item>
45-
<item row="1" column="1">
46-
<widget class="QComboBox" name="mComboRelation"/>
47-
</item>
48-
<item row="0" column="1">
49-
<widget class="QLineEdit" name="mTxtDisplayExpression"/>
62+
<item row="6" column="0">
63+
<widget class="QCheckBox" name="mCbxAllowNull">
64+
<property name="text">
65+
<string>Allow NULL value</string>
66+
</property>
67+
</widget>
5068
</item>
5169
</layout>
5270
</widget>
53-
<resources/>
71+
<resources>
72+
<include location="../../../images/images.qrc"/>
73+
</resources>
5474
<connections/>
5575
</ui>

0 commit comments

Comments
 (0)
Please sign in to comment.