Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Move logic for initial layer population to QgsElevationProfileTreeView
  • Loading branch information
nyalldawson committed Jan 16, 2023
1 parent ba7fbca commit da8aa94
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 27 deletions.
25 changes: 1 addition & 24 deletions src/app/elevation/qgselevationprofilewidget.cpp
Expand Up @@ -302,7 +302,7 @@ QgsElevationProfileWidget::QgsElevationProfileWidget( const QString &name )
connect( mSetCurveTimer, &QTimer::timeout, this, &QgsElevationProfileWidget::updatePlot );

// initially populate layer tree with project layers
populateInitialLayers();
mLayerTreeView->populateInitialLayers( QgsProject::instance() );

updateCanvasLayers();
}
Expand Down Expand Up @@ -373,29 +373,6 @@ void QgsElevationProfileWidget::cancelJobs()
mCanvas->cancelJobs();
}

void QgsElevationProfileWidget::populateInitialLayers()
{
const QList< QgsMapLayer * > layers = QgsProject::instance()->layers< QgsMapLayer * >().toList();

// sort layers so that types which are more likely to obscure others are rendered below
// e.g. vector features should be drawn above raster DEMS, or the DEM line may completely obscure
// the vector feature
QList< QgsMapLayer * > sortedLayers = QgsMapLayerUtils::sortLayersByType( layers,
{
QgsMapLayerType::RasterLayer,
QgsMapLayerType::MeshLayer,
QgsMapLayerType::VectorLayer,
QgsMapLayerType::PointCloudLayer
} );

std::reverse( sortedLayers.begin(), sortedLayers.end() );
for ( QgsMapLayer *layer : std::as_const( sortedLayers ) )
{
QgsLayerTreeLayer *node = mLayerTree->addLayer( layer );
node->setItemVisibilityChecked( layer->elevationProperties() && layer->elevationProperties()->showByDefaultInElevationProfilePlots() );
}
}

void QgsElevationProfileWidget::updateCanvasLayers()
{
QList<QgsMapLayer *> layers;
Expand Down
1 change: 0 additions & 1 deletion src/app/elevation/qgselevationprofilewidget.h
Expand Up @@ -89,7 +89,6 @@ class QgsElevationProfileWidget : public QWidget
void toggleDockModeRequested( bool docked );

private slots:
void populateInitialLayers();
void updateCanvasLayers();
void onTotalPendingJobsCountChanged( int count );
void setProfileCurve( const QgsGeometry &curve, bool resetView );
Expand Down
26 changes: 24 additions & 2 deletions src/gui/elevation/qgselevationprofilelayertreeview.cpp
Expand Up @@ -19,8 +19,6 @@
#include "qgselevationprofilelayertreeview.h"
#include "qgslayertreenode.h"
#include "qgslayertree.h"
#include "qgslayertreenode.h"
#include "qgslayertree.h"
#include "qgssymbollayerutils.h"
#include "qgsvectorlayerelevationproperties.h"
#include "qgsmeshlayerelevationproperties.h"
Expand All @@ -29,6 +27,7 @@
#include "qgssinglesymbolrenderer.h"
#include "qgsmarkersymbol.h"
#include "qgsfillsymbol.h"
#include "qgsmaplayerutils.h"

#include <QHeaderView>
#include <QContextMenuEvent>
Expand Down Expand Up @@ -370,6 +369,29 @@ QgsMapLayer *QgsElevationProfileLayerTreeView::indexToLayer( const QModelIndex &
return nullptr;
}

void QgsElevationProfileLayerTreeView::populateInitialLayers( QgsProject *project )
{
const QList< QgsMapLayer * > layers = project->layers< QgsMapLayer * >().toList();

// sort layers so that types which are more likely to obscure others are rendered below
// e.g. vector features should be drawn above raster DEMS, or the DEM line may completely obscure
// the vector feature
QList< QgsMapLayer * > sortedLayers = QgsMapLayerUtils::sortLayersByType( layers,
{
QgsMapLayerType::RasterLayer,
QgsMapLayerType::MeshLayer,
QgsMapLayerType::VectorLayer,
QgsMapLayerType::PointCloudLayer
} );

std::reverse( sortedLayers.begin(), sortedLayers.end() );
for ( QgsMapLayer *layer : std::as_const( sortedLayers ) )
{
QgsLayerTreeLayer *node = mLayerTree->addLayer( layer );
node->setItemVisibilityChecked( layer->elevationProperties() && layer->elevationProperties()->showByDefaultInElevationProfilePlots() );
}
}

void QgsElevationProfileLayerTreeView::resizeEvent( QResizeEvent *event )
{
header()->setMinimumSectionSize( viewport()->width() );
Expand Down
5 changes: 5 additions & 0 deletions src/gui/elevation/qgselevationprofilelayertreeview.h
Expand Up @@ -122,6 +122,11 @@ class GUI_EXPORT QgsElevationProfileLayerTreeView : public QTreeView
*/
QgsMapLayer *indexToLayer( const QModelIndex &index );

/**
* Initially populates the tree view using layers from a \a project.
*/
void populateInitialLayers( QgsProject *project );

protected:

void resizeEvent( QResizeEvent *event ) override;
Expand Down

0 comments on commit da8aa94

Please sign in to comment.