QGIS API Documentation 3.43.0-Master (b60ef06885e)
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.
Abstract base class for numeric formatters, which allow for formatting a numeric value for display.
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.
A container for the context for various read/write operations on objects.
static QDomElement writeVariant(const QVariant &value, QDomDocument &doc)
Write a QVariant to a QDomElement.