Skip to content

Commit

Permalink
Added QgsSettingsEntryBase and value() is now typed according to setting
Browse files Browse the repository at this point in the history
  • Loading branch information
domi4484 committed Apr 1, 2021
1 parent cee0e31 commit 628f9da
Show file tree
Hide file tree
Showing 8 changed files with 417 additions and 184 deletions.
6 changes: 3 additions & 3 deletions python/core/auto_generated/locator/qgslocator.sip.in
Expand Up @@ -143,9 +143,9 @@ This list is updated when preparing the search

struct Settings
{
static QgsSettingsEntryBool locatorFilterEnabled; // = QgsSettingsEntryBool( QStringLiteral( "locator_filters/enabled_%" ), QgsSettings::Gui, true, "Enabled" );
static QgsSettingsEntryBool locatorFilterDefault; // = QgsSettingsEntryBool( QStringLiteral( "locator_filters/default_%" ), QgsSettings::Gui, false, "Default value" );
static QgsSettingsEntryString locatorFilterPrefix; // = QgsSettingsEntryString( QStringLiteral( "locator_filters/prefix_%" ), QgsSettings::Gui, QString(), "Locator filter prefix" );
static const QgsSettingsEntryBool locatorFilterEnabled;// = QgsSettingsEntryBool( QStringLiteral( "locator_filters/enabled_%" ), QgsSettings::Gui, true, "Enabled" );
static const QgsSettingsEntryBool locatorFilterDefault;// = QgsSettingsEntryBool( QStringLiteral( "locator_filters/default_%" ), QgsSettings::Gui, false, "Default value" );
static const QgsSettingsEntryString locatorFilterPrefix;// = QgsSettingsEntryString( QStringLiteral( "locator_filters/prefix_%" ), QgsSettings::Gui, QString(), "Locator filter prefix" );
};

signals:
Expand Down
152 changes: 133 additions & 19 deletions python/core/auto_generated/settings/qgssettingsentry.sip.in
Expand Up @@ -9,7 +9,7 @@



class QgsSettingsEntry
class QgsSettingsEntryBase
{
%Docstring(signature="appended")

Expand All @@ -24,9 +24,11 @@ to validate set values and provide more accurate settings description for the gu
#include "qgssettingsentry.h"
%End
%ConvertToSubClassCode
if ( dynamic_cast< QgsSettingsEntryString * >( sipCpp ) )
if ( dynamic_cast< QgsSettingsEntryVariant * >( sipCpp ) )
sipType = sipType_QgsSettingsEntryVariant;
else if ( dynamic_cast< QgsSettingsEntryString * >( sipCpp ) )
sipType = sipType_QgsSettingsEntryString;
if ( dynamic_cast< QgsSettingsEntryStringList * >( sipCpp ) )
else if ( dynamic_cast< QgsSettingsEntryStringList * >( sipCpp ) )
sipType = sipType_QgsSettingsEntryStringList;
else if ( dynamic_cast< QgsSettingsEntryBool * >( sipCpp ) )
sipType = sipType_QgsSettingsEntryBool;
Expand All @@ -50,20 +52,20 @@ to validate set values and provide more accurate settings description for the gu
Enum
};

QgsSettingsEntry( QString key,
QgsSettings::Section section,
QVariant defaultValue = QVariant(),
QString description = QString() );
QgsSettingsEntryBase( QString key,
QgsSettings::Section section,
QVariant defaultValue = QVariant(),
QString description = QString() );
%Docstring
Constructor for QgsSettingsEntry.
Constructor for :py:class:`QgsSettingsEntry`.

The ``key`` argument specifies the key of the settings.
The ``section`` argument specifies the section of the settings.
The ``default`` value argument specifies the default value for the settings entry.
The ``description`` argument specifies a description for the settings entry.
%End

virtual ~QgsSettingsEntry();
virtual ~QgsSettingsEntryBase();

QString key( const QString &dynamicKeyPart = QString() ) const;
%Docstring
Expand Down Expand Up @@ -103,19 +105,19 @@ Set settings value.
The ``dynamicKeyPart`` argument specifies the dynamic part of the settings key.
%End

QVariant valueFromPython() const /PyName=value/;
QVariant valueAsVariant( const QString &dynamicKeyPart = QString() ) const;
%Docstring
Get settings value.
%End

The ``dynamicKeyPart`` argument specifies the dynamic part of the settings key.
%End

