From 9492c69d9f308f3b7be0c3013c0fa244ae1808ea Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Mon, 13 May 2024 14:14:51 +1000 Subject: [PATCH] Make function more readable --- src/app/canvas/qgsappcanvasfiltering.cpp | 87 +++++++++++++----------- src/app/canvas/qgsappcanvasfiltering.h | 2 + 2 files changed, 48 insertions(+), 41 deletions(-) diff --git a/src/app/canvas/qgsappcanvasfiltering.cpp b/src/app/canvas/qgsappcanvasfiltering.cpp index ab2b39c742a..049ae211480 100644 --- a/src/app/canvas/qgsappcanvasfiltering.cpp +++ b/src/app/canvas/qgsappcanvasfiltering.cpp @@ -33,47 +33,7 @@ void QgsAppCanvasFiltering::setupElevationControllerAction( QAction *action, Qgs { if ( checked ) { - QgsElevationControllerWidget *controller = new QgsElevationControllerWidget(); - connect( controller, &QgsElevationControllerWidget::rangeChanged, canvas, &QgsMapCanvas::setZRange ); - - QAction *setProjectLimitsAction = new QAction( tr( "Set Elevation Range…" ), controller ); - controller->menu()->addAction( setProjectLimitsAction ); - connect( setProjectLimitsAction, &QAction::triggered, QgisApp::instance(), [] - { - QgisApp::instance()->showProjectProperties( tr( "Elevation" ) ); - } ); - QAction *disableAction = new QAction( tr( "Disable Elevation Filter" ), controller ); - controller->menu()->addAction( disableAction ); - connect( disableAction, &QAction::triggered, action, [action] - { - action->setChecked( false ); - } ); - - canvas->addOverlayWidget( controller, Qt::Edge::LeftEdge ); - mCanvasElevationControllerMap.insert( canvas, controller ); - connect( canvas, &QObject::destroyed, this, [canvas, this] - { - mCanvasElevationControllerMap.remove( canvas ); - } ); - connect( controller, &QObject::destroyed, this, [canvas, this] - { - mCanvasElevationControllerMap.remove( canvas ); - } ); - - if ( canvas == QgisApp::instance()->mapCanvas() ) - { - // for main canvas, attach settings to project settings - controller->setFixedRangeSize( QgsProject::instance()->elevationProperties()->elevationFilterRangeSize() ); - connect( controller, &QgsElevationControllerWidget::fixedRangeSizeChanged, this, []( double size ) - { - QgsProject::instance()->elevationProperties()->setElevationFilterRangeSize( size ); - } ); - controller->setInverted( QgsProject::instance()->elevationProperties()->invertElevationFilter() ); - connect( controller, &QgsElevationControllerWidget::invertedChanged, this, []( bool inverted ) - { - QgsProject::instance()->elevationProperties()->setInvertElevationFilter( inverted ); - } ); - } + createElevationController( action, canvas ); } else { @@ -85,3 +45,48 @@ void QgsAppCanvasFiltering::setupElevationControllerAction( QAction *action, Qgs } } ); } + +void QgsAppCanvasFiltering::createElevationController( QAction *senderAction, QgsMapCanvas *canvas ) +{ + QgsElevationControllerWidget *controller = new QgsElevationControllerWidget(); + connect( controller, &QgsElevationControllerWidget::rangeChanged, canvas, &QgsMapCanvas::setZRange ); + + QAction *setProjectLimitsAction = new QAction( tr( "Set Elevation Range…" ), controller ); + controller->menu()->addAction( setProjectLimitsAction ); + connect( setProjectLimitsAction, &QAction::triggered, QgisApp::instance(), [] + { + QgisApp::instance()->showProjectProperties( tr( "Elevation" ) ); + } ); + QAction *disableAction = new QAction( tr( "Disable Elevation Filter" ), controller ); + controller->menu()->addAction( disableAction ); + connect( disableAction, &QAction::triggered, senderAction, [senderAction] + { + senderAction->setChecked( false ); + } ); + + canvas->addOverlayWidget( controller, Qt::Edge::LeftEdge ); + mCanvasElevationControllerMap.insert( canvas, controller ); + connect( canvas, &QObject::destroyed, this, [canvas, this] + { + mCanvasElevationControllerMap.remove( canvas ); + } ); + connect( controller, &QObject::destroyed, this, [canvas, this] + { + mCanvasElevationControllerMap.remove( canvas ); + } ); + + if ( canvas == QgisApp::instance()->mapCanvas() ) + { + // for main canvas, attach settings to project settings + controller->setFixedRangeSize( QgsProject::instance()->elevationProperties()->elevationFilterRangeSize() ); + connect( controller, &QgsElevationControllerWidget::fixedRangeSizeChanged, this, []( double size ) + { + QgsProject::instance()->elevationProperties()->setElevationFilterRangeSize( size ); + } ); + controller->setInverted( QgsProject::instance()->elevationProperties()->invertElevationFilter() ); + connect( controller, &QgsElevationControllerWidget::invertedChanged, this, []( bool inverted ) + { + QgsProject::instance()->elevationProperties()->setInvertElevationFilter( inverted ); + } ); + } +} diff --git a/src/app/canvas/qgsappcanvasfiltering.h b/src/app/canvas/qgsappcanvasfiltering.h index d660d6d8732..53ff5ecf289 100644 --- a/src/app/canvas/qgsappcanvasfiltering.h +++ b/src/app/canvas/qgsappcanvasfiltering.h @@ -36,6 +36,8 @@ class QgsAppCanvasFiltering : public QObject private: + void createElevationController( QAction *senderAction, QgsMapCanvas *canvas ); + QHash< QgsMapCanvas *, QgsElevationControllerWidget * > mCanvasElevationControllerMap; };