Skip to content

Commit

Permalink
Persist skybox settings across settings dialog creations
Browse files Browse the repository at this point in the history
  • Loading branch information
NEDJIMAbelgacem committed Aug 1, 2020
1 parent f5726e5 commit 5c418c4
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
40 changes: 40 additions & 0 deletions src/3d/qgsskyboxsettings.h
Expand Up @@ -3,10 +3,50 @@

#include <QString>
#include <QMap>
#include <QDomDocument>

#include "qgsreadwritecontext.h"
#include "qgssymbollayerutils.h"

class QgsSkyboxSettings
{
public:

//! Reads settings from a DOM \a element
void readXml( const QDomElement &element, const QgsReadWriteContext &context )
{
Q_UNUSED( context );
mIsSkyboxEnabled = element.attribute( QStringLiteral( "skybox-enabled" ) ).toInt();
mSkyboxType = element.attribute( QStringLiteral( "skybox-type" ) );
mSkyboxBaseName = element.attribute( QStringLiteral( "base-name" ) );
mSkyboxExt = element.attribute( QStringLiteral( "extension" ) );
mHDRTexturePath = element.attribute( QStringLiteral( "HDR-texture-path" ) );
mCubeMapFacesPaths.clear();
mCubeMapFacesPaths[ QStringLiteral( "posX" ) ] = element.attribute( QStringLiteral( "posX-texture-path" ) );
mCubeMapFacesPaths[ QStringLiteral( "posY" ) ] = element.attribute( QStringLiteral( "posY-texture-path" ) );
mCubeMapFacesPaths[ QStringLiteral( "posZ" ) ] = element.attribute( QStringLiteral( "posZ-texture-path" ) );
mCubeMapFacesPaths[ QStringLiteral( "negX" ) ] = element.attribute( QStringLiteral( "negX-texture-path" ) );
mCubeMapFacesPaths[ QStringLiteral( "negY" ) ] = element.attribute( QStringLiteral( "negY-texture-path" ) );
mCubeMapFacesPaths[ QStringLiteral( "negZ" ) ] = element.attribute( QStringLiteral( "negZ-texture-path" ) );
}

//! Writes settings to a DOM \a element
void writeXml( QDomElement &element, const QgsReadWriteContext &context ) const
{
Q_UNUSED( context );
element.setAttribute( QStringLiteral( "skybox-enabled" ), mIsSkyboxEnabled );
element.setAttribute( QStringLiteral( "skybox-type" ), mSkyboxType );
element.setAttribute( QStringLiteral( "base-name" ), mSkyboxBaseName );
element.setAttribute( QStringLiteral( "extension" ), mSkyboxExt );
element.setAttribute( QStringLiteral( "HDR-texture-path" ), mHDRTexturePath );
element.setAttribute( QStringLiteral( "posX-texture-path" ), mCubeMapFacesPaths[ QStringLiteral( "posX" ) ] );
element.setAttribute( QStringLiteral( "posY-texture-path" ), mCubeMapFacesPaths[ QStringLiteral( "posY" ) ] );
element.setAttribute( QStringLiteral( "posZ-texture-path" ), mCubeMapFacesPaths[ QStringLiteral( "posZ" ) ] );
element.setAttribute( QStringLiteral( "negX-texture-path" ), mCubeMapFacesPaths[ QStringLiteral( "negX" ) ] );
element.setAttribute( QStringLiteral( "negY-texture-path" ), mCubeMapFacesPaths[ QStringLiteral( "negY" ) ] );
element.setAttribute( QStringLiteral( "negZ-texture-path" ), mCubeMapFacesPaths[ QStringLiteral( "negZ" ) ] );
}

bool isSkyboxEnabled() const { return mIsSkyboxEnabled; }
void setIsSkyboxEnabled( bool enabled ) { mIsSkyboxEnabled = enabled; }

Expand Down
2 changes: 1 addition & 1 deletion src/app/3d/qgs3dmapconfigwidget.cpp
Expand Up @@ -126,7 +126,7 @@ Qgs3DMapConfigWidget::Qgs3DMapConfigWidget( Qgs3DMapSettings *map, QgsMapCanvas
onTerrainTypeChanged();

mSkyboxSettingsWidget = new QgsSkyboxRenderingSettingsWidget( this );
// connect( mSkyboxSettingsWidget, &QgsSkyboxRenderingSettingsWidget::skyboxSettingsChanged, m3DMapCanvas->scene(), &Qgs3DMapScene::onSkyboxSettingsChanged );
mSkyboxSettingsWidget->setSkyboxSettings( map->skyboxSettings() );
groupSkyboxSettings->layout()->addWidget( mSkyboxSettingsWidget );
}

Expand Down
16 changes: 16 additions & 0 deletions src/app/3d/qgsskyboxrenderingsettingswidget.h
Expand Up @@ -12,6 +12,22 @@ class QgsSkyboxRenderingSettingsWidget : public QWidget, private Ui::SkyboxRende
public:
explicit QgsSkyboxRenderingSettingsWidget( QWidget *parent = nullptr );

void setSkyboxSettings( const QgsSkyboxSettings &skyboxSettings )
{
skyboxEnabledCheckBox->setCheckState( skyboxSettings.isSkyboxEnabled() ? Qt::CheckState::Checked : Qt::CheckState::Unchecked );
skyboxTypeComboBox->setCurrentText( skyboxSettings.skyboxType() );
skyboxBaseNameLineEdit->setText( skyboxSettings.skyboxBaseName() );
skyboxExtensionLineEdit->setText( skyboxSettings.skyboxExtension() );
hdrTextureImageSource->setSource( skyboxSettings.hdrTexturePath() );
QMap<QString, QString> cubeMapFaces = skyboxSettings.cubeMapFacesPaths();
posXImageSource->setSource( cubeMapFaces[ QStringLiteral( "posX" ) ] );
posYImageSource->setSource( cubeMapFaces[ QStringLiteral( "posY" ) ] );
posZImageSource->setSource( cubeMapFaces[ QStringLiteral( "posZ" ) ] );
negXImageSource->setSource( cubeMapFaces[ QStringLiteral( "negX" ) ] );
negYImageSource->setSource( cubeMapFaces[ QStringLiteral( "negY" ) ] );
negZImageSource->setSource( cubeMapFaces[ QStringLiteral( "negZ" ) ] );
}

QgsSkyboxSettings toSkyboxSettings()
{
QgsSkyboxSettings settings;
Expand Down

0 comments on commit 5c418c4

Please sign in to comment.