Forward declare QgsMapLayerTemporalProperty subclasses instead of including in header

Speeds up recompilation time
This commit is contained in:
Nyall Dawson 2020-05-10 13:30:36 +10:00
parent 4785f3f4a5
commit 702675ca64
22 changed files with 82 additions and 61 deletions

View File

@ -138,7 +138,7 @@ QgsMeshLayer cannot be copied.
virtual bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const; virtual bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const;
virtual QgsMeshLayerTemporalProperties *temporalProperties(); virtual QgsMapLayerTemporalProperties *temporalProperties();
virtual void reload(); virtual void reload();

View File

@ -404,11 +404,8 @@ to be drawn outside the data extent.
.. versionadded:: 3.10 .. versionadded:: 3.10
%End %End
virtual QgsRasterLayerTemporalProperties *temporalProperties(); virtual QgsMapLayerTemporalProperties *temporalProperties();
%Docstring
Returns temporal properties associated with the raster layer.
%End
public slots: public slots:
void showStatusMessage( const QString &message ); void showStatusMessage( const QString &message );

View File

@ -53,6 +53,7 @@
#include "qgsvectorlayer.h" #include "qgsvectorlayer.h"
#include "qgsvectorlayer3drenderer.h" #include "qgsvectorlayer3drenderer.h"
#include "qgspoint3dbillboardmaterial.h" #include "qgspoint3dbillboardmaterial.h"
#include "qgsmaplayertemporalproperties.h"
#include "qgslinematerial_p.h" #include "qgslinematerial_p.h"

View File