QVariant defaultValueFromPython() const /PyName=defaultValue/;
QVariant defaultValueAsVariant() const;
%Docstring
Get settings default value.
%End


virtual SettingsType settingsType() const;
virtual SettingsType settingsType() const = 0;
%Docstring
Get the settings entry type.
%End
Expand All @@ -128,7 +130,59 @@ Get the settings entry description.
};


class QgsSettingsEntryString : QgsSettingsEntry
class QgsSettingsEntryVariant : QgsSettingsEntryBase
{
%Docstring(signature="appended")
A variant settings entry.

.. versionadded:: 3.20
%End

%TypeHeaderCode
#include "qgssettingsentry.h"
%End
public:

QgsSettingsEntryVariant( const QString &key,
QgsSettings::Section section,
const QVariant &defaultValue = QVariant(),
const QString &description = QString() );
%Docstring
Constructor for QgsSettingsEntryVariant.

The ``key`` argument specifies the final part of the settings key.
The ``parentGroup`` argument specifies a parent group which is used to rebuild
the entiere settings key and to determine the settings section.
The ``default`` value argument specifies the default value for the settings entry.
The ``description`` argument specifies a description for the settings entry.
%End

virtual bool setValue( const QVariant &value, const QString &dynamicKeyPart = QString() ) const;

%Docstring
\copydoc :py:class:`QgsSettingsEntry`.setValue
%End

QVariant value( const QString &dynamicKeyPart = QString() ) const;
%Docstring
Get settings value.

The ``dynamicKeyPart`` argument specifies the dynamic part of the settings key.
%End

QVariant defaultValue() const;
%Docstring
Get settings default value.
%End

virtual SettingsType settingsType() const;
%Docstring
\copydoc :py:class:`QgsSettingsEntry`.settingsType
%End
};


class QgsSettingsEntryString : QgsSettingsEntryBase
{
%Docstring(signature="appended")
A string settings entry.
Expand Down Expand Up @@ -164,6 +218,18 @@ By -1 the there is no limit

%Docstring
\copydoc :py:class:`QgsSettingsEntry`.setValue
%End

QString value( const QString &dynamicKeyPart = QString() ) const;
%Docstring
Get settings value.

The ``dynamicKeyPart`` argument specifies the dynamic part of the settings key.
%End

QString defaultValue() const;
%Docstring
Get settings default value.
%End

virtual SettingsType settingsType() const;
Expand All @@ -184,7 +250,7 @@ Returns the string maximum length. By -1 there is no limitation.
};


class QgsSettingsEntryStringList : QgsSettingsEntry
class QgsSettingsEntryStringList : QgsSettingsEntryBase
{
%Docstring(signature="appended")
A string list settings entry.
Expand Down Expand Up @@ -215,6 +281,18 @@ The ``description`` argument specifies a description for the settings entry.

%Docstring
\copydoc :py:class:`QgsSettingsEntry`.setValue
%End

QStringList value( const QString &dynamicKeyPart = QString() ) const;
%Docstring
Get settings value.

The ``dynamicKeyPart`` argument specifies the dynamic part of the settings key.
%End

QStringList defaultValue() const;
%Docstring
Get settings default value.
%End

virtual SettingsType settingsType() const;
Expand All @@ -225,7 +303,7 @@ The ``description`` argument specifies a description for the settings entry.
};


class QgsSettingsEntryBool : QgsSettingsEntry
class QgsSettingsEntryBool : QgsSettingsEntryBase
{
%Docstring(signature="appended")
A boolean settings entry.
Expand Down Expand Up @@ -256,6 +334,18 @@ The ``description`` argument specifies a description for the settings entry.

%Docstring
\copydoc :py:class:`QgsSettingsEntry`.setValue
%End

bool value( const QString &dynamicKeyPart = QString() ) const;
%Docstring
Get settings value.

The ``dynamicKeyPart`` argument specifies the dynamic part of the settings key.
%End

bool defaultValue() const;
%Docstring
Get settings default value.
%End

virtual SettingsType settingsType() const;
Expand All @@ -266,7 +356,7 @@ The ``description`` argument specifies a description for the settings entry.
};


