Skip to content

Commit cd1f4f3

Browse files
committedMay 9, 2020
[feature][temporal] Add a new "Redraw Layer Only" mode for temporal vector layers
When set to this mode, the layer will automatically be redrawn whenever the temporal range is changed, but no time based filtering will be applied to the features. This configuration is useful when the layer has symbology settings which vary based on the temporal range. For instance, when a layer is using time-dependent rule-based renderer expressions or data-defined symbology expressions.
1 parent 16fd1a8 commit cd1f4f3

6 files changed

+37
-1
lines changed
 

‎python/core/auto_generated/qgsvectorlayertemporalproperties.sip.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ The ``enabled`` argument specifies whether the temporal properties are initially
3939
ModeFixedTemporalRange,
4040
ModeFeatureDateTimeInstantFromField,
4141
ModeFeatureDateTimeStartAndEndFromFields,
42+
ModeRedrawLayerOnly,
4243
};
4344

4445
TemporalMode mode() const;

‎src/core/qgstemporalutils.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ QgsDateTimeRange QgsTemporalUtils::calculateTemporalRangeForProject( QgsProject
101101
}
102102
break;
103103
}
104+
105+
case QgsVectorLayerTemporalProperties::ModeRedrawLayerOnly:
106+
break;
104107
}
105108
break;
106109
}

‎src/core/qgsvectorlayertemporalproperties.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ bool QgsVectorLayerTemporalProperties::isVisibleInTemporalRange( const QgsDateTi
3636

3737
case ModeFeatureDateTimeInstantFromField:
3838
case ModeFeatureDateTimeStartAndEndFromFields:
39+
case ModeRedrawLayerOnly:
3940
return true;
4041
}
4142
return true;
@@ -183,6 +184,7 @@ QString QgsVectorLayerTemporalProperties::createFilterString( QgsVectorLayer *,
183184
switch ( mMode )
184185
{
185186
case ModeFixedTemporalRange:
187+
case ModeRedrawLayerOnly:
186188
return QString();
187189

188190
case ModeFeatureDateTimeInstantFromField:

‎src/core/qgsvectorlayertemporalproperties.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class CORE_EXPORT QgsVectorLayerTemporalProperties : public QgsMapLayerTemporalP
5757
ModeFixedTemporalRange = 0, //!< Mode when temporal properties have fixed start and end datetimes.
5858
ModeFeatureDateTimeInstantFromField, //!< Mode when features have a datetime instant taken from a single field
5959
ModeFeatureDateTimeStartAndEndFromFields, //!< Mode when features have separate fields for start and end times
60+
ModeRedrawLayerOnly, //!< Redraw the layer when temporal range changes, but don't apply any filtering. Useful when symbology or rule based renderer expressions depend on the time range.
6061
};
6162

6263
/**

‎src/gui/qgsvectorlayertemporalpropertieswidget.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ QgsVectorLayerTemporalPropertiesWidget::QgsVectorLayerTemporalPropertiesWidget(
3434
mModeComboBox->addItem( tr( "Fixed Time Range" ), QgsVectorLayerTemporalProperties::ModeFixedTemporalRange );
3535
mModeComboBox->addItem( tr( "Single Field with Date/Time" ), QgsVectorLayerTemporalProperties::ModeFeatureDateTimeInstantFromField );
3636
mModeComboBox->addItem( tr( "Separate Fields for Start and End Date/Time" ), QgsVectorLayerTemporalProperties::ModeFeatureDateTimeStartAndEndFromFields );
37+
mModeComboBox->addItem( tr( "Redraw Layer Only" ), QgsVectorLayerTemporalProperties::ModeRedrawLayerOnly );
3738

3839
const QgsVectorLayerTemporalProperties *properties = qobject_cast< QgsVectorLayerTemporalProperties * >( layer->temporalProperties() );
3940
mTemporalGroupBox->setChecked( properties->isActive() );
@@ -86,6 +87,7 @@ void QgsVectorLayerTemporalPropertiesWidget::saveTemporalProperties()
8687
{
8788
case QgsVectorLayerTemporalProperties::ModeFeatureDateTimeInstantFromField:
8889
case QgsVectorLayerTemporalProperties::ModeFixedTemporalRange:
90+
case QgsVectorLayerTemporalProperties::ModeRedrawLayerOnly:
8991
properties->setStartField( mSingleFieldComboBox->currentField() );
9092
break;
9193

‎src/ui/qgsvectorlayertemporalpropertieswidgetbase.ui

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ background: white;QgsCollapsibleGroupBoxBasic::title, QgsCollapsibleGroupBox::ti
9494
<item row="1" column="0" colspan="2">
9595
<widget class="QStackedWidget" name="mStackedWidget">
9696
<property name="currentIndex">
97-
<number>1</number>
97+
<number>0</number>
9898
</property>
9999
<widget class="QWidget" name="page_3">
100100
<layout class="QGridLayout" name="gridLayout_6">
@@ -211,6 +211,33 @@ background: white;QgsCollapsibleGroupBoxBasic::title, QgsCollapsibleGroupBox::ti
211211
</item>
212212
</layout>
213213
</widget>
214+
<widget class="QWidget" name="page_4">
215+
<layout class="QVBoxLayout" name="verticalLayout">
216+
<item>
217+
<widget class="QLabel" name="label_7">
218+
<property name="text">
219+
<string>&lt;p&gt;&lt;b&gt;The layer will automatically be redrawn whenever the temporal range is changed, but no time based filtering will be applied to the features.&lt;b&gt;&lt;/p&gt;&lt;p&gt;This configuration is useful when the layer has symbology settings which vary based on the temporal range. For instance, when it is using time-dependent rule-based renderer expressions or data-defined symbology expressions.&lt;/p&gt;</string>
220+
</property>
221+
<property name="wordWrap">
222+
<bool>true</bool>
223+
</property>
224+
</widget>
225+
</item>
226+
<item>
227+
<spacer name="verticalSpacer_4">
228+
<property name="orientation">
229+
<enum>Qt::Vertical</enum>
230+
</property>
231+
<property name="sizeHint" stdset="0">
232+
<size>
233+
<width>20</width>
234+
<height>40</height>
235+
</size>
236+
</property>
237+
</spacer>
238+
</item>
239+
</layout>
240+
</widget>
214241
</widget>
215242
</item>
216243
<item row="2" column="0">

0 commit comments

Comments
 (0)
Please sign in to comment.