@ -33,6 +33,7 @@
#include "qgsproject.h" #include "qgsproject.h"
#include "qgsprojectionselectiondialog.h" #include "qgsprojectionselectiondialog.h"
#include "qgsrenderermeshpropertieswidget.h" #include "qgsrenderermeshpropertieswidget.h"
#include "qgsmeshlayertemporalproperties.h"
#include "qgssettings.h" #include "qgssettings.h"
#include "qgsprojecttimesettings.h" #include "qgsprojecttimesettings.h"
#include "qgsproviderregistry.h" #include "qgsproviderregistry.h"
@ -195,8 +196,9 @@ void QgsMeshLayerProperties::syncToLayer()
mSimplifyMeshResolutionSpinBox->setValue( simplifySettings.meshResolution() ); mSimplifyMeshResolutionSpinBox->setValue( simplifySettings.meshResolution() );
QgsDebugMsgLevel( QStringLiteral( "populate temporal tab" ), 4 ); QgsDebugMsgLevel( QStringLiteral( "populate temporal tab" ), 4 );
whileBlocking( mTemporalDateTimeReference )->setDateTime( mMeshLayer->temporalProperties()->referenceTime() ); const QgsMeshLayerTemporalProperties *temporalProperties = qobject_cast< const QgsMeshLayerTemporalProperties * >( mMeshLayer->temporalProperties() );
const QgsDateTimeRange timeRange = mMeshLayer->temporalProperties()->timeExtent(); whileBlocking( mTemporalDateTimeReference )->setDateTime( temporalProperties->referenceTime() );
const QgsDateTimeRange timeRange = temporalProperties->timeExtent();
mTemporalDateTimeStart->setDateTime( timeRange.begin() ); mTemporalDateTimeStart->setDateTime( timeRange.begin() );
mTemporalDateTimeEnd->setDateTime( timeRange.end() ); mTemporalDateTimeEnd->setDateTime( timeRange.end() );
if ( mMeshLayer->dataProvider() ) if ( mMeshLayer->dataProvider() )
@ -235,17 +237,19 @@ void QgsMeshLayerProperties::addDataset()
bool ok = mMeshLayer->dataProvider()->addDataset( openFileString ); bool ok = mMeshLayer->dataProvider()->addDataset( openFileString );
if ( ok ) if ( ok )
{ {
QgsMeshLayerTemporalProperties *temporalProperties = qobject_cast< QgsMeshLayerTemporalProperties * >( mMeshLayer->temporalProperties() );
if ( !isTemporalBefore && mMeshLayer->dataProvider()->temporalCapabilities()->hasTemporalCapabilities() ) if ( !isTemporalBefore && mMeshLayer->dataProvider()->temporalCapabilities()->hasTemporalCapabilities() )
{ {
mMeshLayer->temporalProperties()->setDefaultsFromDataProviderTemporalCapabilities( temporalProperties->setDefaultsFromDataProviderTemporalCapabilities(
mMeshLayer->dataProvider()->temporalCapabilities() ); mMeshLayer->dataProvider()->temporalCapabilities() );
if ( ! mMeshLayer->temporalProperties()->referenceTime().isValid() ) if ( ! temporalProperties->referenceTime().isValid() )
{ {
QDateTime referenceTime = QgsProject::instance()->timeSettings()->temporalRange().begin(); QDateTime referenceTime = QgsProject::instance()->timeSettings()->temporalRange().begin();
if ( !referenceTime.isValid() ) // If project reference time is invalid, use current date if ( !referenceTime.isValid() ) // If project reference time is invalid, use current date
referenceTime = QDateTime( QDate::currentDate(), QTime( 0, 0, 0, Qt::UTC ) ); referenceTime = QDateTime( QDate::currentDate(), QTime( 0, 0, 0, Qt::UTC ) );
mMeshLayer->temporalProperties()->setReferenceTime( referenceTime, mMeshLayer->dataProvider()->temporalCapabilities() ); temporalProperties->setReferenceTime( referenceTime, mMeshLayer->dataProvider()->temporalCapabilities() );
} }
} }

View File

@ -90,6 +90,8 @@
#include "qgsprovidermetadata.h" #include "qgsprovidermetadata.h"
#include "qgsfixattributedialog.h" #include "qgsfixattributedialog.h"
#include "qgsprojecttimesettings.h" #include "qgsprojecttimesettings.h"
#include "qgsmaplayertemporalproperties.h"
#include "qgsmeshlayertemporalproperties.h"
#include "qgsanalysis.h" #include "qgsanalysis.h"
#include "qgsgeometrycheckregistry.h" #include "qgsgeometrycheckregistry.h"
@ -5530,8 +5532,8 @@ QgsMeshLayer *QgisApp::addMeshLayerPrivate( const QString &url, const QString &b
{ {
askUserForDatumTransform( newLayer->crs(), QgsProject::instance()->crs(), newLayer ); askUserForDatumTransform( newLayer->crs(), QgsProject::instance()->crs(), newLayer );
QgsMeshLayer *meshLayer = qobject_cast<QgsMeshLayer *>( newLayer ); QgsMeshLayer *meshLayer = qobject_cast<QgsMeshLayer *>( newLayer );
if ( ! meshLayer->temporalProperties()->referenceTime().isValid() ) if ( ! qobject_cast< QgsMeshLayerTemporalProperties * >( meshLayer->temporalProperties() )->referenceTime().isValid() )
meshLayer->temporalProperties()->setReferenceTime( referenceTime, layer->dataProvider()->temporalCapabilities() ); qobject_cast< QgsMeshLayerTemporalProperties * >( meshLayer->temporalProperties() )->setReferenceTime( referenceTime, layer->dataProvider()->temporalCapabilities() );
bool ok; bool ok;
newLayer->loadDefaultStyle( ok ); newLayer->loadDefaultStyle( ok );
newLayer->loadDefaultMetadata( ok ); newLayer->loadDefaultMetadata( ok );
@ -5543,8 +5545,8 @@ QgsMeshLayer *QgisApp::addMeshLayerPrivate( const QString &url, const QString &b
} }
else else
{ {
if ( ! layer->temporalProperties()->referenceTime().isValid() ) if ( ! qobject_cast< QgsMeshLayerTemporalProperties * >( layer->temporalProperties() )->referenceTime().isValid() )
layer->temporalProperties()->setReferenceTime( referenceTime, layer->dataProvider()->temporalCapabilities() ); qobject_cast< QgsMeshLayerTemporalProperties * >( layer->temporalProperties() )->setReferenceTime( referenceTime, layer->dataProvider()->temporalCapabilities() );
QgsProject::instance()->addMapLayer( layer.get() ); QgsProject::instance()->addMapLayer( layer.get() );
askUserForDatumTransform( layer->crs(), QgsProject::instance()->crs(), layer.get() ); askUserForDatumTransform( layer->crs(), QgsProject::instance()->crs(), layer.get() );

View File

@ -23,6 +23,7 @@
#include "qgsmeshlayer.h" #include "qgsmeshlayer.h"
#include "qgsrasterlayer.h" #include "qgsrasterlayer.h"
#include "qgsrasterlayerproperties.h" #include "qgsrasterlayerproperties.h"
#include "qgsmaplayertemporalproperties.h"
#include "qgisapp.h" #include "qgisapp.h"
QgsLayerTreeViewTemporalIndicatorProvider::QgsLayerTreeViewTemporalIndicatorProvider( QgsLayerTreeView *view ) QgsLayerTreeViewTemporalIndicatorProvider::QgsLayerTreeViewTemporalIndicatorProvider( QgsLayerTreeView *view )

View File

@ -254,7 +254,7 @@ void QgsMeshLayer::setTimeSettings( const QgsMeshTimeSettings &settings )
QString QgsMeshLayer::formatTime( double hours ) QString QgsMeshLayer::formatTime( double hours )
{ {
if ( dataProvider() && dataProvider()->temporalCapabilities()->hasReferenceTime() ) if ( dataProvider() && dataProvider()->temporalCapabilities()->hasReferenceTime() )
return QgsMeshLayerUtils::formatTime( hours, temporalProperties()->referenceTime(), mTimeSettings ); return QgsMeshLayerUtils::formatTime( hours, mTemporalProperties->referenceTime(), mTimeSettings );
else else
return QgsMeshLayerUtils::formatTime( hours, QDateTime(), mTimeSettings ); return QgsMeshLayerUtils::formatTime( hours, QDateTime(), mTimeSettings );
} }
@ -486,9 +486,9 @@ QgsMeshDatasetIndex QgsMeshLayer::staticVectorDatasetIndex() const
void QgsMeshLayer::setReferenceTime( const QDateTime &referenceTime ) void QgsMeshLayer::setReferenceTime( const QDateTime &referenceTime )
{ {
if ( dataProvider() ) if ( dataProvider() )
temporalProperties()->setReferenceTime( referenceTime, dataProvider()->temporalCapabilities() ); mTemporalProperties->setReferenceTime( referenceTime, dataProvider()->temporalCapabilities() );
else else
temporalProperties()->setReferenceTime( referenceTime, nullptr ); mTemporalProperties->setReferenceTime( referenceTime, nullptr );
} }
QgsPointXY QgsMeshLayer::snapOnVertex( const QgsPointXY &point, double searchRadius ) QgsPointXY QgsMeshLayer::snapOnVertex( const QgsPointXY &point, double searchRadius )
@ -825,7 +825,7 @@ bool QgsMeshLayer::readXml( const QDomNode &layer_node, QgsReadWriteContext &con
// read temporal // read temporal
temporalProperties()->readXml( layer_node.toElement(), context ); temporalProperties()->readXml( layer_node.toElement(), context );
if ( !temporalProperties()->timeExtent().begin().isValid() ) if ( !mTemporalProperties->timeExtent().begin().isValid() )
temporalProperties()->setDefaultsFromDataProviderTemporalCapabilities( dataProvider()->temporalCapabilities() ); temporalProperties()->setDefaultsFromDataProviderTemporalCapabilities( dataProvider()->temporalCapabilities() );
@ -964,7 +964,7 @@ bool QgsMeshLayer::setDataProvider( QString const &provider, const QgsDataProvid
return true; return true;
} }
QgsMeshLayerTemporalProperties *QgsMeshLayer::temporalProperties() QgsMapLayerTemporalProperties *QgsMeshLayer::temporalProperties()
{ {
return mTemporalProperties; return mTemporalProperties;
} }

View File

@ -26,7 +26,6 @@
#include "qgsmeshrenderersettings.h" #include "qgsmeshrenderersettings.h"
#include "qgsmeshtimesettings.h" #include "qgsmeshtimesettings.h"
#include "qgsmeshsimplificationsettings.h" #include "qgsmeshsimplificationsettings.h"
#include "qgsmeshlayertemporalproperties.h"
class QgsMapLayerRenderer; class QgsMapLayerRenderer;
struct QgsMeshLayerRendererCache; struct QgsMeshLayerRendererCache;
@ -35,6 +34,7 @@ class QgsTriangularMesh;
class QgsRenderContext; class QgsRenderContext;
struct QgsMesh; struct QgsMesh;
class QgsMesh3dAveragingMethod; class QgsMesh3dAveragingMethod;
class QgsMeshLayerTemporalProperties;
/** /**
* \ingroup core * \ingroup core
@ -165,7 +165,7 @@ class CORE_EXPORT QgsMeshLayer : public QgsMapLayer
QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const override; QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const override;
bool readXml( const QDomNode &layer_node, QgsReadWriteContext &context ) override; bool readXml( const QDomNode &layer_node, QgsReadWriteContext &context ) override;
bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const override; bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
QgsMeshLayerTemporalProperties *temporalProperties() override; QgsMapLayerTemporalProperties *temporalProperties() override;
void reload() override; void reload() override;
QStringList subLayers() const override; QStringList subLayers() const override;

View File

@ -20,6 +20,8 @@
#include "qgsmeshlayer.h" #include "qgsmeshlayer.h"
#include "qgsvectorlayer.h" #include "qgsvectorlayer.h"
#include "qgsvectorlayertemporalproperties.h" #include "qgsvectorlayertemporalproperties.h"
#include "qgsrasterlayertemporalproperties.h"
#include "qgsmeshlayertemporalproperties.h"
QgsDateTimeRange QgsTemporalUtils::calculateTemporalRangeForProject( QgsProject *project ) QgsDateTimeRange QgsTemporalUtils::calculateTemporalRangeForProject( QgsProject *project )
{ {
@ -41,12 +43,13 @@ QgsDateTimeRange QgsTemporalUtils::calculateTemporalRangeForProject( QgsProject
{ {
case QgsMapLayerType::RasterLayer: case QgsMapLayerType::RasterLayer:
{ {
QgsRasterLayer *rasterLayer = qobject_cast<QgsRasterLayer *>( currentLayer ); QgsRasterLayer *rasterLayer = qobject_cast< QgsRasterLayer *>( currentLayer );
const QgsRasterLayerTemporalProperties *temporalProperties = qobject_cast< const QgsRasterLayerTemporalProperties * >( rasterLayer->temporalProperties() );
switch ( rasterLayer->temporalProperties()->mode() ) switch ( temporalProperties->mode() )
{ {
case QgsRasterLayerTemporalProperties::ModeFixedTemporalRange: case QgsRasterLayerTemporalProperties::ModeFixedTemporalRange:
layerRange = rasterLayer->temporalProperties()->fixedTemporalRange(); layerRange = temporalProperties->fixedTemporalRange();
break; break;
case QgsRasterLayerTemporalProperties::ModeTemporalRangeFromDataProvider: case QgsRasterLayerTemporalProperties::ModeTemporalRangeFromDataProvider:
@ -111,7 +114,8 @@ QgsDateTimeRange QgsTemporalUtils::calculateTemporalRangeForProject( QgsProject
case QgsMapLayerType::MeshLayer: case QgsMapLayerType::MeshLayer:
{ {
QgsMeshLayer *meshLayer = qobject_cast<QgsMeshLayer *>( currentLayer ); QgsMeshLayer *meshLayer = qobject_cast<QgsMeshLayer *>( currentLayer );
layerRange = meshLayer->temporalProperties()->timeExtent(); const QgsMeshLayerTemporalProperties *temporalProperties = qobject_cast< const QgsMeshLayerTemporalProperties * >( meshLayer->temporalProperties() );
layerRange = temporalProperties->timeExtent();
break; break;
} }

View File

@ -18,6 +18,7 @@
#include "qgsvectorlayertemporalproperties.h" #include "qgsvectorlayertemporalproperties.h"
#include "qgsvectordataprovidertemporalcapabilities.h" #include "qgsvectordataprovidertemporalcapabilities.h"
#include "qgsexpression.h" #include "qgsexpression.h"
#include "qgsvectorlayer.h"
QgsVectorLayerTemporalProperties::QgsVectorLayerTemporalProperties( QObject *parent, bool enabled ) QgsVectorLayerTemporalProperties::QgsVectorLayerTemporalProperties( QObject *parent, bool enabled )
: QgsMapLayerTemporalProperties( parent, enabled ) : QgsMapLayerTemporalProperties( parent, enabled )

View File

@ -53,6 +53,7 @@ email : tim at linfiniti.com
#include "qgsgdalprovider.h" #include "qgsgdalprovider.h"
#include "qgsbilinearrasterresampler.h" #include "qgsbilinearrasterresampler.h"
#include "qgscubicrasterresampler.h" #include "qgscubicrasterresampler.h"
#include "qgsrasterlayertemporalproperties.h"
#include <cmath> #include <cmath>
#include <cstdio> #include <cstdio>
@ -961,7 +962,7 @@ bool QgsRasterLayer::ignoreExtents() const
return mDataProvider ? mDataProvider->ignoreExtents() : false; return mDataProvider ? mDataProvider->ignoreExtents() : false;
} }
QgsRasterLayerTemporalProperties *QgsRasterLayer::temporalProperties() QgsMapLayerTemporalProperties *QgsRasterLayer::temporalProperties()
{ {
return mTemporalProperties; return mTemporalProperties;
} }

View File

@ -38,11 +38,11 @@
#include "qgsrasterviewport.h" #include "qgsrasterviewport.h"
#include "qgsrasterminmaxorigin.h" #include "qgsrasterminmaxorigin.h"
#include "qgscontrastenhancement.h" #include "qgscontrastenhancement.h"
#include "qgsrasterlayertemporalproperties.h"
class QgsMapToPixel; class QgsMapToPixel;
class QgsRasterRenderer; class QgsRasterRenderer;
class QgsRectangle; class QgsRectangle;
class QgsRasterLayerTemporalProperties;
class QImage; class QImage;
class QPixmap; class QPixmap;
@ -446,10 +446,7 @@ class CORE_EXPORT QgsRasterLayer : public QgsMapLayer
*/ */
bool ignoreExtents() const; bool ignoreExtents() const;
/** QgsMapLayerTemporalProperties *temporalProperties() override;
* Returns temporal properties associated with the raster layer.
*/
QgsRasterLayerTemporalProperties *temporalProperties() override;
public slots: public slots:
void showStatusMessage( const QString &message ); void showStatusMessage( const QString &message );

View File

@ -24,7 +24,7 @@
#include "qgsrendercontext.h" #include "qgsrendercontext.h"
#include "qgsproject.h" #include "qgsproject.h"
#include "qgsexception.h" #include "qgsexception.h"
#include "qgsrasterlayertemporalproperties.h"
///@cond PRIVATE ///@cond PRIVATE
@ -229,9 +229,10 @@ QgsRasterLayerRenderer::QgsRasterLayerRenderer( QgsRasterLayer *layer, QgsRender
if ( rasterRenderer && !( rendererContext.flags() & QgsRenderContext::RenderPreviewJob ) ) if ( rasterRenderer && !( rendererContext.flags() & QgsRenderContext::RenderPreviewJob ) )
layer->refreshRendererIfNeeded( rasterRenderer, rendererContext.extent() ); layer->refreshRendererIfNeeded( rasterRenderer, rendererContext.extent() );
if ( layer->temporalProperties()->isActive() && renderContext()->isTemporal() ) const QgsRasterLayerTemporalProperties *temporalProperties = qobject_cast< const QgsRasterLayerTemporalProperties * >( layer->temporalProperties() );
if ( temporalProperties->isActive() && renderContext()->isTemporal() )
{ {
switch ( layer->temporalProperties()->mode() ) switch ( temporalProperties->mode() )
{ {
case QgsRasterLayerTemporalProperties::ModeFixedTemporalRange: case QgsRasterLayerTemporalProperties::ModeFixedTemporalRange:
break; break;
@ -241,7 +242,7 @@ QgsRasterLayerRenderer::QgsRasterLayerRenderer( QgsRasterLayer *layer, QgsRender
if ( mPipe->provider()->temporalCapabilities() ) if ( mPipe->provider()->temporalCapabilities() )
{ {
mPipe->provider()->temporalCapabilities()->setRequestedTemporalRange( rendererContext.temporalRange() ); mPipe->provider()->temporalCapabilities()->setRequestedTemporalRange( rendererContext.temporalRange() );
mPipe->provider()->temporalCapabilities()->setIntervalHandlingMethod( layer->temporalProperties()->intervalHandlingMethod() ); mPipe->provider()->temporalCapabilities()->setIntervalHandlingMethod( temporalProperties->intervalHandlingMethod() );
} }
break; break;
} }
@ -249,7 +250,7 @@ QgsRasterLayerRenderer::QgsRasterLayerRenderer( QgsRasterLayer *layer, QgsRender
else if ( mPipe->provider()->temporalCapabilities() ) else if ( mPipe->provider()->temporalCapabilities() )
{ {
mPipe->provider()->temporalCapabilities()->setRequestedTemporalRange( QgsDateTimeRange() ); mPipe->provider()->temporalCapabilities()->setRequestedTemporalRange( QgsDateTimeRange() );
mPipe->provider()->temporalCapabilities()->setIntervalHandlingMethod( layer->temporalProperties()->intervalHandlingMethod() ); mPipe->provider()->temporalCapabilities()->setIntervalHandlingMethod( temporalProperties->intervalHandlingMethod() );
} }
} }

View File

@ -17,6 +17,7 @@
#include "qgsrasterlayertemporalproperties.h" #include "qgsrasterlayertemporalproperties.h"
#include "qgsrasterdataprovidertemporalcapabilities.h" #include "qgsrasterdataprovidertemporalcapabilities.h"
#include "qgsrasterlayer.h"
QgsRasterLayerTemporalProperties::QgsRasterLayerTemporalProperties( QObject *parent, bool enabled ) QgsRasterLayerTemporalProperties::QgsRasterLayerTemporalProperties( QObject *parent, bool enabled )
: QgsMapLayerTemporalProperties( parent, enabled ) : QgsMapLayerTemporalProperties( parent, enabled )

View File

@ -62,6 +62,7 @@
#include "qgsvectorlayer.h" #include "qgsvectorlayer.h"
#include "qgsprovidermetadata.h" #include "qgsprovidermetadata.h"
#include "qgsproviderregistry.h" #include "qgsproviderregistry.h"
#include "qgsrasterlayertemporalproperties.h"
#include "qgsrasterlayertemporalpropertieswidget.h" #include "qgsrasterlayertemporalpropertieswidget.h"
#include "qgsprojecttimesettings.h" #include "qgsprojecttimesettings.h"
@ -1277,7 +1278,7 @@ void QgsRasterLayerProperties::updateSourceStaticTime()
bool enableTime = !mDisableTime->isChecked(); bool enableTime = !mDisableTime->isChecked();
uri[ QStringLiteral( "enableTime" ) ] = enableTime; uri[ QStringLiteral( "enableTime" ) ] = enableTime;
mRasterLayer->temporalProperties()->setIntervalHandlingMethod( static_cast< QgsRasterDataProviderTemporalCapabilities::IntervalHandlingMethod >( qobject_cast< QgsRasterLayerTemporalProperties * >( mRasterLayer->temporalProperties() )->setIntervalHandlingMethod( static_cast< QgsRasterDataProviderTemporalCapabilities::IntervalHandlingMethod >(
mFetchModeComboBox->currentData().toInt() ) ); mFetchModeComboBox->currentData().toInt() ) );
} }
mRasterLayer->setDataSource( metadata->encodeUri( uri ), mRasterLayer->name(), mRasterLayer->providerType(), QgsDataProvider::ProviderOptions() ); mRasterLayer->setDataSource( metadata->encodeUri( uri ), mRasterLayer->name(), mRasterLayer->providerType(), QgsDataProvider::ProviderOptions() );
@ -1348,7 +1349,7 @@ void QgsRasterLayerProperties::setSourceStaticTimeState()
mFetchModeComboBox->addItem( tr( "Match to End of Range" ), QgsRasterDataProviderTemporalCapabilities::MatchExactUsingEndOfRange ); mFetchModeComboBox->addItem( tr( "Match to End of Range" ), QgsRasterDataProviderTemporalCapabilities::MatchExactUsingEndOfRange );
mFetchModeComboBox->addItem( tr( "Closest Match to Start of Range" ), QgsRasterDataProviderTemporalCapabilities::FindClosestMatchToStartOfRange ); mFetchModeComboBox->addItem( tr( "Closest Match to Start of Range" ), QgsRasterDataProviderTemporalCapabilities::FindClosestMatchToStartOfRange );
mFetchModeComboBox->addItem( tr( "Closest Match to End of Range" ), QgsRasterDataProviderTemporalCapabilities::FindClosestMatchToEndOfRange ); mFetchModeComboBox->addItem( tr( "Closest Match to End of Range" ), QgsRasterDataProviderTemporalCapabilities::FindClosestMatchToEndOfRange );
mFetchModeComboBox->setCurrentIndex( mFetchModeComboBox->findData( mRasterLayer->temporalProperties()->intervalHandlingMethod() ) ); mFetchModeComboBox->setCurrentIndex( mFetchModeComboBox->findData( qobject_cast< QgsRasterLayerTemporalProperties * >( mRasterLayer->temporalProperties() )->intervalHandlingMethod() ) );
const QString temporalSource = uri.value( QStringLiteral( "temporalSource" ) ).toString(); const QString temporalSource = uri.value( QStringLiteral( "temporalSource" ) ).toString();
bool enableTime = uri.value( QStringLiteral( "enableTime" ), true ).toBool(); bool enableTime = uri.value( QStringLiteral( "enableTime" ), true ).toBool();

View File

@ -21,7 +21,7 @@
#include "qgsprojecttimesettings.h" #include "qgsprojecttimesettings.h"
#include "qgsrasterdataprovidertemporalcapabilities.h" #include "qgsrasterdataprovidertemporalcapabilities.h"
#include "qgsrasterlayer.h" #include "qgsrasterlayer.h"
#include "qgsrasterlayertemporalproperties.h"
QgsRasterLayerTemporalPropertiesWidget::QgsRasterLayerTemporalPropertiesWidget( QWidget *parent, QgsRasterLayer *layer ) QgsRasterLayerTemporalPropertiesWidget::QgsRasterLayerTemporalPropertiesWidget( QWidget *parent, QgsRasterLayer *layer )
: QWidget( parent ) : QWidget( parent )
@ -40,7 +40,8 @@ void QgsRasterLayerTemporalPropertiesWidget::init()
mEndTemporalDateTimeEdit->setDisplayFormat( "yyyy-MM-dd HH:mm:ss" ); mEndTemporalDateTimeEdit->setDisplayFormat( "yyyy-MM-dd HH:mm:ss" );
switch ( mLayer->temporalProperties()->mode() ) const QgsRasterLayerTemporalProperties *temporalProperties = qobject_cast< const QgsRasterLayerTemporalProperties * >( mLayer->temporalProperties() );
switch ( temporalProperties->mode() )
{ {
case QgsRasterLayerTemporalProperties::ModeTemporalRangeFromDataProvider: case QgsRasterLayerTemporalProperties::ModeTemporalRangeFromDataProvider:
mModeAutomaticRadio->setChecked( true ); mModeAutomaticRadio->setChecked( true );
@ -50,8 +51,8 @@ void QgsRasterLayerTemporalPropertiesWidget::init()
break; break;
} }
mStartTemporalDateTimeEdit->setDateTime( mLayer->temporalProperties()->fixedTemporalRange().begin() ); mStartTemporalDateTimeEdit->setDateTime( temporalProperties->fixedTemporalRange().begin() );
mEndTemporalDateTimeEdit->setDateTime( mLayer->temporalProperties()->fixedTemporalRange().end() ); mEndTemporalDateTimeEdit->setDateTime( temporalProperties->fixedTemporalRange().end() );
if ( !mLayer->dataProvider() || !mLayer->dataProvider()->temporalCapabilities()->hasTemporalCapabilities() ) if ( !mLayer->dataProvider() || !mLayer->dataProvider()->temporalCapabilities()->hasTemporalCapabilities() )
{ {
@ -60,19 +61,21 @@ void QgsRasterLayerTemporalPropertiesWidget::init()
mModeFixedRangeRadio->setChecked( true ); mModeFixedRangeRadio->setChecked( true );
} }
mTemporalGroupBox->setChecked( mLayer->temporalProperties()->isActive() ); mTemporalGroupBox->setChecked( temporalProperties->isActive() );
} }
void QgsRasterLayerTemporalPropertiesWidget::saveTemporalProperties() void QgsRasterLayerTemporalPropertiesWidget::saveTemporalProperties()
{ {
mLayer->temporalProperties()->setIsActive( mTemporalGroupBox->isChecked() ); mLayer->temporalProperties()->setIsActive( mTemporalGroupBox->isChecked() );
QgsRasterLayerTemporalProperties *temporalProperties = qobject_cast< QgsRasterLayerTemporalProperties * >( mLayer->temporalProperties() );
QgsDateTimeRange normalRange = QgsDateTimeRange( mStartTemporalDateTimeEdit->dateTime(), QgsDateTimeRange normalRange = QgsDateTimeRange( mStartTemporalDateTimeEdit->dateTime(),
mEndTemporalDateTimeEdit->dateTime() ); mEndTemporalDateTimeEdit->dateTime() );
if ( mModeAutomaticRadio->isChecked() ) if ( mModeAutomaticRadio->isChecked() )
mLayer->temporalProperties()->setMode( QgsRasterLayerTemporalProperties::ModeTemporalRangeFromDataProvider ); temporalProperties->setMode( QgsRasterLayerTemporalProperties::ModeTemporalRangeFromDataProvider );
else if ( mModeFixedRangeRadio->isChecked() ) else if ( mModeFixedRangeRadio->isChecked() )
mLayer->temporalProperties()->setMode( QgsRasterLayerTemporalProperties::ModeFixedTemporalRange ); temporalProperties->setMode( QgsRasterLayerTemporalProperties::ModeFixedTemporalRange );
mLayer->temporalProperties()->setFixedTemporalRange( normalRange ); temporalProperties->setFixedTemporalRange( normalRange );
} }

View File

@ -46,6 +46,7 @@
#include "qgspoint3dsymbol.h" #include "qgspoint3dsymbol.h"
#include "qgssymbollayer.h" #include "qgssymbollayer.h"
#include "qgsmarkersymbollayer.h" #include "qgsmarkersymbollayer.h"
#include "qgsmaplayertemporalproperties.h"
#include <QFileInfo> #include <QFileInfo>
#include <QDir> #include <QDir>

View File

@ -35,6 +35,7 @@
#include "qgsactionmenu.h" #include "qgsactionmenu.h"
#include "qgsidentifyresultsdialog.h" #include "qgsidentifyresultsdialog.h"
#include "qgsmapmouseevent.h" #include "qgsmapmouseevent.h"
#include "qgsmaplayertemporalproperties.h"
#include <QTimer> #include <QTimer>

View File

@ -24,6 +24,8 @@
#include "qgsbearingnumericformat.h" #include "qgsbearingnumericformat.h"
#include "qgsrasterlayer.h" #include "qgsrasterlayer.h"
#include "qgsprojecttimesettings.h" #include "qgsprojecttimesettings.h"
#include "qgsmaplayertemporalproperties.h"
#include "qgsrasterlayertemporalproperties.h"
/** /**
* \ingroup UnitTests * \ingroup UnitTests
@ -280,11 +282,11 @@ void TestQgsProjectProperties::testTimeSettings()
QDateTime( QDate( 2020, 2, 28 ), QTime(), Qt::UTC ) ); QDateTime( QDate( 2020, 2, 28 ), QTime(), Qt::UTC ) );
firstLayer->temporalProperties()->setIsActive( true ); firstLayer->temporalProperties()->setIsActive( true );
firstLayer->temporalProperties()->setFixedTemporalRange( firstRange ); qobject_cast< QgsRasterLayerTemporalProperties * >( firstLayer->temporalProperties() )->setFixedTemporalRange( firstRange );
secondLayer->temporalProperties()->setIsActive( true ); secondLayer->temporalProperties()->setIsActive( true );
secondLayer->temporalProperties()->setFixedTemporalRange( secondRange ); qobject_cast< QgsRasterLayerTemporalProperties * >( secondLayer->temporalProperties() )->setFixedTemporalRange( secondRange );
thirdLayer->temporalProperties()->setIsActive( true ); thirdLayer->temporalProperties()->setIsActive( true );
thirdLayer->temporalProperties()->setFixedTemporalRange( thirdRange ); qobject_cast< QgsRasterLayerTemporalProperties * >( thirdLayer->temporalProperties() )->setFixedTemporalRange( thirdRange );
QgsProject::instance()->addMapLayers( { firstLayer, secondLayer, thirdLayer } ); QgsProject::instance()->addMapLayers( { firstLayer, secondLayer, thirdLayer } );

View File

@ -43,6 +43,7 @@
#include "qgsfontutils.h" #include "qgsfontutils.h"
#include "qgsrasterlayer.h" #include "qgsrasterlayer.h"
#include "qgssinglesymbolrenderer.h" #include "qgssinglesymbolrenderer.h"
#include "qgsrasterlayertemporalproperties.h"
//qgs unit test utility class //qgs unit test utility class
#include "qgsmultirenderchecker.h" #include "qgsmultirenderchecker.h"
@ -909,9 +910,10 @@ void TestQgsMapRendererJob::temporalRender()
QVERIFY( imageCheck( QStringLiteral( "temporal_render_visible" ), img ) ); QVERIFY( imageCheck( QStringLiteral( "temporal_render_visible" ), img ) );
// set temporal properties for layer // set temporal properties for layer
rasterLayer->temporalProperties()->setIsActive( true ); QgsRasterLayerTemporalProperties *temporalProperties = qobject_cast< QgsRasterLayerTemporalProperties * >( rasterLayer->temporalProperties() );
rasterLayer->temporalProperties()->setMode( QgsRasterLayerTemporalProperties::ModeFixedTemporalRange ); temporalProperties->setIsActive( true );
rasterLayer->temporalProperties()->setFixedTemporalRange( QgsDateTimeRange( QDateTime( QDate( 2020, 1, 1 ) ), temporalProperties->setMode( QgsRasterLayerTemporalProperties::ModeFixedTemporalRange );
temporalProperties->setFixedTemporalRange( QgsDateTimeRange( QDateTime( QDate( 2020, 1, 1 ) ),
QDateTime( QDate( 2020, 1, 5 ) ) ) ); QDateTime( QDate( 2020, 1, 5 ) ) ) );
// should still be visible -- map render job isn't temporal // should still be visible -- map render job isn't temporal
@ -925,17 +927,17 @@ void TestQgsMapRendererJob::temporalRender()
mapSettings.setIsTemporal( true ); mapSettings.setIsTemporal( true );
mapSettings.setTemporalRange( QgsDateTimeRange( QDateTime( QDate( 2021, 1, 1 ) ), mapSettings.setTemporalRange( QgsDateTimeRange( QDateTime( QDate( 2021, 1, 1 ) ),
QDateTime( QDate( 2021, 1, 5 ) ) ) ); QDateTime( QDate( 2021, 1, 5 ) ) ) );
// should no longer be visible // should no longer be visible
QgsMapRendererSequentialJob renderJob3( mapSettings ); QgsMapRendererSequentialJob renderJob3( mapSettings );
renderJob3.start(); renderJob3.start();
renderJob3.waitForFinished(); renderJob3.waitForFinished();
img = renderJob3.renderedImage(); img = renderJob3.renderedImage();
QVERIFY( imageCheck( QStringLiteral( "temporal_render_invisible" ), img ) ); QVERIFY( imageCheck( QStringLiteral( "temporal_render_invisible" ), img ) );
// temporal range ok for layer // temporal range ok for layer
mapSettings.setTemporalRange( QgsDateTimeRange( QDateTime( QDate( 2020, 1, 2 ) ), mapSettings.setTemporalRange( QgsDateTimeRange( QDateTime( QDate( 2020, 1, 2 ) ),
QDateTime( QDate( 2020, 1, 3 ) ) ) ); QDateTime( QDate( 2020, 1, 3 ) ) ) );
// should be visible // should be visible
QgsMapRendererSequentialJob renderJob4( mapSettings ); QgsMapRendererSequentialJob renderJob4( mapSettings );
renderJob4.start(); renderJob4.start();
renderJob4.waitForFinished(); renderJob4.waitForFinished();

View File

@ -35,6 +35,7 @@
#include "qgsmaprenderersequentialjob.h" #include "qgsmaprenderersequentialjob.h"
#include "qgsmeshmemorydataprovider.h" #include "qgsmeshmemorydataprovider.h"
#include "qgsmesh3daveraging.h" #include "qgsmesh3daveraging.h"
#include "qgsmeshlayertemporalproperties.h"
//qgis test includes //qgis test includes
#include "qgsrenderchecker.h" #include "qgsrenderchecker.h"

View File

@ -1006,7 +1006,7 @@ void TestQgsRasterLayer::sample()
void TestQgsRasterLayer::testTemporalProperties() void TestQgsRasterLayer::testTemporalProperties()
{ {
QgsRasterLayerTemporalProperties *temporalProperties = mTemporalRasterLayer->temporalProperties(); QgsRasterLayerTemporalProperties *temporalProperties = qobject_cast< QgsRasterLayerTemporalProperties * >( mTemporalRasterLayer->temporalProperties() );
QVERIFY( !mTemporalRasterLayer->temporalProperties()->isActive() ); QVERIFY( !mTemporalRasterLayer->temporalProperties()->isActive() );
QgsDateTimeRange dateTimeRange = QgsDateTimeRange( QDateTime( QDate( 2020, 1, 1 ) ), QgsDateTimeRange dateTimeRange = QgsDateTimeRange( QDateTime( QDate( 2020, 1, 1 ) ),
@ -1014,8 +1014,8 @@ void TestQgsRasterLayer::testTemporalProperties()
temporalProperties->setFixedTemporalRange( dateTimeRange ); temporalProperties->setFixedTemporalRange( dateTimeRange );
QCOMPARE( mTemporalRasterLayer->temporalProperties()->fixedTemporalRange().begin(), dateTimeRange.begin() ); QCOMPARE( temporalProperties->fixedTemporalRange().begin(), dateTimeRange.begin() );
QCOMPARE( mTemporalRasterLayer->temporalProperties()->fixedTemporalRange().end(), dateTimeRange.end() ); QCOMPARE( temporalProperties->fixedTemporalRange().end(), dateTimeRange.end() );
// writing and reading from xml // writing and reading from xml
QDomDocument document; QDomDocument document;
@ -1033,8 +1033,8 @@ void TestQgsRasterLayer::testTemporalProperties()
QVERIFY( temporalProperties->readXml( element, QgsReadWriteContext() ) ); QVERIFY( temporalProperties->readXml( element, QgsReadWriteContext() ) );
QCOMPARE( temporalProperties->mode(), QgsRasterLayerTemporalProperties::TemporalMode::ModeTemporalRangeFromDataProvider ); QCOMPARE( temporalProperties->mode(), QgsRasterLayerTemporalProperties::TemporalMode::ModeTemporalRangeFromDataProvider );
QCOMPARE( mTemporalRasterLayer->temporalProperties()->fixedTemporalRange().begin(), dateTimeRange.begin() ); QCOMPARE( temporalProperties->fixedTemporalRange().begin(), dateTimeRange.begin() );
QCOMPARE( mTemporalRasterLayer->temporalProperties()->fixedTemporalRange().end(), dateTimeRange.end() ); QCOMPARE( temporalProperties->fixedTemporalRange().end(), dateTimeRange.end() );
} }
QGSTEST_MAIN( TestQgsRasterLayer ) QGSTEST_MAIN( TestQgsRasterLayer )