class QgsSettingsEntryInteger : QgsSettingsEntry
class QgsSettingsEntryInteger : QgsSettingsEntryBase
{
%Docstring(signature="appended")
An integer settings entry.
Expand Down Expand Up @@ -300,6 +390,18 @@ The ``description`` argument specifies a description for the settings entry.

%Docstring
\copydoc :py:class:`QgsSettingsEntry`.setValue
%End

qlonglong value( const QString &dynamicKeyPart = QString() ) const;
%Docstring
Get settings value.

The ``dynamicKeyPart`` argument specifies the dynamic part of the settings key.
%End

qlonglong defaultValue() const;
%Docstring
Get settings default value.
%End

virtual SettingsType settingsType() const;
Expand Down Expand Up @@ -334,7 +436,7 @@ Returns the maximum value.
};


class QgsSettingsEntryDouble : QgsSettingsEntry
class QgsSettingsEntryDouble : QgsSettingsEntryBase
{
%Docstring(signature="appended")
A double settings entry.
Expand Down Expand Up @@ -367,6 +469,18 @@ The ``description`` argument specifies a description for the settings entry.

%Docstring
\copydoc :py:class:`QgsSettingsEntry`.setValue
%End

double value( const QString &dynamicKeyPart = QString() ) const;
%Docstring
Get settings value.

The ``dynamicKeyPart`` argument specifies the dynamic part of the settings key.
%End

double defaultValue() const;
%Docstring
Get settings default value.
%End

virtual SettingsType settingsType() const;
Expand Down
6 changes: 3 additions & 3 deletions src/core/locator/qgslocator.cpp
Expand Up @@ -96,13 +96,13 @@ void QgsLocator::registerFilter( QgsLocatorFilter *filter )
// restore settings
bool enabled = true;
if ( QgsLocator::Settings::locatorFilterEnabled.exists( filter->name() ) )
enabled = QgsLocator::Settings::locatorFilterEnabled.value<bool>( filter->name() );
enabled = QgsLocator::Settings::locatorFilterEnabled.value( filter->name() );
bool byDefault = filter->useWithoutPrefix();
if ( QgsLocator::Settings::locatorFilterDefault.exists( filter->name() ) )
byDefault = QgsLocator::Settings::locatorFilterDefault.value<bool>( filter->name() );
byDefault = QgsLocator::Settings::locatorFilterDefault.value( filter->name() );
QString prefix = filter->prefix();
if ( QgsLocator::Settings::locatorFilterPrefix.exists( filter->name() ) )
prefix = QgsLocator::Settings::locatorFilterPrefix.value<QString>( filter->name() );
prefix = QgsLocator::Settings::locatorFilterPrefix.value( filter->name() );
if ( prefix.isEmpty() )
{
prefix = filter->prefix();
Expand Down
6 changes: 3 additions & 3 deletions src/core/locator/qgslocator.h
Expand Up @@ -155,9 +155,9 @@ class CORE_EXPORT QgsLocator : public QObject

struct Settings
{
static inline QgsSettingsEntryBool locatorFilterEnabled = QgsSettingsEntryBool( QStringLiteral( "locator_filters/enabled_%" ), QgsSettings::Gui, true, "Enabled" );
static inline QgsSettingsEntryBool locatorFilterDefault = QgsSettingsEntryBool( QStringLiteral( "locator_filters/default_%" ), QgsSettings::Gui, false, "Default value" );
static inline QgsSettingsEntryString locatorFilterPrefix = QgsSettingsEntryString( QStringLiteral( "locator_filters/prefix_%" ), QgsSettings::Gui, QString(), "Locator filter prefix" );
static const inline QgsSettingsEntryBool locatorFilterEnabled = QgsSettingsEntryBool( QStringLiteral( "locator_filters/enabled_%" ), QgsSettings::Gui, true, "Enabled" );
static const inline QgsSettingsEntryBool locatorFilterDefault = QgsSettingsEntryBool( QStringLiteral( "locator_filters/default_%" ), QgsSettings::Gui, false, "Default value" );
static const inline QgsSettingsEntryString locatorFilterPrefix = QgsSettingsEntryString( QStringLiteral( "locator_filters/prefix_%" ), QgsSettings::Gui, QString(), "Locator filter prefix" );
};

signals:
Expand Down
2 changes: 1 addition & 1 deletion src/core/qgsapplication.cpp
Expand Up @@ -1107,7 +1107,7 @@ QStringList QgsApplication::layoutTemplatePaths()
{
//local directories to search when looking for an template with a given basename
//defined by user in options dialog
return QgsLayout::Settings::searchPathForTemplates.value<QStringList>();
return QgsLayout::Settings::searchPathForTemplates.value();
}

QMap<QString, QString> QgsApplication::systemEnvVars()
Expand Down

0 comments on commit 628f9da

Please sign in to comment.