Skip to content

Commit 53c47dd

Browse files
committedMar 26, 2013
Merge pull request #473 from Oslandia/atlas
Atlas: fix #7408
2 parents 250cc4e + a482c42 commit 53c47dd

File tree

5 files changed

+51
-15
lines changed

5 files changed

+51
-15
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: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ void QgsAtlasComposition::beginRender()
118118
QgsFeatureIterator fit = mCoverageLayer->getFeatures();
119119

120120
std::auto_ptr<QgsExpression> filterExpression;
121-
if ( mFeatureFilter.size() > 0 )
121+
if ( mFilterFeatures )
122122
{
123123
filterExpression = std::auto_ptr<QgsExpression>( new QgsExpression( mFeatureFilter ) );
124124
if ( filterExpression->hasParserError() )
@@ -134,7 +134,7 @@ void QgsAtlasComposition::beginRender()
134134
mFeatureKeys.clear();
135135
while ( fit.nextFeature( feat ) )
136136
{
137-
if ( mFeatureFilter.size() > 0 )
137+
if ( mFilterFeatures )
138138
{
139139
QVariant result = filterExpression->evaluate( &feat, mCoverageLayer->pendingFields() );
140140
if ( filterExpression->hasEvalError() )
@@ -228,7 +228,7 @@ void QgsAtlasComposition::prepareForFeature( size_t featureI )
228228
if ( !mSingleFile && mFilenamePattern.size() > 0 )
229229
{
230230
QgsExpression::setSpecialColumn( "$feature", QVariant(( int )featureI + 1 ) );
231-
QVariant filenameRes = mFilenameExpr->evaluate( &mCurrentFeature );
231+
QVariant filenameRes = mFilenameExpr->evaluate( &mCurrentFeature, mCoverageLayer->pendingFields() );
232232
if ( mFilenameExpr->hasEvalError() )
233233
{
234234
throw std::runtime_error( tr( "Filename eval error: %1" ).arg( mFilenameExpr->evalErrorString() ).toLocal8Bit().data() );
@@ -360,7 +360,11 @@ void QgsAtlasComposition::writeXML( QDomElement& elem, QDomDocument& doc ) const
360360
atlasElem.setAttribute( "sortKey", QString::number( mSortKeyAttributeIdx ) );
361361
atlasElem.setAttribute( "sortAscending", mSortAscending ? "true" : "false" );
362362
}
363-
atlasElem.setAttribute( "featureFilter", mFeatureFilter );
363+
atlasElem.setAttribute( "filterFeatures", mFilterFeatures ? "true" : "false" );
364+
if ( mFilterFeatures )
365+
{
366+
atlasElem.setAttribute( "featureFilter", mFeatureFilter );
367+
}
364368

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

413421
emit parameterChanged();
414422
}

‎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.