QGIS API Documentation  3.14.0-Pi (9f7028fd23)
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 }
qgsnumericformatregistry.h
qgsfallbacknumericformat.h
QgsReadWriteContext
Definition: qgsreadwritecontext.h:34
QgsFallbackNumericFormat
Definition: qgsfallbacknumericformat.h:28
QgsNumericFormatRegistry::formats
QStringList formats() const
Returns a list of the format IDs currently contained in the registry.
Definition: qgsnumericformatregistry.cpp:43
qgsfractionnumericformat.h
QgsNumericFormat
Definition: qgsnumericformat.h:217
qgscurrencynumericformat.h
QgsNumericFormatRegistry::~QgsNumericFormatRegistry
~QgsNumericFormatRegistry()
Definition: qgsnumericformatregistry.cpp:38
QgsBasicNumericFormat
Definition: qgsbasicnumericformat.h:31
QgsNumericFormatRegistry::addFormat
void addFormat(QgsNumericFormat *format)
Adds a new format to the registry.
Definition: qgsnumericformatregistry.cpp:48
qgsbearingnumericformat.h
QgsPercentageNumericFormat
Definition: qgspercentagenumericformat.h:28
QgsNumericFormat::id
virtual QString id() const =0
Returns a unique id for this numeric format.
QgsXmlUtils::readVariant
static QVariant readVariant(const QDomElement &element)
Read a QVariant from a QDomElement.
Definition: qgsxmlutils.cpp:251
QgsNumericFormatRegistry::create
QgsNumericFormat * create(const QString &id, const QVariantMap &configuration, const QgsReadWriteContext &context) const
Creates a new numeric format by id, using the supplied configuration.
Definition: qgsnumericformatregistry.cpp:72
QgsNumericFormatRegistry::QgsNumericFormatRegistry
QgsNumericFormatRegistry()
You should not normally need to create your own numeric format registry.
Definition: qgsnumericformatregistry.cpp:27
QgsNumericFormatRegistry::sortKey
int sortKey(const QString &id) const
Returns the sorting key for the format with matching id.
Definition: qgsnumericformatregistry.cpp:104
qgsscientificnumericformat.h
qgsxmlutils.h
qgsnumericformat.h
QgsFractionNumericFormat
Definition: qgsfractionnumericformat.h:30
qgsbasicnumericformat.h
QgsScientificNumericFormat
Definition: qgsscientificnumericformat.h:28
QgsCurrencyNumericFormat
Definition: qgscurrencynumericformat.h:28
QgsNumericFormatRegistry::fallbackFormat
QgsNumericFormat * fallbackFormat() const
Returns a basic numeric formatter which can be used to represent any number in an default manner.
Definition: qgsnumericformatregistry.cpp:91
QgsNumericFormatRegistry::visibleName
QString visibleName(const QString &id) const
Returns the translated, user-visible name for the format with matching id.
Definition: qgsnumericformatregistry.cpp:96
QgsNumericFormatRegistry::removeFormat
void removeFormat(const QString &id)
Removes the format with matching id from the registry.
Definition: qgsnumericformatregistry.cpp:56
QgsBearingNumericFormat
Definition: qgsbearingnumericformat.h:28
qgspercentagenumericformat.h
QgsNumericFormatRegistry::format
QgsNumericFormat * format(const QString &id) const
Creates a new numeric format by id.
Definition: qgsnumericformatregistry.cpp:64
QgsNumericFormatRegistry::createFromXml
QgsNumericFormat * createFromXml(const QDomElement &element, const QgsReadWriteContext &context) const
Creates a new numeric format from an XML element.
Definition: qgsnumericformatregistry.cpp:80