Skip to content

Commit c3dc72d

Browse files
committedJun 6, 2019
Store visibility of navigation widget to setting.
1 parent 8af152a commit c3dc72d

File tree

2 files changed

+32
-19
lines changed

2 files changed

+32
-19
lines changed
 

‎src/app/3d/qgs3dmapcanvas.cpp

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,19 @@
2020
#include <Qt3DRender/QRenderCapture>
2121
#include <QMouseEvent>
2222

23+
2324
#include "qgscameracontroller.h"
2425
#include "qgs3dmapsettings.h"
2526
#include "qgs3dmapscene.h"
2627
#include "qgs3dmaptool.h"
2728
#include "qgswindow3dengine.h"
2829
#include "qgs3dnavigationwidget.h"
29-
30+
#include "qgssettings.h"
3031

3132
Qgs3DMapCanvas::Qgs3DMapCanvas( QWidget *parent )
3233
: QWidget( parent )
3334
{
35+
QgsSettings setting;
3436
mEngine = new QgsWindow3DEngine;
3537

3638
connect( mEngine, &QgsAbstract3DEngine::imageCaptured, this, [ = ]( const QImage & image )
@@ -40,12 +42,15 @@ Qgs3DMapCanvas::Qgs3DMapCanvas( QWidget *parent )
4042
} );
4143

4244
mContainer = QWidget::createWindowContainer( mEngine->window() );
43-
mNavigationWidget = new Qgs3DNavigationWidget(this);
45+
mNavigationWidget = new Qgs3DNavigationWidget( this );
4446

4547
QHBoxLayout *hLayout = new QHBoxLayout( this );
4648
hLayout->setMargin( 0 );
4749
hLayout->addWidget( mContainer, 1 );
4850
hLayout->addWidget( mNavigationWidget );
51+
this->setOnScreenNavigationVisibility(
52+
setting.value( QStringLiteral( "/3D/navigationWidget/visibility" ), true, QgsSettings::Gui ).toBool()
53+
);
4954

5055
mEngine->window()->setCursor( Qt::OpenHandCursor );
5156
}
@@ -88,13 +93,14 @@ void Qgs3DMapCanvas::setMap( Qgs3DMapSettings *map )
8893

8994
// Connect the camera to the navigation widget.
9095
QObject::connect(
91-
this->cameraController(),
92-
&QgsCameraController::cameraChanged,
93-
mNavigationWidget,
94-
[ = ]{
95-
mNavigationWidget->updateFromCamera();
96-
}
97-
);
96+
this->cameraController(),
97+
&QgsCameraController::cameraChanged,
98+
mNavigationWidget,
99+
[ = ]
100+
{
101+
mNavigationWidget->updateFromCamera();
102+
}
103+
);
98104
}
99105

100106
QgsCameraController *Qgs3DMapCanvas::cameraController()
@@ -175,6 +181,9 @@ bool Qgs3DMapCanvas::eventFilter( QObject *watched, QEvent *event )
175181
}
176182

177183

178-
void Qgs3DMapCanvas::setOnScreenNavigationVisibility(bool visibility){
179-
mNavigationWidget->setVisible(visibility);
184+
void Qgs3DMapCanvas::setOnScreenNavigationVisibility( bool visibility )
185+
{
186+
mNavigationWidget->setVisible( visibility );
187+
QgsSettings setting;
188+
setting.setValue( QStringLiteral( "/3D/navigationWidget/visibility" ), visibility, QgsSettings::Gui );
180189
}

‎src/app/3d/qgs3dmapcanvasdockwidget.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include "qgsmapcanvas.h"
3131
#include "qgsmessagebar.h"
3232
#include "qgsapplication.h"
33+
#include "qgssettings.h"
3334

3435
#include "qgs3danimationsettings.h"
3536
#include "qgs3danimationwidget.h"
@@ -42,6 +43,7 @@
4243
Qgs3DMapCanvasDockWidget::Qgs3DMapCanvasDockWidget( QWidget *parent )
4344
: QgsDockWidget( parent )
4445
{
46+
QgsSettings setting;
4547
setAttribute( Qt::WA_DeleteOnClose ); // removes the dock widget from main window when
4648

4749
QWidget *contentsWidget = new QWidget( this );
@@ -54,11 +56,13 @@ Qgs3DMapCanvasDockWidget::Qgs3DMapCanvasDockWidget( QWidget *parent )
5456
tr( "Zoom Full" ), this, &Qgs3DMapCanvasDockWidget::resetView );
5557

5658
QAction *toggleOnScreenNavigation = toolBar->addAction(
57-
QgsApplication::getThemeIcon( QStringLiteral( "mAction3DNavigation.svg" ) ),
58-
tr( "Toggle On-Screen Navigation" ), this, &Qgs3DMapCanvasDockWidget::toggleNavigationWidget );
59+
QgsApplication::getThemeIcon( QStringLiteral( "mAction3DNavigation.svg" ) ),
60+
tr( "Toggle On-Screen Navigation" ), this, &Qgs3DMapCanvasDockWidget::toggleNavigationWidget );
5961

60-
toggleOnScreenNavigation->setCheckable(true);
61-
toggleOnScreenNavigation->setChecked(true);
62+
toggleOnScreenNavigation->setCheckable( true );
63+
toggleOnScreenNavigation->setChecked(
64+
setting.value( QStringLiteral( "/3D/navigationWidget/visibility" ), true, QgsSettings::Gui ).toBool()
65+
);
6266

6367
toolBar->addSeparator();
6468

@@ -156,11 +160,11 @@ void Qgs3DMapCanvasDockWidget::identify()
156160

157161
void Qgs3DMapCanvasDockWidget::toggleNavigationWidget()
158162
{
159-
QAction *action = qobject_cast<QAction *>( sender() );
160-
if ( !action )
161-
return;
163+
QAction *action = qobject_cast<QAction *>( sender() );
164+
if ( !action )
165+
return;
162166

163-
mCanvas->setOnScreenNavigationVisibility( action->isChecked() );
167+
mCanvas->setOnScreenNavigationVisibility( action->isChecked() );
164168
}
165169

166170
void Qgs3DMapCanvasDockWidget::setMapSettings( Qgs3DMapSettings *map )

0 commit comments

Comments
 (0)
Please sign in to comment.