QGIS API Documentation 3.99.0-Master (21b3aa880ba)
Loading...
Searching...
No Matches
qgssettingsentryimpl.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgssettingsentryimpl.cpp
3 --------------------------------------
4 Date : February 2022
5 Copyright : (C) 2022 by Denis Rouzaud
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17
18#include "qgslogger.h"
19#include "qgssettings.h"
20#include "qgssettingsproxy.h"
21
26
27
28bool QgsSettingsEntryString::checkValuePrivate( const QString &value ) const
29{
30 if ( value.length() < mMinLength )
31 {
32 QgsDebugError( QStringLiteral( "Can't set value for settings. String length '%1' is shorter than minimum length '%2'." )
33 .arg( value.length() )
34 .arg( mMinLength ) );
35 return false;
36 }
37
38 if ( mMaxLength >= 0
39 && value.length() > mMaxLength )
40 {
41 QgsDebugError( QStringLiteral( "Can't set value for settings. String length '%1' is longer than maximum length '%2'." )
42 .arg( value.length() )
43 .arg( mMinLength ) );
44 return false;
45 }
46
47 return true;
48}
49
50QString QgsSettingsEntryString::convertFromVariant( const QVariant &value ) const
51{
52 return value.toString();
53}
54
59
61{
62 return mMinLength;
63}
64
66{
67 return mMaxLength;
68}
69
70QStringList QgsSettingsEntryStringList::convertFromVariant( const QVariant &value ) const
71{
72 return value.toStringList();
73}
74
79
80
82{
83 return value.toBool();
84}
85
86
91
92
93bool QgsSettingsEntryInteger::checkValuePrivate( const int &value ) const
94{
95 if ( value < mMinValue )
96 {
97 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." )
98 .arg( QString::number( value ) )
99 .arg( QString::number( mMinValue ) ) );
100 return false;
101 }
102
103 if ( value > mMaxValue )
104 {
105 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." )
106 .arg( QString::number( value ) )
107 .arg( QString::number( mMaxValue ) ) );
108 return false;
109 }
110
111 return true;
112}
113
115{
116 return value.toLongLong();
117}
118
123
125{
126 return mMaxValue;
127}
128
130{
131 return mMaxValue;
132}
133
134bool QgsSettingsEntryInteger64::checkValuePrivate( const qlonglong &value ) const
135{
136 if ( value < mMinValue )
137 {
138 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." )
139 .arg( QString::number( value ) )
140 .arg( QString::number( mMinValue ) ) );
141 return false;
142 }
143
144 if ( value > mMaxValue )
145 {
146 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." )
147 .arg( QString::number( value ) )
148 .arg( QString::number( mMaxValue ) ) );
149 return false;
150 }
151
152 return true;
153}
154
155qlonglong QgsSettingsEntryInteger64::convertFromVariant( const QVariant &value ) const
156{
157 return value.toLongLong();
158}
159
164
166{
167 return mMaxValue;
168}
169
171{
172 return mMaxValue;
173}
174
175
176
177bool QgsSettingsEntryDouble::checkValuePrivate( const double &value ) const
178{
179 if ( value < mMinValue )
180 {
181 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." )
182 .arg( QString::number( value ), QString::number( mMinValue ) ) );
183 return false;
184 }
185
186 if ( value > mMaxValue )
187 {
188 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." )
189 .arg( QString::number( value ), QString::number( mMaxValue ) ) );
190 return false;
191 }
192
193 return true;
194}
195
197{
198 return value.toDouble();
199}
200
205
207{
208 return mMinValue;
209}
210
212{
213 return mMaxValue;
214}
215
220
222{
223 return mDisplayHintDecimals;
224}
225
227{
228 return value.value<QColor>();
229}
230
235
236bool QgsSettingsEntryColor::checkValuePrivate( const QColor &value ) const
237{
238 if ( !mAllowAlpha && value.alpha() != 255 )
239 {
240 QgsDebugError( QStringLiteral( "Setting %1 doesn't allow transparency and the given color has transparency." ).arg( definitionKey() ) );
241 return false;
242 }
243
244 return true;
245}
246
247bool QgsSettingsEntryColor::copyValueFromKeys( const QString &redKey, const QString &greenKey, const QString &blueKey, const QString &alphaKey, bool removeSettingAtKey ) const
248{
249 auto settings = QgsSettings::get();
250 if ( settings->contains( redKey ) && settings->contains( greenKey ) && settings->contains( blueKey ) && ( alphaKey.isNull() || settings->contains( alphaKey ) ) )
251 {
252 QVariant oldValue;
253 if ( alphaKey.isNull() )
254 oldValue = QColor( settings->value( redKey ).toInt(), settings->value( greenKey ).toInt(), settings->value( blueKey ).toInt() );
255 else
256 oldValue = QColor( settings->value( redKey ).toInt(), settings->value( greenKey ).toInt(), settings->value( blueKey ).toInt(), settings->value( alphaKey ).toInt() );
257
258 if ( removeSettingAtKey )
259 {
260 settings->remove( redKey );
261 settings->remove( greenKey );
262 settings->remove( blueKey );
263 settings->remove( alphaKey );
264 }
265
266 if ( value() != oldValue )
267 setVariantValue( oldValue );
268 return true;
269 }
270 return false;
271}
272
273void QgsSettingsEntryColor::copyValueToKeys( const QString &redKey, const QString &greenKey, const QString &blueKey, const QString &alphaKey ) const
274{
275 auto settings = QgsSettings::get();
276 const QColor color = value();
277 settings->setValue( redKey, color.red() );
278 settings->setValue( greenKey, color.green() );
279 settings->setValue( blueKey, color.blue() );
280 if ( !alphaKey.isNull() )
281 settings->setValue( alphaKey, color.alpha() );
282}
283
284QVariantMap QgsSettingsEntryVariantMap::convertFromVariant( const QVariant &value ) const
285{
286 return value.value<QVariantMap>();
287}
288
293
SettingsType
Types of settings entries.
Definition qgis.h:635
@ String
String.
Definition qgis.h:638
@ Variant
Generic variant.
Definition qgis.h:637
@ Integer
Integer.
Definition qgis.h:642
@ StringList
List of strings.
Definition qgis.h:639
@ Bool
Boolean.
Definition qgis.h:641
@ VariantMap
Map of strings.
Definition qgis.h:640
@ Color
Color.
Definition qgis.h:645
@ Double
Double precision number.
Definition qgis.h:643
QString value(const QString &dynamicKeyPart=QString()) const
bool setVariantValue(const QVariant &value, const QString &dynamicKeyPart=QString()) const
Set settings value.
QString definitionKey() const
Returns settings entry defining key.
bool convertFromVariant(const QVariant &value) const override
Converts the variant value to the value type of the setting.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
QColor convertFromVariant(const QVariant &value) const override
Converts the variant value to the value type of the setting.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
bool copyValueFromKeys(const QString &redKey, const QString &greenKey, const QString &blueKey, const QString &alphaKey=QString(), bool removeSettingAtKey=false) const
Copies the value from the given keys if they exist.
void copyValueToKeys(const QString &redKey, const QString &greenKey, const QString &blueKey, const QString &alphaKey=QString()) const
Copies the settings to the given keys.
void setDisplayHintDecimals(int displayHintDecimals)
Set the display hint decimals.
int displayHintDecimals() const
Returns how much decimals should be shown in the Gui.
double minValue() const
Returns the minimum value.
double convertFromVariant(const QVariant &value) const override
Converts the variant value to the value type of the setting.
double maxValue() const
Returns the maximum value.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
qlonglong maxValue() const
Returns the maximum value.
qlonglong minValue() const
Returns the minimum value.
qlonglong convertFromVariant(const QVariant &value) const override
Converts the variant value to the value type of the setting.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
int minValue() const
Returns the minimum value.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
int maxValue() const
Returns the maximum value.
int convertFromVariant(const QVariant &value) const override
Converts the variant value to the value type of the setting.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
QStringList convertFromVariant(const QVariant &value) const override
Converts the variant value to the value type of the setting.
int maxLength() const
Returns the string maximum length.
int minLength() const
Returns the string minimum length.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
QString convertFromVariant(const QVariant &value) const override
Converts the variant value to the value type of the setting.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
QVariantMap convertFromVariant(const QVariant &value) const override
Converts the variant value to the value type of the setting.
Qgis::SettingsType settingsType() const override
Returns the settings entry type.
static QgsSettingsProxy get()
Returns a proxy for a QgsSettings object.
#define QgsDebugError(str)
Definition qgslogger.h:57