QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
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 "qgsxmlutils.h"
19#include "qgsreadwritecontext.h"
20
21#include <QLocale>
22
24{
25 const QLocale l;
26#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
27 mThousandsSep = l.groupSeparator();
28 mDecimalSep = l.decimalPoint();
29 mPercent = l.percent();
30 mZeroDigit = l.zeroDigit();
31 mNegativeSign = l.negativeSign();
32 mPositiveSign = l.positiveSign();
33 mExponential = l.exponential();
34#else
35 // With Qt6, these methods return strings to be prepared
36 // for utf-16 surrogates
37 // Do we care? If yes, we need to switch all members of QgsNumericFormatContext to QString
38 mThousandsSep = l.groupSeparator().at( 0 );
39 mDecimalSep = l.decimalPoint().at( 0 );
40 mPercent = l.percent().at( 0 );
41 mZeroDigit = l.zeroDigit().at( 0 );
42 mNegativeSign = l.negativeSign().at( 0 );
43 mPositiveSign = l.positiveSign().at( 0 );
44 mExponential = l.exponential().at( 0 );
45#endif
46}
47
49{
50 return DEFAULT_SORT_KEY;
51}
52
54{
55 return 1234.56789123456;
56}
57
58void QgsNumericFormat::writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const
59{
60 const QVariantMap config = configuration( context );
61 const QDomElement configElement = QgsXmlUtils::writeVariant( config, document );
62 element.appendChild( configElement );
63 element.setAttribute( QStringLiteral( "id" ), id() );
64}
65
67{
68 return id() == other.id() && configuration( QgsReadWriteContext() ) == other.configuration( QgsReadWriteContext() );
69}
70
72{
73 return !operator==( other );
74}
QgsNumericFormatContext()
Constructor for QgsNumericFormatContext.
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.