Skip to content

Commit a482c42

Browse files
author
Hugo Mercier
committedMar 21, 2013
refs #7408
[Atlas] Add a checkbox on "filter with"
1 parent aa43c92 commit a482c42

File tree

5 files changed

+50
-14
lines changed

5 files changed

+50
-14
lines changed
 

‎src/app/composer/qgsatlascompositionwidget.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,27 @@ void QgsAtlasCompositionWidget::on_mAtlasSortFeatureKeyComboBox_currentIndexChan
325325
}
326326
}
327327

328+
void QgsAtlasCompositionWidget::on_mAtlasFeatureFilterCheckBox_stateChanged( int state )
329+
{
330+
QgsAtlasComposition* atlasMap = &mComposition->atlasComposition();
331+
if ( !atlasMap )
332+
{
333+
return;
334+
}
335+
336+
if ( state == Qt::Checked )
337+
{
338+
mAtlasFeatureFilterEdit->setEnabled( true );
339+
mAtlasFeatureFilterButton->setEnabled( true );
340+
}
341+
else
342+
{
343+
mAtlasFeatureFilterEdit->setEnabled( false );
344+
mAtlasFeatureFilterButton->setEnabled( false );
345+
}
346+
atlasMap->setFilterFeatures( state == Qt::Checked );
347+
}
348+
328349
void QgsAtlasCompositionWidget::on_mAtlasFeatureFilterEdit_textChanged( const QString& text )
329350
{
330351
QgsAtlasComposition* atlasMap = &mComposition->atlasComposition();
@@ -421,6 +442,7 @@ void QgsAtlasCompositionWidget::updateGuiElements()
421442
mAtlasSortFeatureKeyComboBox->setCurrentIndex( atlasMap->sortKeyAttributeIndex() );
422443
mAtlasSortFeatureDirectionButton->setArrowType( atlasMap->sortAscending() ? Qt::UpArrow : Qt::DownArrow );
423444
mAtlasFeatureFilterEdit->setText( atlasMap->featureFilter() );
445+
mAtlasFeatureFilterCheckBox->setCheckState( atlasMap->filterFeatures() ? Qt::Checked : Qt::Unchecked );
424446
}
425447

426448
void QgsAtlasCompositionWidget::blockAllSignals( bool b )

‎src/app/composer/qgsatlascompositionwidget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class QgsAtlasCompositionWidget:
4848
void on_mAtlasSortFeatureDirectionButton_clicked();
4949
void on_mAtlasFeatureFilterEdit_textChanged( const QString& text );
5050
void on_mAtlasFeatureFilterButton_clicked();
51+
void on_mAtlasFeatureFilterCheckBox_stateChanged( int state );
5152

5253
// extract fields from the current coverage layer and populate the corresponding combo box
5354
void fillSortColumns();

‎src/core/composer/qgsatlascomposition.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ void QgsAtlasComposition::beginRender()
117117
QgsFeatureIterator fit = mCoverageLayer->getFeatures();
118118

119119
std::auto_ptr<QgsExpression> filterExpression;
120-
if ( mFeatureFilter.size() > 0 )
120+
if ( mFilterFeatures )
121121
{
122122
filterExpression = std::auto_ptr<QgsExpression>( new QgsExpression( mFeatureFilter ) );
123123
if ( filterExpression->hasParserError() )
@@ -133,7 +133,7 @@ void QgsAtlasComposition::beginRender()
133133
mFeatureKeys.clear();
134134
while ( fit.nextFeature( feat ) )
135135
{
136-
if ( mFeatureFilter.size() > 0 )
136+
if ( mFilterFeatures )
137137
{
138138
QVariant result = filterExpression->evaluate( &feat, mCoverageLayer->pendingFields() );
139139
if ( filterExpression->hasEvalError() )
@@ -359,7 +359,11 @@ void QgsAtlasComposition::writeXML( QDomElement& elem, QDomDocument& doc ) const
359359
atlasElem.setAttribute( "sortKey", QString::number( mSortKeyAttributeIdx ) );
360360
atlasElem.setAttribute( "sortAscending", mSortAscending ? "true" : "false" );
361361
}
362-
atlasElem.setAttribute( "featureFilter", mFeatureFilter );
362+
atlasElem.setAttribute( "filterFeatures", mFilterFeatures ? "true" : "false" );
363+
if ( mFilterFeatures )
364+
{
365+
atlasElem.setAttribute( "featureFilter", mFeatureFilter );
366+
}
363367

364368
elem.appendChild( atlasElem );
365369
}
@@ -407,7 +411,11 @@ void QgsAtlasComposition::readXML( const QDomElement& atlasElem, const QDomDocum
407411
mSortKeyAttributeIdx = atlasElem.attribute( "sortKey", "0" ).toInt();
408412
mSortAscending = atlasElem.attribute( "sortAscending", "true" ) == "true" ? true : false;
409413
}
410-
mFeatureFilter = atlasElem.attribute( "featureFilter", "" );
414+
mFilterFeatures = atlasElem.attribute( "filterFeatures", "false" ) == "true" ? true : false;
415+
if ( mFilterFeatures )
416+
{
417+
mFeatureFilter = atlasElem.attribute( "featureFilter", "" );
418+
}
411419

412420
emit parameterChanged();
413421
}

‎src/core/composer/qgsatlascomposition.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ class CORE_EXPORT QgsAtlasComposition : public QObject
7272
bool sortAscending() const { return mSortAscending; }
7373
void setSortAscending( bool ascending ) { mSortAscending = ascending; }
7474

75+
bool filterFeatures() const { return mFilterFeatures; }
76+
void setFilterFeatures( bool doFilter ) { mFilterFeatures = doFilter; }
77+
7578
QString featureFilter() const { return mFeatureFilter; }
7679
void setFeatureFilter( const QString& expression ) { mFeatureFilter = expression; }
7780

@@ -127,7 +130,9 @@ class CORE_EXPORT QgsAtlasComposition : public QObject
127130
// key (attribute index) used for ordering
128131
size_t mSortKeyAttributeIdx;
129132

130-
// feature expression filter (or empty)
133+
// feature filtering
134+
bool mFilterFeatures;
135+
// feature expression filter
131136
QString mFeatureFilter;
132137

133138
// id of each iterated feature (after filtering and sorting)

‎src/ui/qgsatlascompositionwidgetbase.ui

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
<x>0</x>
9292
<y>0</y>
9393
<width>431</width>
94-
<height>566</height>
94+
<height>567</height>
9595
</rect>
9696
</property>
9797
<layout class="QVBoxLayout" name="mainLayout">
@@ -256,8 +256,15 @@
256256
<property name="fieldGrowthPolicy">
257257
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
258258
</property>
259-
<item row="0" column="1">
259+
<item row="0" column="0" colspan="2">
260260
<layout class="QHBoxLayout" name="horizontalLayout_2">
261+
<item>
262+
<widget class="QCheckBox" name="mAtlasFeatureFilterCheckBox">
263+
<property name="text">
264+
<string>Filter with</string>
265+
</property>
266+
</widget>
267+
</item>
261268
<item>
262269
<widget class="QLineEdit" name="mAtlasFeatureFilterEdit"/>
263270
</item>
@@ -270,13 +277,6 @@
270277
</item>
271278
</layout>
272279
</item>
273-
<item row="0" column="0">
274-
<widget class="QLabel" name="label_2">
275-
<property name="text">
276-
<string>Filter with</string>
277-
</property>
278-
</widget>
279-
</item>
280280
</layout>
281281
</widget>
282282
</item>

0 commit comments

Comments
 (0)
Please sign in to comment.