Navigation Menu

Skip to content

Commit

Permalink
add guard for mesh layer data provider and test
Browse files Browse the repository at this point in the history
  • Loading branch information
vcloarec authored and nyalldawson committed May 17, 2020
1 parent 2338b14 commit 8a4f773
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/3d/mesh/qgsmesh3dgeometry_p.cpp
Expand Up @@ -394,7 +394,7 @@ int QgsMeshDataset3dGeometry::extractDataset( QVector<double> &verticalMagnitude
{
QgsMeshLayer *layer = meshLayer();

if ( !layer )
if ( !layer || !layer->dataProvider() )
return 0;

QgsMeshDatasetIndex scalarDatasetIndex = layer->activeScalarDatasetAtTime( mTimeRange );
Expand Down
2 changes: 1 addition & 1 deletion src/3d/mesh/qgsmesh3dmaterial_p.cpp
Expand Up @@ -316,7 +316,7 @@ void QgsMesh3dMaterial::configure()

void QgsMesh3dMaterial::configureArrows( QgsMeshLayer *layer, const QgsDateTimeRange &timeRange )
{
if ( !layer )
if ( !layer || !layer->dataProvider() )
return;

QgsMeshDatasetIndex datasetIndex = layer->activeVectorDatasetAtTime( timeRange );
Expand Down
4 changes: 4 additions & 0 deletions src/app/mesh/qgsmeshlayerproperties.cpp
Expand Up @@ -428,6 +428,8 @@ void QgsMeshLayerProperties::aboutToShowStyleMenu()

void QgsMeshLayerProperties::reloadTemporalProperties()
{
if ( !mMeshLayer->dataProvider() )
return;
QgsMeshDataProviderTemporalCapabilities *temporalCapabalities = mMeshLayer->dataProvider()->temporalCapabilities();
QgsDateTimeRange timeExtent;
QDateTime referenceTime = temporalCapabalities->referenceTime();
Expand All @@ -446,6 +448,8 @@ void QgsMeshLayerProperties::reloadTemporalProperties()

void QgsMeshLayerProperties::onTimeReferenceChange()
{
if ( !mMeshLayer->dataProvider() )
return;
const QgsDateTimeRange &timeExtent = mMeshLayer->dataProvider()->temporalCapabilities()->timeExtent( mTemporalDateTimeReference->dateTime() );
mTemporalDateTimeStart->setDateTime( timeExtent.begin() );
mTemporalDateTimeEnd->setDateTime( timeExtent.end() );
Expand Down
6 changes: 4 additions & 2 deletions src/app/mesh/qgsmeshstaticdatasetwidget.cpp
Expand Up @@ -61,14 +61,16 @@ void QgsMeshStaticDatasetWidget::setScalarDatasetGroup( int index )
{
mScalarDatasetGroup = index;
mDatasetScalarModel->setDatasetGroup( index );
mScalarName->setText( mLayer->dataProvider()->datasetGroupMetadata( index ).name() );
if ( mLayer && mLayer->dataProvider() )
mScalarName->setText( mLayer->dataProvider()->datasetGroupMetadata( index ).name() );
}

void QgsMeshStaticDatasetWidget::setVectorDatasetGroup( int index )
{
mVectorDatasetGroup = index;
mDatasetVectorModel->setDatasetGroup( index );
mVectorName->setText( mLayer->dataProvider()->datasetGroupMetadata( index ).name() );
if ( mLayer && mLayer->dataProvider() )
mVectorName->setText( mLayer->dataProvider()->datasetGroupMetadata( index ).name() );
}

QgsMeshDatasetListModel::QgsMeshDatasetListModel( QObject *parent ): QAbstractListModel( parent )
Expand Down
3 changes: 2 additions & 1 deletion src/app/mesh/qgsrenderermeshpropertieswidget.cpp
Expand Up @@ -174,7 +174,8 @@ void QgsRendererMeshPropertiesWidget::onActiveScalarGroupChanged( int groupIndex

void QgsRendererMeshPropertiesWidget::onActiveVectorGroupChanged( int groupIndex )
{
if ( groupIndex >= 0 && !mMeshLayer->dataProvider()->datasetGroupMetadata( groupIndex ).isVector() )
if ( !mMeshLayer->dataProvider() ||
( groupIndex >= 0 && !mMeshLayer->dataProvider()->datasetGroupMetadata( groupIndex ).isVector() ) )
groupIndex = -1;
mMeshRendererVectorSettingsWidget->setActiveDatasetGroup( groupIndex );
mMeshRendererVectorSettingsWidget->syncToLayer();
Expand Down
10 changes: 10 additions & 0 deletions tests/src/app/testqgsmeshlayerpropertiesdialog.cpp
Expand Up @@ -41,6 +41,7 @@ class TestQgsMeshLayerPropertiesDialog : public QObject
void init() {} // will be called before each testfunction is executed.
void cleanup() {} // will be called after every testfunction.

void testInvalidLayer();
void testCrs();
void testDatasetGroupTree();

Expand Down Expand Up @@ -74,6 +75,15 @@ void TestQgsMeshLayerPropertiesDialog::cleanupTestCase()
QgsApplication::exitQgis();
}

void TestQgsMeshLayerPropertiesDialog::testInvalidLayer()
{
QgsMeshLayer invalidLayer;
std::unique_ptr< QgsMeshLayerProperties > dialog = qgis::make_unique< QgsMeshLayerProperties> ( &invalidLayer,
mQgisApp->mapCanvas() );

QVERIFY( dialog );
}

void TestQgsMeshLayerPropertiesDialog::testCrs()
{
std::unique_ptr< QgsMeshLayerProperties > dialog = qgis::make_unique< QgsMeshLayerProperties> ( mpMeshLayer,
Expand Down

0 comments on commit 8a4f773

Please sign in to comment.