QGIS API Documentation  3.25.0-Master (6b426f5f8a)
qgsfieldformatter.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsfieldformatter.cpp - QgsFieldFormatter
3 
4  ---------------------
5  begin : 2.12.2016
6  copyright : (C) 2016 by Matthias Kuhn
7  email : [email protected]
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 #include "qgsfieldformatter.h"
17 
18 #include "qgsfield.h"
19 #include "qgsfields.h"
20 #include "qgsvectorlayer.h"
21 #include "qgsvectordataprovider.h"
22 #include "qgsapplication.h"
23 
24 QString QgsFieldFormatter::representValue( QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config, const QVariant &cache, const QVariant &value ) const
25 {
26  Q_UNUSED( config )
27  Q_UNUSED( cache )
28 
29  if ( ! layer->fields().exists( fieldIndex ) )
30  return QString();
31 
32  QString defVal;
33  if ( layer->fields().fieldOrigin( fieldIndex ) == QgsFields::OriginProvider && layer->dataProvider() )
34  defVal = layer->dataProvider()->defaultValueClause( layer->fields().fieldOriginIndex( fieldIndex ) );
35 
36  if ( !defVal.isNull() && defVal == value )
37  {
38  return defVal;
39  }
40  else if ( value.isNull() )
41  {
43  }
44  else
45  {
46  return layer->fields().at( fieldIndex ).displayString( value );
47  }
48 }
49 
50 QVariant QgsFieldFormatter::sortValue( QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config, const QVariant &cache, const QVariant &value ) const
51 {
52  Q_UNUSED( layer )
53  Q_UNUSED( fieldIndex )
54  Q_UNUSED( config )
55  Q_UNUSED( cache )
56 
57  return value;
58 }
59 
60 Qt::AlignmentFlag QgsFieldFormatter::alignmentFlag( QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config ) const
61 {
62  Q_UNUSED( config )
63 
64  const QgsField field = layer->fields().at( fieldIndex );
65  if ( field.isNumeric() || field.isDateOrTime() )
66  return Qt::AlignRight;
67  else
68  return Qt::AlignLeft;
69 }
70 
71 QVariant QgsFieldFormatter::createCache( QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config ) const
72 {
73  Q_UNUSED( layer )
74  Q_UNUSED( fieldIndex )
75  Q_UNUSED( config )
76 
77  return QVariant();
78 }
79 
80 QList<QgsVectorLayerRef> QgsFieldFormatter::layerDependencies( const QVariantMap &config ) const
81 {
82  Q_UNUSED( config )
83  return QList<QgsVectorLayerRef>();
84 }
85 
86 QVariantList QgsFieldFormatter::availableValues( const QVariantMap &config, int countLimit, const QgsFieldFormatterContext &context ) const
87 {
88  Q_UNUSED( config )
89  Q_UNUSED( countLimit )
90  Q_UNUSED( context )
91 
92  return QVariantList();
93 }
94 
95 void QgsFieldFormatter::setFlags( const Flags &flags )
96 {
97  mFlags = flags;
98 }
static QString nullRepresentation()
This string is used to represent the value NULL throughout QGIS.
A context for field formatter containing information like the project.
virtual QVariant createCache(QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config) const
Create a cache for a given field.
Flags flags() const
Returns the flags.
virtual Qt::AlignmentFlag alignmentFlag(QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config) const
Returns the alignment for a particular field.
virtual QVariantList availableValues(const QVariantMap &config, int countLimit, const QgsFieldFormatterContext &context) const
Returns a list of the values that would be possible to select with this widget type On a RelationRefe...
virtual QVariant sortValue(QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config, const QVariant &cache, const QVariant &value) const
If the default sort order should be overwritten for this widget, you can transform the value in here.
virtual QList< QgsVectorLayerRef > layerDependencies(const QVariantMap &config) const SIP_SKIP
Returns a list of weak layer references to other layers required by this formatter for the given conf...
virtual QString representValue(QgsVectorLayer *layer, int fieldIndex, const QVariantMap &config, const QVariant &cache, const QVariant &value) const
Create a pretty String representation of the value.
void setFlags(const Flags &flags)
Sets the flags.
Encapsulate a field in an attribute table or data source.
Definition: qgsfield.h:51
bool isDateOrTime
Definition: qgsfield.h:55
QString displayString(const QVariant &v) const
Formats string for display.
Definition: qgsfield.cpp:255
Q_GADGET bool isNumeric
Definition: qgsfield.h:54
@ OriginProvider
Field comes from the underlying data provider of the vector layer (originIndex = index in provider's ...
Definition: qgsfields.h:51
FieldOrigin fieldOrigin(int fieldIdx) const
Returns the field's origin (value from an enumeration).
Definition: qgsfields.cpp:189
bool exists(int i) const
Returns if a field index is valid.
Definition: qgsfields.cpp:153
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
Definition: qgsfields.cpp:163
int fieldOriginIndex(int fieldIdx) const
Returns the field's origin index (its meaning is specific to each type of origin).
Definition: qgsfields.cpp:197
virtual QString defaultValueClause(int fieldIndex) const
Returns any default value clauses which are present at the provider for a specified field index.
Represents a vector layer which manages a vector based data sets.
QgsFields fields() const FINAL
Returns the list of fields of this layer.
QgsVectorDataProvider * dataProvider() FINAL
Returns the layer's data provider, it may be nullptr.
const QgsField & field
Definition: qgsfield.h:463