Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgscurrencynumericformat.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 "qgscurrencynumericformat.h" 18 : : #include "qgis.h" 19 : : 20 : : 21 : 5 : QgsCurrencyNumericFormat::QgsCurrencyNumericFormat() 22 : 10 : : mPrefix( QStringLiteral( "$" ) ) 23 : 10 : { 24 : 5 : setNumberDecimalPlaces( 2 ); 25 : 5 : setShowTrailingZeros( true ); 26 : 5 : } 27 : : 28 : 5 : QString QgsCurrencyNumericFormat::id() const 29 : : { 30 : 10 : return QStringLiteral( "currency" ); 31 : : } 32 : : 33 : 0 : QString QgsCurrencyNumericFormat::visibleName() const 34 : : { 35 : 0 : return QObject::tr( "Currency" ); 36 : : } 37 : : 38 : 0 : int QgsCurrencyNumericFormat::sortKey() 39 : : { 40 : 0 : return QgsNumericFormat::sortKey(); 41 : : } 42 : : 43 : 0 : double QgsCurrencyNumericFormat::suggestSampleValue() const 44 : : { 45 : 0 : return 1234.56; 46 : : } 47 : : 48 : 0 : QString QgsCurrencyNumericFormat::formatDouble( double value, const QgsNumericFormatContext &context ) const 49 : : { 50 : 0 : QString res = QgsBasicNumericFormat::formatDouble( value, context ); 51 : 0 : if ( value < 0 || ( value > 0 && showPlusSign() ) ) 52 : 0 : return res.at( 0 ) + mPrefix + res.mid( 1 ) + mSuffix; 53 : : else 54 : 0 : return mPrefix + res + mSuffix; 55 : 0 : } 56 : : 57 : 0 : QgsNumericFormat *QgsCurrencyNumericFormat::clone() const 58 : : { 59 : 0 : return new QgsCurrencyNumericFormat( *this ); 60 : : } 61 : : 62 : 0 : QgsNumericFormat *QgsCurrencyNumericFormat::create( const QVariantMap &configuration, const QgsReadWriteContext &context ) const 63 : : { 64 : 0 : std::unique_ptr< QgsCurrencyNumericFormat > res = std::make_unique< QgsCurrencyNumericFormat >(); 65 : 0 : res->setConfiguration( configuration, context ); 66 : 0 : res->mPrefix = configuration.value( QStringLiteral( "prefix" ), QStringLiteral( "$" ) ).toString(); 67 : 0 : res->mSuffix = configuration.value( QStringLiteral( "suffix" ), QString() ).toString(); 68 : : 69 : : // override base class default for number of decimal places -- we want to default to 2, showing trailing zeros 70 : 0 : res->setNumberDecimalPlaces( configuration.value( QStringLiteral( "decimals" ), 2 ).toInt() ); 71 : 0 : res->setShowTrailingZeros( configuration.value( QStringLiteral( "show_trailing_zeros" ), true ).toBool() ); 72 : 0 : res->setRoundingType( QgsBasicNumericFormat::DecimalPlaces ); 73 : : 74 : 0 : return res.release(); 75 : 0 : } 76 : : 77 : 0 : QVariantMap QgsCurrencyNumericFormat::configuration( const QgsReadWriteContext &context ) const 78 : : { 79 : 0 : QVariantMap res = QgsBasicNumericFormat::configuration( context ); 80 : 0 : res.insert( QStringLiteral( "prefix" ), mPrefix ); 81 : 0 : res.insert( QStringLiteral( "suffix" ), mSuffix ); 82 : 0 : return res; 83 : 0 : } 84 : : 85 : 0 : QString QgsCurrencyNumericFormat::prefix() const 86 : : { 87 : 0 : return mPrefix; 88 : : } 89 : : 90 : 0 : void QgsCurrencyNumericFormat::setPrefix( const QString &prefix ) 91 : : { 92 : 0 : mPrefix = prefix; 93 : 0 : } 94 : : 95 : 0 : QString QgsCurrencyNumericFormat::suffix() const 96 : : { 97 : 0 : return mSuffix; 98 : : } 99 : : 100 : 0 : void QgsCurrencyNumericFormat::setSuffix( const QString &suffix ) 101 : : { 102 : 0 : mSuffix = suffix; 103 : 0 : }