QGIS API Documentation 4.1.0-Master (60fea48833c)
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.arg( value.length() ).arg( mMinLength ) );
37 return false;
38 }
39
40 if ( mMaxLength >= 0 && value.length() > mMaxLength )
41 {
42 QgsDebugError( u"Can't set value for settings. String length '%1' is longer than maximum length '%2'."_s.arg( value.length() ).arg( mMinLength ) );
43 return false;
44 }
45
46 return true;
47}
48
49QString QgsSettingsEntryString::convertFromVariant( const QVariant &value ) const
50{
51 return value.toString();
52}
53
58
60{
61 return mMinLength;
62}
63
65{
66 return mMaxLength;
67}
68
69QStringList QgsSettingsEntryStringList::convertFromVariant( const QVariant &value ) const
70{
71 return value.toStringList();
72}
73
78
79
81{
82 return value.toBool();
83}
84
85
90
91
92bool QgsSettingsEntryInteger::checkValuePrivate( const int &value ) const
93{
94 if ( value < mMinValue )
95 {
96 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." ).arg( QString::number( value ) ).arg( QString::number( mMinValue ) ) );
97 return false;
98 }
99
100 if ( value > mMaxValue )
101 {
102 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." ).arg( QString::number( value ) ).arg( QString::number( mMaxValue ) ) );
103 return false;
104 }
105
106 return true;
107}
108
110{
111 return value.toLongLong();
112}
113
118
120{
121 return mMaxValue;
122}
123
125{
126 return mMaxValue;
127}
128
129bool QgsSettingsEntryInteger64::checkValuePrivate( const qlonglong &value ) const
130{
131 if ( value < mMinValue )
132 {
133 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." ).arg( QString::number( value ) ).arg( QString::number( mMinValue ) ) );
134 return false;
135 }
136
137 if ( value > mMaxValue )
138 {
139 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." ).arg( QString::number( value ) ).arg( QString::number( mMaxValue ) ) );
140 return false;
141 }
142
143 return true;
144}
145
146qlonglong QgsSettingsEntryInteger64::convertFromVariant( const QVariant &value ) const
147{
148 return value.toLongLong();
149}
150
155
157{
158 return mMaxValue;
159}
160
162{
163 return mMaxValue;
164}
165
166
167bool QgsSettingsEntryDouble::checkValuePrivate( const double &value ) const
168{
169 if ( value < mMinValue )
170 {
171 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is less than minimum value '%2'." ).arg( QString::number( value ), QString::number( mMinValue ) ) );
172 return false;
173 }
174
175 if ( value > mMaxValue )
176 {
177 QgsDebugError( QObject::tr( "Can't set value for setting. Value '%1' is greater than maximum value '%2'." ).arg( QString::number( value ), QString::number( mMaxValue ) ) );
178 return false;
179 }
180
181 return true;
182}
183
185{
186 return value.toDouble();
187}
188
193
195{
196 return mMinValue;
197}
198
200{
201 return mMaxValue;
202}
203
208
210{
211 return mDisplayHintDecimals;
212}
213
215{
216 return value.value<QColor>();
217}
218
223
224bool QgsSettingsEntryColor::checkValuePrivate( const QColor &value ) const
225{
226 if ( !mAllowAlpha && value.alpha() != 255 )
227 {
228 QgsDebugError( u"Setting %1 doesn't allow transparency and the given color has transparency."_s.arg( definitionKey() ) );
229 return false;
230 }
231
232 return true;
233}
234
235bool QgsSettingsEntryColor::copyValueFromKeys( const QString &redKey, const QString &greenKey, const QString &blueKey, const QString &alphaKey, bool removeSettingAtKey ) const
236{
237 auto settings = QgsSettings::get();
238 if ( settings->contains( redKey ) && settings->contains( greenKey ) && settings->contains( blueKey ) && ( alphaKey.isNull() || settings->contains( alphaKey ) ) )
239 {
240 QVariant oldValue;
241 if ( alphaKey.isNull() )
242 oldValue = QColor( settings->value( redKey ).toInt(), settings->value( greenKey ).toInt(), settings->value( blueKey ).toInt() );
243 else
244 oldValue = QColor( settings->value( redKey ).toInt(), settings->value( greenKey ).toInt(), settings->value( blueKey ).toInt(), settings->value( alphaKey ).toInt() );
245
246 if ( removeSettingAtKey )
247 {
248 settings->remove( redKey );
249 settings->remove( greenKey );
250 settings->remove( blueKey );
251 settings->remove( alphaKey );
252 }
253
254 if ( value() != oldValue )
255 setVariantValue( oldValue );
256 return true;
257 }
258 return false;
259}
260
261void QgsSettingsEntryColor::copyValueToKeys( const QString &redKey, const QString &greenKey, const QString &blueKey, const QString &alphaKey ) const
262{
263 auto settings = QgsSettings::get();
264 const QColor color = value();
265 settings->setValue( redKey, color.red() );
266 settings->setValue( greenKey, color.green() );
267 settings->setValue( blueKey, color.blue() );
268 if ( !alphaKey.isNull() )
269 settings->setValue( alphaKey, color.alpha() );
270}
271
272QVariantMap QgsSettingsEntryVariantMap::convertFromVariant( const QVariant &value ) const
273{
274 return value.value<QVariantMap>();
275}
276
SettingsType
Types of settings entries.
Definition qgis.h:661
@ String
String.
Definition qgis.h:664
@ Variant
Generic variant.
Definition qgis.h:663
@ Integer
Integer.
Definition qgis.h:668
@ StringList
List of strings.
Definition qgis.h:665
@ Bool
Boolean.
Definition qgis.h:667
@ VariantMap
Map of strings.
Definition qgis.h:666
@ Color
Color.
Definition qgis.h:671
@ Double
Double precision number.
Definition qgis.h:669
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