QGIS API Documentation  3.21.0-Master (5b68dc587e)
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 100;
51 }
52 
54 {
55  return 1234.56789123456;
56 }
57 
58 void 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 }
75 
QgsNumericFormatContext()
Constructor for QgsNumericFormatContext.
A numeric formatter allows for formatting a numeric value for display, using a variety of different f...
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.