Skip to content

Commit

Permalink
Store visibility of navigation widget to setting.
Browse files Browse the repository at this point in the history
  • Loading branch information
ismailsunni committed Jun 6, 2019
1 parent 8af152a commit c3dc72d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 19 deletions.
31 changes: 20 additions & 11 deletions src/app/3d/qgs3dmapcanvas.cpp
Expand Up @@ -20,17 +20,19 @@
#include <Qt3DRender/QRenderCapture>
#include <QMouseEvent>


#include "qgscameracontroller.h"
#include "qgs3dmapsettings.h"
#include "qgs3dmapscene.h"
#include "qgs3dmaptool.h"
#include "qgswindow3dengine.h"
#include "qgs3dnavigationwidget.h"

#include "qgssettings.h"

Qgs3DMapCanvas::Qgs3DMapCanvas( QWidget *parent )
: QWidget( parent )
{
QgsSettings setting;
mEngine = new QgsWindow3DEngine;

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

mContainer = QWidget::createWindowContainer( mEngine->window() );
mNavigationWidget = new Qgs3DNavigationWidget(this);
mNavigationWidget = new Qgs3DNavigationWidget( this );

QHBoxLayout *hLayout = new QHBoxLayout( this );
hLayout->setMargin( 0 );
hLayout->addWidget( mContainer, 1 );
hLayout->addWidget( mNavigationWidget );
this->setOnScreenNavigationVisibility(
setting.value( QStringLiteral( "/3D/navigationWidget/visibility" ), true, QgsSettings::Gui ).toBool()
);

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

// Connect the camera to the navigation widget.
QObject::connect(
this->cameraController(),
&QgsCameraController::cameraChanged,
mNavigationWidget,
[ = ]{
mNavigationWidget->updateFromCamera();
}
);
this->cameraController(),
&QgsCameraController::cameraChanged,
mNavigationWidget,
[ = ]
{
mNavigationWidget->updateFromCamera();
}
);
}

QgsCameraController *Qgs3DMapCanvas::cameraController()
Expand Down Expand Up @@ -175,6 +181,9 @@ bool Qgs3DMapCanvas::eventFilter( QObject *watched, QEvent *event )
}


void Qgs3DMapCanvas::setOnScreenNavigationVisibility(bool visibility){
mNavigationWidget->setVisible(visibility);
void Qgs3DMapCanvas::setOnScreenNavigationVisibility( bool visibility )
{
mNavigationWidget->setVisible( visibility );
QgsSettings setting;
setting.setValue( QStringLiteral( "/3D/navigationWidget/visibility" ), visibility, QgsSettings::Gui );
}
20 changes: 12 additions & 8 deletions src/app/3d/qgs3dmapcanvasdockwidget.cpp
Expand Up @@ -30,6 +30,7 @@
#include "qgsmapcanvas.h"
#include "qgsmessagebar.h"
#include "qgsapplication.h"
#include "qgssettings.h"

#include "qgs3danimationsettings.h"
#include "qgs3danimationwidget.h"
Expand All @@ -42,6 +43,7 @@
Qgs3DMapCanvasDockWidget::Qgs3DMapCanvasDockWidget( QWidget *parent )
: QgsDockWidget( parent )
{
QgsSettings setting;
setAttribute( Qt::WA_DeleteOnClose ); // removes the dock widget from main window when

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

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

toggleOnScreenNavigation->setCheckable(true);
toggleOnScreenNavigation->setChecked(true);
toggleOnScreenNavigation->setCheckable( true );
toggleOnScreenNavigation->setChecked(
setting.value( QStringLiteral( "/3D/navigationWidget/visibility" ), true, QgsSettings::Gui ).toBool()
);

toolBar->addSeparator();

Expand Down Expand Up @@ -156,11 +160,11 @@ void Qgs3DMapCanvasDockWidget::identify()

void Qgs3DMapCanvasDockWidget::toggleNavigationWidget()
{
QAction *action = qobject_cast<QAction *>( sender() );
if ( !action )
return;
QAction *action = qobject_cast<QAction *>( sender() );
if ( !action )
return;

mCanvas->setOnScreenNavigationVisibility( action->isChecked() );
mCanvas->setOnScreenNavigationVisibility( action->isChecked() );
}

void Qgs3DMapCanvasDockWidget::setMapSettings( Qgs3DMapSettings *map )
Expand Down

0 comments on commit c3dc72d

Please sign in to comment.