Branch data Line data Source code
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 : : ***************************************************************************/ 15 : : #include "qgsnumericformatregistry.h" 16 : : #include "qgsnumericformat.h" 17 : : 18 : : #include "qgsfallbacknumericformat.h" 19 : : #include "qgsbasicnumericformat.h" 20 : : #include "qgsbearingnumericformat.h" 21 : : #include "qgscurrencynumericformat.h" 22 : : #include "qgspercentagenumericformat.h" 23 : : #include "qgsscientificnumericformat.h" 24 : : #include "qgsfractionnumericformat.h" 25 : : #include "qgsxmlutils.h" 26 : : 27 : 5 : QgsNumericFormatRegistry::QgsNumericFormatRegistry() 28 : : { 29 : 5 : addFormat( new QgsFallbackNumericFormat() ); 30 : 5 : addFormat( new QgsBasicNumericFormat() ); 31 : 5 : addFormat( new QgsBearingNumericFormat() ); 32 : 5 : addFormat( new QgsCurrencyNumericFormat() ); 33 : 5 : addFormat( new QgsPercentageNumericFormat() ); 34 : 5 : addFormat( new QgsScientificNumericFormat() ); 35 : 5 : addFormat( new QgsFractionNumericFormat() ); 36 : 5 : } 37 : : 38 : 5 : QgsNumericFormatRegistry::~QgsNumericFormatRegistry() 39 : : { 40 : 5 : qDeleteAll( mFormats ); 41 : 5 : } 42 : : 43 : 0 : QStringList QgsNumericFormatRegistry::formats() const 44 : : { 45 : 0 : return mFormats.keys(); 46 : : } 47 : : 48 : 35 : void QgsNumericFormatRegistry::addFormat( QgsNumericFormat *format ) 49 : : { 50 : 35 : if ( !format ) 51 : 0 : return; 52 : : 53 : 35 : mFormats.insert( format->id(), format ); 54 : 35 : } 55 : : 56 : 0 : void QgsNumericFormatRegistry::removeFormat( const QString &id ) 57 : : { 58 : 0 : if ( QgsNumericFormat *format = mFormats.take( id ) ) 59 : : { 60 : 0 : delete format; 61 : 0 : } 62 : 0 : } 63 : : 64 : 0 : QgsNumericFormat *QgsNumericFormatRegistry::format( const QString &id ) const 65 : : { 66 : 0 : if ( mFormats.contains( id ) ) 67 : 0 : return mFormats.value( id )->clone(); 68 : : 69 : 0 : return new QgsFallbackNumericFormat(); 70 : 0 : } 71 : : 72 : 0 : QgsNumericFormat *QgsNumericFormatRegistry::create( const QString &id, const QVariantMap &configuration, const QgsReadWriteContext &context ) const 73 : : { 74 : 0 : if ( mFormats.contains( id ) ) 75 : 0 : return mFormats.value( id )->create( configuration, context ); 76 : : 77 : 0 : return new QgsFallbackNumericFormat(); 78 : 0 : } 79 : : 80 : 0 : QgsNumericFormat *QgsNumericFormatRegistry::createFromXml( const QDomElement &element, const QgsReadWriteContext &context ) const 81 : : { 82 : 0 : const QVariantMap configuration = QgsXmlUtils::readVariant( element.firstChildElement() ).toMap(); 83 : 0 : const QString id = element.attribute( QStringLiteral( "id" ) ); 84 : : 85 : 0 : if ( mFormats.contains( id ) ) 86 : 0 : return mFormats.value( id )->create( configuration, context ); 87 : : 88 : 0 : return new QgsFallbackNumericFormat(); 89 : 0 : } 90 : : 91 : 0 : QgsNumericFormat *QgsNumericFormatRegistry::fallbackFormat() const 92 : : { 93 : 0 : return new QgsFallbackNumericFormat(); 94 : : } 95 : : 96 : 0 : QString QgsNumericFormatRegistry::visibleName( const QString &id ) const 97 : : { 98 : 0 : if ( mFormats.contains( id ) ) 99 : 0 : return mFormats.value( id )->visibleName(); 100 : : 101 : 0 : return QString(); 102 : 0 : } 103 : : 104 : 0 : int QgsNumericFormatRegistry::sortKey( const QString &id ) const 105 : : { 106 : 0 : if ( mFormats.contains( id ) ) 107 : 0 : return mFormats.value( id )->sortKey(); 108 : : 109 : 0 : return 0; 110 : 0 : }