QGIS API Documentation 3.99.0-Master (d270888f95f)
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
22#include <QString>
23
24using namespace Qt::StringLiterals;
25
30
31
32bool QgsSettingsEntryString::checkValuePrivate( const QString &value ) const
33{
34 if ( value.length() < mMinLength )
35 {
36 QgsDebugError( u"Can't set value for settings. String length '%1' is shorter than minimum length '%2'."_s
37 .arg( value.length() )
38 .arg( mMinLength ) );
39 return false;
40 }
41
42 if ( mMaxLength >= 0
43 && value.length() > mMaxLength )
44 {
45 QgsDebugError( u"Can't set value for settings. String length '%1' is longer than maximum length '%2'."_s
46 .arg( value.length() )
47 .arg( mMinLength ) );
48 return false;
49 }
50
51 return true;
52}
53
54QString QgsSettingsEntryString::convertFromVariant( const QVariant &value ) const
55{
56 return value.toString();
57}
58
63
65{
66 return mMinLength;
67}
68
70{
71 return mMaxLength;
72}
73
74QStringList QgsSettingsEntryStringList::convertFromVariant( const QVariant &value ) const
75{
76 return value.toStringList();
77}
78
83
84
86{
87 return value.toBool();
88}
89
90
95
96
97bool QgsSettingsEntryInteger::checkValuePrivate( const int &value ) const
98{
99 if ( value < mMinValue )
100 {
101 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." )
102 .arg( QString::number( value ) )
103 .arg( QString::number( mMinValue ) ) );
104 return false;
105 }
106
107 if ( value > mMaxValue )
108 {
109 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." )
110 .arg( QString::number( value ) )
111 .arg( QString::number( mMaxValue ) ) );
112 return false;
113 }
114
115 return true;
116}
117
119{
120 return value.toLongLong();
121}
122
127
129{
130 return mMaxValue;
131}
132
134{
135 return mMaxValue;
136}
137
138bool QgsSettingsEntryInteger64::checkValuePrivate( const qlonglong &value ) const
139{
140 if ( value < mMinValue )
141 {
142 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." )
143 .arg( QString::number( value ) )
144 .arg( QString::number( mMinValue ) ) );
145 return false;
146 }
147
148 if ( value > mMaxValue )
149 {
150 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." )
151 .arg( QString::number( value ) )
152 .arg( QString::number( mMaxValue ) ) );
153 return false;
154 }
155
156 return true;
157}
158
159qlonglong QgsSettingsEntryInteger64::convertFromVariant( const QVariant &value ) const
160{
161 return value.toLongLong();
162}
163
168
170{
171 return mMaxValue;
172}
173
175{
176 return mMaxValue;
177}
178
179
180
181bool QgsSettingsEntryDouble::checkValuePrivate( const double &value ) const
182{
183 if ( value < mMinValue )
184 {
185 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." )
186 .arg( QString::number( value ), QString::number( mMinValue ) ) );
187 return false;
188 }
189
190 if ( value > mMaxValue )
191 {
192 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." )
193 .arg( QString::number( value ), QString::number( mMaxValue ) ) );
194 return false;
195 }
196
197 return true;
198}
199
201{
202 return value.toDouble();
203}
204
209
211{
212 return mMinValue;
213}
214
216{
217 return mMaxValue;
218}
219
224
226{
227 return mDisplayHintDecimals;
228}
229
231{
232 return value.value<QColor>();
233}
234
239
240bool QgsSettingsEntryColor::checkValuePrivate( const QColor &value ) const
241{
242 if ( !mAllowAlpha && value.alpha() != 255 )
243 {
244 QgsDebugError( u"Setting %1 doesn't allow transparency and the given color has transparency."_s.arg( definitionKey() ) );
245 return false;
246 }
247
248 return true;
249}
250
251bool QgsSettingsEntryColor::copyValueFromKeys( const QString &redKey, const QString &greenKey, const QString &blueKey, const QString &alphaKey, bool removeSettingAtKey ) const
252{
253 auto settings = QgsSettings::get();
254 if ( settings->contains( redKey ) && settings->contains( greenKey ) && settings->contains( blueKey ) && ( alphaKey.isNull() || settings->contains( alphaKey ) ) )
255 {
256 QVariant oldValue;
257 if ( alphaKey.isNull() )
258 oldValue = QColor( settings->value( redKey ).toInt(), settings->value( greenKey ).toInt(), settings->value( blueKey ).toInt() );
259 else
260 oldValue = QColor( settings->value( redKey ).toInt(), settings->value( greenKey ).toInt(), settings->value( blueKey ).toInt(), settings->value( alphaKey ).toInt() );
261
262 if ( removeSettingAtKey )
263 {
264 settings->remove( redKey );
265 settings->remove( greenKey );
266 settings->remove( blueKey );
267 settings->remove( alphaKey );
268 }
269
270 if ( value() != oldValue )
271 setVariantValue( oldValue );
272 return true;
273 }
274 return false;
275}
276
277void QgsSettingsEntryColor::copyValueToKeys( const QString &redKey, const QString &greenKey, const QString &blueKey, const QString &alphaKey ) const
278{
279 auto settings = QgsSettings::get();
280 const QColor color = value();
281 settings->setValue( redKey, color.red() );
282 settings->setValue( greenKey, color.green() );
283 settings->setValue( blueKey, color.blue() );
284 if ( !alphaKey.isNull() )
285 settings->setValue( alphaKey, color.alpha() );
286}
287
288QVariantMap QgsSettingsEntryVariantMap::convertFromVariant( const QVariant &value ) const
289{
290 return value.value<QVariantMap>();
291}
292
297
SettingsType
Types of settings entries.
Definition qgis.h:654
@ String
String.
Definition qgis.h:657
@ Variant
Generic variant.
Definition qgis.h:656
@ Integer
Integer.
Definition qgis.h:661
@ StringList
List of strings.
Definition qgis.h:658
@ Bool
Boolean.
Definition qgis.h:660
@ VariantMap
Map of strings.
Definition qgis.h:659
@ Color
Color.
Definition qgis.h:664
@ Double
Double precision number.
Definition qgis.h:662
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:59