Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsrangefieldformatter.cpp - QgsRangeFieldFormatter 3 : : 4 : : --------------------- 5 : : begin : 01/02/2018 6 : : copyright : (C) 2018 by Alessandro Pasotti 7 : : email : elpaso at itopen dot it 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 <QLocale> 18 : : 19 : : #include "qgsrangefieldformatter.h" 20 : : 21 : : #include "qgssettings.h" 22 : : #include "qgsfield.h" 23 : : #include "qgsvectorlayer.h" 24 : : #include "qgsapplication.h" 25 : : 26 : : 27 : 5 : QString QgsRangeFieldFormatter::id() const 28 : : { 29 : 10 : return QStringLiteral( "Range" ); 30 : : } 31 : : 32 : 0 : QString QgsRangeFieldFormatter::representValue( QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config, const QVariant &cache, const QVariant &value ) const 33 : : { 34 : 0 : Q_UNUSED( cache ) 35 : 0 : Q_UNUSED( config ) 36 : : 37 : 0 : if ( value.isNull() ) 38 : : { 39 : 0 : return QgsApplication::nullRepresentation(); 40 : : } 41 : : 42 : 0 : QString result; 43 : : 44 : 0 : const QgsField field = layer->fields().at( fieldIndex ); 45 : : 46 : 0 : if ( field.type() == QVariant::Double && 47 : 0 : config.contains( QStringLiteral( "Precision" ) ) && 48 : 0 : value.isValid( ) ) 49 : : { 50 : : bool ok; 51 : 0 : double val( value.toDouble( &ok ) ); 52 : 0 : if ( ok ) 53 : : { 54 : 0 : int precision( config[ QStringLiteral( "Precision" ) ].toInt( &ok ) ); 55 : 0 : if ( ok ) 56 : : { 57 : : // TODO: make the format configurable! 58 : 0 : result = QLocale().toString( val, 'f', precision ); 59 : 0 : } 60 : 0 : } 61 : 0 : } 62 : 0 : else if ( ( field.type() == QVariant::Int ) && 63 : 0 : value.isValid( ) ) 64 : : { 65 : : bool ok; 66 : 0 : double val( value.toInt( &ok ) ); 67 : 0 : if ( ok ) 68 : : { 69 : 0 : result = QLocale().toString( val, 'f', 0 ); 70 : 0 : } 71 : 0 : } 72 : 0 : else if ( ( field.type() == QVariant::LongLong ) && 73 : 0 : value.isValid( ) ) 74 : : { 75 : : bool ok; 76 : 0 : double val( value.toLongLong( &ok ) ); 77 : 0 : if ( ok ) 78 : : { 79 : 0 : result = QLocale().toString( val, 'f', 0 ); 80 : 0 : } 81 : 0 : } 82 : : else 83 : : { 84 : 0 : result = value.toString(); 85 : : } 86 : 0 : return result; 87 : 0 : }