QGIS API Documentation  3.20.0-Odense (decaadbb31)
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 
19 #include "qgsbasicnumericformat.h"
25 #include "qgsxmlutils.h"
26 
28 {
36 }
37 
39 {
40  qDeleteAll( mFormats );
41 }
42 
44 {
45  return mFormats.keys();
46 }
47 
49 {
50  if ( !format )
51  return;
52 
53  mFormats.insert( format->id(), format );
54 }
55 
56 void QgsNumericFormatRegistry::removeFormat( const QString &id )
57 {
58  if ( QgsNumericFormat *format = mFormats.take( id ) )
59  {
60  delete format;
61  }
62 }
63 
65 {
66  if ( mFormats.contains( id ) )
67  return mFormats.value( id )->clone();
68 
69  return new QgsFallbackNumericFormat();
70 }
71 
72 QgsNumericFormat *QgsNumericFormatRegistry::create( const QString &id, const QVariantMap &configuration, const QgsReadWriteContext &context ) const
73 {
74  if ( mFormats.contains( id ) )
75  return mFormats.value( id )->create( configuration, context );
76 
77  return new QgsFallbackNumericFormat();
78 }
79 
80 QgsNumericFormat *QgsNumericFormatRegistry::createFromXml( const QDomElement &element, const QgsReadWriteContext &context ) const
81 {
82  const QVariantMap configuration = QgsXmlUtils::readVariant( element.firstChildElement() ).toMap();
83  const QString id = element.attribute( QStringLiteral( "id" ) );
84 
85  if ( mFormats.contains( id ) )
86  return mFormats.value( id )->create( configuration, context );
87 
88  return new QgsFallbackNumericFormat();
89 }
90 
92 {
93  return new QgsFallbackNumericFormat();
94 }
95 
96 QString QgsNumericFormatRegistry::visibleName( const QString &id ) const
97 {
98  if ( mFormats.contains( id ) )
99  return mFormats.value( id )->visibleName();
100 
101  return QString();
102 }
103 
104 int QgsNumericFormatRegistry::sortKey( const QString &id ) const
105 {
106  if ( mFormats.contains( id ) )
107  return mFormats.value( id )->sortKey();
108 
109  return 0;
110 }
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....
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.