Skip to content

Commit 85b6b0b

Browse files
committed
[composer] Use QgsMapLayerComboBox for attribute table layer selection
1 parent 114d46c commit 85b6b0b

File tree

3 files changed

+50
-72
lines changed

3 files changed

+50
-72
lines changed

src/app/composer/qgscomposertablewidget.cpp

Lines changed: 20 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,8 @@ QgsComposerTableWidget::QgsComposerTableWidget( QgsComposerAttributeTable* table
3434
mainLayout->addWidget( itemPropertiesWidget );
3535

3636
blockAllSignals( true );
37-
38-
//insert vector layers into combo
39-
QMap<QString, QgsMapLayer*> layerMap = QgsMapLayerRegistry::instance()->mapLayers();
40-
QMap<QString, QgsMapLayer*>::const_iterator mapIt = layerMap.constBegin();
41-
42-
for ( ; mapIt != layerMap.constEnd(); ++mapIt )
43-
{
44-
QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( mapIt.value() );
45-
if ( vl )
46-
{
47-
mLayerComboBox->addItem( vl->name(), mapIt.key() );
48-
}
49-
}
37+
mLayerComboBox->setFilters( QgsMapLayerProxyModel::HasGeometry );
38+
connect( mLayerComboBox, SIGNAL( layerChanged( QgsMapLayer* ) ), this, SLOT( changeLayer( QgsMapLayer* ) ) );
5039

5140
refreshMapComboBox();
5241

@@ -105,35 +94,6 @@ void QgsComposerTableWidget::refreshMapComboBox()
10594
}
10695
}
10796

108-
void QgsComposerTableWidget::on_mLayerComboBox_currentIndexChanged( int index )
109-
{
110-
if ( !mComposerTable )
111-
{
112-
return;
113-
}
114-
115-
//set new layer to table item
116-
QVariant itemData = mLayerComboBox->itemData( index );
117-
if ( itemData.type() == QVariant::Invalid )
118-
{
119-
return;
120-
}
121-
122-
QString layerId = itemData.toString();
123-
QgsMapLayer* ml = QgsMapLayerRegistry::instance()->mapLayer( layerId );
124-
if ( ml )
125-
{
126-
QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( ml );
127-
if ( vl )
128-
{
129-
mComposerTable->beginCommand( tr( "Table layer changed" ) );
130-
mComposerTable->setVectorLayer( vl );
131-
mComposerTable->update();
132-
mComposerTable->endCommand();
133-
}
134-
}
135-
}
136-
13797
void QgsComposerTableWidget::on_mAttributesPushButton_clicked()
13898
{
13999
if ( !mComposerTable )
@@ -303,15 +263,7 @@ void QgsComposerTableWidget::updateGuiElements()
303263
blockAllSignals( true );
304264

305265
//layer combo box
306-
const QgsVectorLayer* vl = mComposerTable->vectorLayer();
307-
if ( vl )
308-
{
309-
int layerIndex = mLayerComboBox->findText( vl->name() );
310-
if ( layerIndex != -1 )
311-
{
312-
mLayerComboBox->setCurrentIndex( layerIndex );
313-
}
314-
}
266+
mLayerComboBox->setLayer( mComposerTable->vectorLayer() );
315267

316268
//map combo box
317269
const QgsComposerMap* cm = mComposerTable->composerMap();
@@ -447,3 +399,20 @@ void QgsComposerTableWidget::on_mFeatureFilterButton_clicked()
447399
}
448400
}
449401
}
402+
403+
void QgsComposerTableWidget::changeLayer( QgsMapLayer *layer )
404+
{
405+
if ( !mComposerTable )
406+
{
407+
return;
408+
}
409+
410+
QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( layer );
411+
if ( vl )
412+
{
413+
mComposerTable->beginCommand( tr( "Table layer changed" ) );
414+
mComposerTable->setVectorLayer( vl );
415+
mComposerTable->update();
416+
mComposerTable->endCommand();
417+
}
418+
}

src/app/composer/qgscomposertablewidget.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ class QgsComposerTableWidget: public QWidget, private Ui::QgsComposerTableWidget
4040
void refreshMapComboBox();
4141

4242
private slots:
43-
void on_mLayerComboBox_currentIndexChanged( int index );
4443
void on_mAttributesPushButton_clicked();
4544
void on_mComposerMapComboBox_activated( int index );
4645
void on_mMaximumColumnsSpinBox_valueChanged( int i );
@@ -54,6 +53,7 @@ class QgsComposerTableWidget: public QWidget, private Ui::QgsComposerTableWidget
5453
void on_mFeatureFilterCheckBox_stateChanged( int state );
5554
void on_mFeatureFilterEdit_editingFinished();
5655
void on_mFeatureFilterButton_clicked();
56+
void changeLayer( QgsMapLayer* layer );
5757

