QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsnumericformatregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsnumericformatregistry.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 * 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 ***************************************************************************/
16#include "qgsnumericformat.h"
17
26#include "qgsxmlutils.h"
27
29{
38}
39
41{
42 qDeleteAll( mFormats );
43}
44
46{
47 return mFormats.keys();
48}
49
51{
52 if ( !format )
53 return;
54
55 mFormats.insert( format->id(), format );
56}
57
59{
60 if ( QgsNumericFormat *format = mFormats.take( id ) )
61 {
62 delete format;
63 }
64}
65
67{
68 if ( mFormats.contains( id ) )
69 return mFormats.value( id )->clone();
70
71 return new QgsFallbackNumericFormat();
72}
73
74QgsNumericFormat *QgsNumericFormatRegistry::create( const QString &id, const QVariantMap &configuration, const QgsReadWriteContext &context ) const
75{
76 if ( mFormats.contains( id ) )
77 return mFormats.value( id )->create( configuration, context );
78
79 return new QgsFallbackNumericFormat();
80}
81
82QgsNumericFormat *QgsNumericFormatRegistry::createFromXml( const QDomElement &element, const QgsReadWriteContext &context ) const
83{
84 const QVariantMap configuration = QgsXmlUtils::readVariant( element.firstChildElement() ).toMap();
85 const QString id = element.attribute( QStringLiteral( "id" ) );
86
87 if ( mFormats.contains( id ) )
88 return mFormats.value( id )->create( configuration, context );
89
90 return new QgsFallbackNumericFormat();
91}
92
94{
95 return new QgsFallbackNumericFormat();
96}
97
98QString QgsNumericFormatRegistry::visibleName( const QString &id ) const
99{
100 if ( mFormats.contains( id ) )
101 return mFormats.value( id )->visibleName();
102
103 return QString();
104}
105
106int QgsNumericFormatRegistry::sortKey( const QString &id ) const
107{
108 if ( mFormats.contains( id ) )
109 return mFormats.value( id )->sortKey();
110
111 return 0;
112}
A numeric formatter which returns a simple text representation of a value.
A numeric formatter which returns a text representation of a direction/bearing.
A numeric formatter which returns a text representation of a currency value.
A basic numeric formatter which returns a simple text representation of a value.
A numeric formatter which returns a vulgar fractional representation of a decimal value (e....
A numeric formatter which returns a text representation of a geographic coordinate (latitude or longi...
int sortKey(const QString &id) const
Returns the sorting key for the format with matching id.
QgsNumericFormat * fallbackFormat() const
Returns a basic numeric formatter which can be used to represent any number in an default manner.
void removeFormat(const QString &id)
Removes the format with matching id from the registry.
QString visibleName(const QString &id) const
Returns the translated, user-visible name for the format with matching id.
QgsNumericFormat * format(const QString &id) const
Creates a new numeric format by id.
QStringList formats() const
Returns a list of the format IDs currently contained in the registry.
QgsNumericFormat * createFromXml(const QDomElement &element, const QgsReadWriteContext &context) const
Creates a new numeric format from an XML element.
QgsNumericFormatRegistry()
You should not normally need to create your own numeric format registry.
void addFormat(QgsNumericFormat *format)
Adds a new format to the registry.
QgsNumericFormat * create(const QString &id, const QVariantMap &configuration, const QgsReadWriteContext &context) const
Creates a new numeric format by id, using the supplied configuration.
A numeric formatter allows for formatting a numeric value for display, using a variety of different f...
virtual QString id() const =0
Returns a unique id for this numeric format.
A numeric formatter which returns a text representation of a percentage value.
The class is used as a container of context for various read/write operations on other objects.
A numeric formatter which returns a scientific notation representation of a value.
static QVariant readVariant(const QDomElement &element)
Read a QVariant from a QDomElement.