QGIS API Documentation 3.41.0-Master (3440c17df1d)
Loading...
Searching...
No Matches
qgsnumericformat.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsnumericformat.cpp
3 -------------------
4 begin : January 2020
5 copyright : (C) 2020 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16
17#include "qgsnumericformat.h"
18#include "moc_qgsnumericformat.cpp"
19#include "qgsxmlutils.h"
20#include "qgsreadwritecontext.h"
21
22#include <QLocale>
23
25{
26 const QLocale l;
27#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
28 mThousandsSep = l.groupSeparator();
29 mDecimalSep = l.decimalPoint();
30 mPercent = l.percent();
31 mZeroDigit = l.zeroDigit();
32 mNegativeSign = l.negativeSign();
33 mPositiveSign = l.positiveSign();
34 mExponential = l.exponential();
35#else
36 // With Qt6, these methods return strings to be prepared
37 // for utf-16 surrogates
38 // Do we care? If yes, we need to switch all members of QgsNumericFormatContext to QString
39 mThousandsSep = l.groupSeparator().at( 0 );
40 mDecimalSep = l.decimalPoint().at( 0 );
41 mPercent = l.percent().at( 0 );
42 mZeroDigit = l.zeroDigit().at( 0 );
43 mNegativeSign = l.negativeSign().at( 0 );
44 mPositiveSign = l.positiveSign().at( 0 );
45 mExponential = l.exponential().at( 0 );
46#endif
47}
48
50{
51 return mExpressionContext;
52}
53
55{
56 mExpressionContext = context;
57}
58
63
65{
66 return 1234.56789123456;
67}
68
69void QgsNumericFormat::writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const
70{
71 const QVariantMap config = configuration( context );
72 const QDomElement configElement = QgsXmlUtils::writeVariant( config, document );
73 element.appendChild( configElement );
74 element.setAttribute( QStringLiteral( "id" ), id() );
75}
76
78{
79 return id() == other.id() && configuration( QgsReadWriteContext() ) == other.configuration( QgsReadWriteContext() );
80}
81
83{
84 return !operator==( other );
85}
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context to use when evaluating QgsExpressions.
QgsNumericFormatContext()
Constructor for QgsNumericFormatContext.
QgsExpressionContext expressionContext() const
Returns the expression context to use when evaluating QgsExpressions.
A numeric formatter allows for formatting a numeric value for display, using a variety of different f...
static constexpr int DEFAULT_SORT_KEY
virtual int sortKey()
Returns a sorting key value, where formats with a lower sort key will be shown earlier in lists.
bool operator!=(const QgsNumericFormat &other) const
virtual QString id() const =0
Returns a unique id for this numeric format.
void writeXml(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const
Writes the format to an XML element.
bool operator==(const QgsNumericFormat &other) const
virtual double suggestSampleValue() const
Returns a suggested sample value which nicely represents the current format configuration.
virtual QVariantMap configuration(const QgsReadWriteContext &context) const =0
Returns the current configuration of the formatter.
The class is used as a container of context for various read/write operations on other objects.
static QDomElement writeVariant(const QVariant &value, QDomDocument &doc)
Write a QVariant to a QDomElement.