QGIS API Documentation 3.99.0-Master (09f76ad7019)
Loading...
Searching...
No Matches
qgsrangefieldformatter.cpp
Go to the documentation of this file.
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
18
19#include "qgsapplication.h"
20#include "qgsfield.h"
21#include "qgssettings.h"
22#include "qgsvariantutils.h"
23#include "qgsvectorlayer.h"
24
25#include <QLocale>
26#include <QString>
27
28using namespace Qt::StringLiterals;
29
31{
32 return u"Range"_s;
33}
34
35QString QgsRangeFieldFormatter::representValue( QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config, const QVariant &cache, const QVariant &value ) const
36{
37 Q_UNUSED( cache )
38 Q_UNUSED( config )
39
40 if ( QgsVariantUtils::isNull( value ) )
41 {
43 }
44
45 QString result;
46
47 const QgsField field = layer->fields().at( fieldIndex );
48
49 if ( field.type() == QMetaType::Type::Double &&
50 config.contains( u"Precision"_s ) &&
51 value.isValid( ) )
52 {
53 bool ok;
54 const double val( value.toDouble( &ok ) );
55 if ( ok )
56 {
57 const int precision( config[ u"Precision"_s ].toInt( &ok ) );
58 if ( ok )
59 {
60 // TODO: make the format configurable!
61 result = QLocale().toString( val, 'f', precision );
62 }
63 }
64 }
65 else if ( ( field.type() == QMetaType::Type::Int ) &&
66 value.isValid( ) )
67 {
68 bool ok;
69 const double val( value.toInt( &ok ) );
70 if ( ok )
71 {
72 result = QLocale().toString( val, 'f', 0 );
73 }
74 }
75 else if ( ( field.type() == QMetaType::Type::LongLong ) &&
76 value.isValid( ) )
77 {
78 bool ok;
79 const double val( value.toLongLong( &ok ) );
80 if ( ok )
81 {
82 result = QLocale().toString( val, 'f', 0 );
83 }
84 }
85 else
86 {
87 result = value.toString();
88 }
89 return result;
90}
static QString nullRepresentation()
Returns the string used to represent the value NULL throughout QGIS.
Encapsulate a field in an attribute table or data source.
Definition qgsfield.h:56
QMetaType::Type type
Definition qgsfield.h:63
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
QString id() const override
Returns a unique id for this field formatter.
QString representValue(QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config, const QVariant &cache, const QVariant &value) const override
Create a pretty String representation of the value.
static bool isNull(const QVariant &variant, bool silenceNullWarnings=false)
Returns true if the specified variant should be considered a NULL value.
Represents a vector layer which manages a vector based dataset.