5858
/**Inserts a new maximum number of features into the spin box (without the spinbox emitting a signal)*/
5959
void setMaximumNumberOfFeatures( int n );

src/ui/qgscomposertablewidgetbase.ui

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,22 +71,16 @@
7171
<property name="wordWrap">
7272
<bool>true</bool>
7373
</property>
74-
<property name="buddy">
75-
<cstring>mLayerComboBox</cstring>
76-
</property>
7774
</widget>
7875
</item>
79-
<item row="0" column="1">
80-
<widget class="QComboBox" name="mLayerComboBox"/>
81-
</item>
82-
<item row="2" column="0" colspan="2">
76+
<item row="8" column="0" colspan="2">
8377
<widget class="QCheckBox" name="mShowOnlyVisibleFeaturesCheckBox">
8478
<property name="text">
8579
<string>Show only visible features</string>
8680
</property>
8781
</widget>
8882
</item>
89-
<item row="3" column="0">
83+
<item row="10" column="0">
9084
<widget class="QLabel" name="mComposerMapLabel">
9185
<property name="text">
9286
<string>Composer map</string>
@@ -99,17 +93,17 @@
9993
</property>
10094
</widget>
10195
</item>
102-
<item row="3" column="1">
96+
<item row="10" column="1">
10397
<widget class="QComboBox" name="mComposerMapComboBox"/>
10498
</item>
105-
<item row="4" column="0">
99+
<item row="12" column="0">
106100
<widget class="QCheckBox" name="mFeatureFilterCheckBox">
107101
<property name="text">
108102
<string>Filter with</string>
109103
</property>
110104
</widget>
111105
</item>
112-
<item row="4" column="1">
106+
<item row="12" column="1">
113107
<layout class="QHBoxLayout" name="horizontalLayout">
114108
<item>
115109
<widget class="QLineEdit" name="mFeatureFilterEdit"/>
@@ -127,7 +121,7 @@
127121
</item>
128122
</layout>
129123
</item>
130-
<item row="5" column="0">
124+
<item row="14" column="0">
131125
<widget class="QLabel" name="mMaxNumFeaturesLabel">
132126
<property name="text">
133127
<string>Maximum rows</string>
@@ -140,10 +134,10 @@
140134
</property>
141135
</widget>
142136
</item>
143-
<item row="5" column="1">
137+
<item row="14" column="1">
144138
<widget class="QSpinBox" name="mMaximumColumnsSpinBox"/>
145139
</item>
146-
<item row="6" column="0">
140+
<item row="16" column="0">
147141
<widget class="QLabel" name="mMarginLabel">
148142
<property name="text">
149143
<string>Margin</string>
@@ -156,10 +150,20 @@
156150
</property>
157151
</widget>
158152
</item>
159-
<item row="6" column="1">
153+
<item row="16" column="1">
160154
<widget class="QDoubleSpinBox" name="mMarginSpinBox"/>
161155
</item>
162-
<item row="1" column="0" colspan="2">
156+
<item row="0" column="1">
157+
<widget class="QgsMapLayerComboBox" name="mLayerComboBox">
158+
<property name="sizePolicy">
159+
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
160+
<horstretch>0</horstretch>
161+
<verstretch>0</verstretch>
162+
</sizepolicy>
163+
</property>
164+
</widget>
165+
</item>
166+
<item row="4" column="0" colspan="2">
163167
<widget class="QPushButton" name="mAttributesPushButton">
164168
<property name="text">
165169
<string>Attributes...</string>
@@ -259,16 +263,21 @@
259263
</layout>
260264
</widget>
261265
<customwidgets>
266+
<customwidget>
267+
<class>QgsColorButton</class>
268+
<extends>QPushButton</extends>
269+
<header>qgscolorbutton.h</header>
270+
</customwidget>
262271
<customwidget>
263272
<class>QgsCollapsibleGroupBoxBasic</class>
264273
<extends>QGroupBox</extends>
265-
<header>qgscollapsiblegroupbox.h</header>
274+
<header location="global">qgscollapsiblegroupbox.h</header>
266275
<container>1</container>
267276
</customwidget>
268277
<customwidget>
269-
<class>QgsColorButton</class>
270-
<extends>QPushButton</extends>
271-
<header>qgscolorbutton.h</header>
278+
<class>QgsMapLayerComboBox</class>
279+
<extends>QComboBox</extends>
280+
<header location="global">qgsmaplayercombobox.h</header>
272281
</customwidget>
273282
</customwidgets>
274283
<resources>

0 commit comments

Comments
 (0)