16
16
17
17
#include " qgsrelationadddlg.h"
18
18
#include " qgsvectorlayer.h"
19
+ #include " qgsmaplayerproxymodel.h"
19
20
20
21
#include < QPushButton>
21
22
@@ -24,45 +25,41 @@ QgsRelationAddDlg::QgsRelationAddDlg( QWidget *parent )
24
25
{
25
26
setupUi ( this );
26
27
27
- mTxtRelationId ->setPlaceholderText ( tr ( " [Generated automatically]" ) );
28
- checkDefinitionValid ();
28
+ connect ( mCbxReferencingLayer , &QgsMapLayerComboBox::layerChanged, this , [=]( QgsMapLayer * layer ) { mCbxReferencingField ->setLayer ( layer ); }
29
+ );
30
+ connect ( mCbxReferencedLayer , &QgsMapLayerComboBox::layerChanged, this , [=]( QgsMapLayer * layer ) { mCbxReferencedField ->setLayer ( layer ); }
31
+ );
29
32
30
- connect ( mCbxReferencingLayer , SIGNAL ( currentIndexChanged ( int ) ), this , SLOT ( checkDefinitionValid () ) );
31
- connect ( mCbxReferencingField , SIGNAL ( currentIndexChanged ( int ) ), this , SLOT ( checkDefinitionValid () ) );
32
- connect ( mCbxReferencedLayer , SIGNAL ( currentIndexChanged ( int ) ), this , SLOT ( checkDefinitionValid () ) );
33
- connect ( mCbxReferencedField , SIGNAL ( currentIndexChanged ( int ) ), this , SLOT ( checkDefinitionValid () ) );
34
- }
35
-
36
- void QgsRelationAddDlg::addLayers ( const QList< QgsVectorLayer* >& layers )
37
- {
38
- mCbxReferencingLayer ->addItem ( QLatin1String ( " " ), " " );
39
- mCbxReferencedLayer ->addItem ( QLatin1String ( " " ), " " );
33
+ mCbxReferencingLayer ->setFilters ( QgsMapLayerProxyModel::VectorLayer );
34
+ mCbxReferencingField ->setLayer ( mCbxReferencingLayer ->currentLayer () );
35
+ mCbxReferencedLayer ->setFilters ( QgsMapLayerProxyModel::VectorLayer );
36
+ mCbxReferencedField ->setLayer ( mCbxReferencedLayer ->currentLayer () );
40
37
41
- Q_FOREACH ( QgsVectorLayer* layer, layers )
42
- {
43
- mCbxReferencingLayer ->addItem ( layer->name (), layer->id () );
44
- mCbxReferencedLayer ->addItem ( layer->name (), layer->id () );
38
+ mTxtRelationId ->setPlaceholderText ( tr ( " [Generated automatically]" ) );
39
+ checkDefinitionValid ();
45
40
46
- mLayers .insert ( layer->id (), layer );
47
- }
41
+ connect ( mCbxReferencingLayer , &QgsMapLayerComboBox::layerChanged, this , &QgsRelationAddDlg::checkDefinitionValid );
42
+ connect ( mCbxReferencingField , &QgsFieldComboBox::fieldChanged, this , &QgsRelationAddDlg::checkDefinitionValid );
43
+ connect ( mCbxReferencedLayer , &QgsMapLayerComboBox::layerChanged, this , &QgsRelationAddDlg::checkDefinitionValid );
44
+ connect ( mCbxReferencedField , &QgsFieldComboBox::fieldChanged, this , &QgsRelationAddDlg::checkDefinitionValid );
48
45
}
49
46
50
47
QString QgsRelationAddDlg::referencingLayerId ()
51
48
{
52
- return mCbxReferencingLayer ->currentData (). toString ();
49
+ return mCbxReferencingLayer ->currentLayer ()-> id ();
53
50
}
54
51
55
52
QString QgsRelationAddDlg::referencedLayerId ()
56
53
{
57
- return mCbxReferencedLayer ->currentData (). toString ();
54
+ return mCbxReferencedLayer ->currentLayer ()-> id ();
58
55
}
59
56
60
57
QList< QPair< QString, QString > > QgsRelationAddDlg::references ()
61
58
{
62
59
QList< QPair< QString, QString > > references;
63
60
64
- QString referencingField = mCbxReferencingField ->currentData (). toString ();
65
- QString referencedField = mCbxReferencedField ->currentData (). toString ();
61
+ QString referencingField = mCbxReferencingField ->currentField ();
62
+ QString referencedField = mCbxReferencedField ->currentField ();
66
63
67
64
references.append ( QPair<QString, QString> ( referencingField, referencedField ) );
68
65
@@ -79,15 +76,6 @@ QString QgsRelationAddDlg::relationName()
79
76
return mTxtRelationName ->text ();
80
77
}
81
78
82
- void QgsRelationAddDlg::on_mCbxReferencingLayer_currentIndexChanged ( int index )
83
- {
84
- loadLayerAttributes ( mCbxReferencingField , mLayers [mCbxReferencingLayer ->itemData ( index ).toString ()] );
85
- }
86
-
87
- void QgsRelationAddDlg::on_mCbxReferencedLayer_currentIndexChanged ( int index )
88
- {
89
- loadLayerAttributes ( mCbxReferencedField , mLayers [mCbxReferencedLayer ->itemData ( index ).toString ()] );
90
- }
91
79
92
80
void QgsRelationAddDlg::checkDefinitionValid ()
93
81
{
@@ -96,18 +84,3 @@ void QgsRelationAddDlg::checkDefinitionValid()
96
84
&& mCbxReferencingLayer ->currentIndex () != -1
97
85
&& mCbxReferencingField ->currentIndex () != -1 );
98
86
}
99
-
100
- void QgsRelationAddDlg::loadLayerAttributes ( QComboBox* cbx, QgsVectorLayer* layer )
101
- {
102
- cbx->clear ();
103
-
104
- if ( !layer )
105
- {
106
- return ;
107
- }
108
-
109
- Q_FOREACH ( const QgsField& fld, layer->fields ().toList () )
110
- {
111
- cbx->addItem ( fld.name (), fld.name () );
112
- }
113
- }
0 commit comments