Skip to content

Commit

Permalink
use new settings tree in advanced options
Browse files Browse the repository at this point in the history
choice can be made to use the old or new tree
also add a hidden setting to bypass warning
  • Loading branch information
3nids committed Apr 23, 2023
1 parent 07762f5 commit 0255230
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 35 deletions.
42 changes: 35 additions & 7 deletions src/app/options/qgsadvancedoptions.cpp
Expand Up @@ -14,26 +14,41 @@
***************************************************************************/

#include "qgsadvancedoptions.h"
#include "qgssettingstreewidget.h"
#include "qgssettingstreewidgetold.h"
#include "qgsapplication.h"
#include "qgssettings.h"
#include "qgis.h"

//
// QgsAdvancedSettingsWidget
//
const QgsSettingsEntryBool *QgsAdvancedSettingsWidget::settingsUseNewTreeWidget = new QgsSettingsEntryBool( QStringLiteral( "use-new-widget" ), sTreeSettings, true, QStringLiteral( "Use new settings widget" ) );
const QgsSettingsEntryBool *QgsAdvancedSettingsWidget::settingsShowWarning = new QgsSettingsEntryBool( QStringLiteral( "show-warning" ), sTreeSettings, true, QStringLiteral( "Show warning before opening the settings tree" ) );


QgsAdvancedSettingsWidget::QgsAdvancedSettingsWidget( QWidget *parent )
: QgsOptionsPageWidget( parent )
{
setupUi( this );

mUseNewSettingsTree->setChecked( settingsUseNewTreeWidget->value() );

layout()->setContentsMargins( 0, 0, 0, 0 );

connect( mAdvancedSettingsEnableButton, &QPushButton::clicked, this, [ = ]
if ( !settingsShowWarning->value() )
{
mAdvancedSettingsEditor->show();
mAdvancedSettingsWarning->hide();
} );
mGroupBox->layout()->addWidget( createSettingsTreeWidget() );
}
else
{
connect( mAdvancedSettingsEnableButton, &QPushButton::clicked, this, [ = ]
{
settingsUseNewTreeWidget->setValue( mUseNewSettingsTree->isChecked() );
mAdvancedSettingsWarning->hide();
mGroupBox->layout()->addWidget( createSettingsTreeWidget() );
} );
}
}

QgsAdvancedSettingsWidget::~QgsAdvancedSettingsWidget()
Expand All @@ -42,12 +57,25 @@ QgsAdvancedSettingsWidget::~QgsAdvancedSettingsWidget()

void QgsAdvancedSettingsWidget::apply()
{
// nothing to do -- mAdvancedSettingsEditor applies changes immediately
// mAdvancedSettingsEditor applies changes immediately
// new settings tree is performing changes on appy
if ( mTreeWidget )
mTreeWidget->applyChanges();

}

QgsSettingsTreeWidget *QgsAdvancedSettingsWidget::settingsTree()
QWidget *QgsAdvancedSettingsWidget::createSettingsTreeWidget()
{
return mAdvancedSettingsEditor;
if ( settingsUseNewTreeWidget->value() )
{
mTreeWidget = new QgsSettingsTreeWidget( this );
return mTreeWidget;
}
else
{
return new QgsSettingsTreeWidgetOld( this );
}

}

//
Expand Down
17 changes: 12 additions & 5 deletions src/app/options/qgsadvancedoptions.h
Expand Up @@ -17,8 +17,10 @@

#include "ui_qgsadvancedsettingswidget.h"
#include "qgsoptionswidgetfactory.h"
#include "qgssettings.h"
#include "qgssettingstreewidget.h"
#include "qgssettingstree.h"
#include "qgssettingsentryimpl.h"

class QgsSettingsTreeWidget;

/**
* \ingroup app
Expand All @@ -33,18 +35,23 @@ class QgsAdvancedSettingsWidget : public QgsOptionsPageWidget, private Ui::QgsAd

public:

static inline QgsSettingsTreeNode *sTreeSettings = QgsSettingsTree::sTreeApp->createChildNode( QStringLiteral( "settings" ) );
static const QgsSettingsEntryBool *settingsUseNewTreeWidget;
static const QgsSettingsEntryBool *settingsShowWarning;


/**
* Constructor for QgsAdvancedSettingsWidget with the specified \a parent widget.
*/
QgsAdvancedSettingsWidget( QWidget *parent );
~QgsAdvancedSettingsWidget() override;
void apply() override;

QgsSettingsTreeWidget *settingsTree();

private:

QgsSettings mSettings;
QWidget *createSettingsTreeWidget();

QgsSettingsTreeWidget *mTreeWidget = nullptr;

};

Expand Down
5 changes: 0 additions & 5 deletions src/app/options/qgsoptions.cpp
Expand Up @@ -1164,11 +1164,6 @@ QgsOptions::QgsOptions( QWidget *parent, Qt::WindowFlags fl, const QList<QgsOpti
addPage( factory->title(), factory->title(), factory->icon(), page, factory->path(), factory->key() );
else
insertPage( factory->title(), factory->title(), factory->icon(), page, beforePage, factory->path(), factory->key() );

if ( QgsAdvancedSettingsWidget *advancedPage = qobject_cast< QgsAdvancedSettingsWidget * >( page ) )
{
advancedPage->settingsTree()->setSettingsObject( mSettings );
}
}

if ( mOptTreeView )
Expand Down
40 changes: 22 additions & 18 deletions src/ui/qgsadvancedsettingswidget.ui
Expand Up @@ -10,7 +10,13 @@
<height>610</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
Expand All @@ -24,11 +30,17 @@
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_26">
<widget class="QGroupBox" name="mGroupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Advanced Settings Editor</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_42">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QWidget" name="mAdvancedSettingsWarning" native="true">
<layout class="QVBoxLayout" name="verticalLayout_44">
Expand All @@ -42,6 +54,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="mUseNewSettingsTree">
<property name="text">
<string>Use new settings tree widget (some settings will be missing)</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="mAdvancedSettingsEnableButton">
<property name="text">
Expand All @@ -52,26 +71,11 @@
</layout>
</widget>
</item>
<item>
<widget class="QgsSettingsTreeWidget" name="mAdvancedSettingsEditor" native="true">
<property name="visible">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>QgsSettingsTreeWidget</class>
<extends>QWidget</extends>
<header>qgssettingstreewidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

0 comments on commit 0255230

Please sign in to comment.