QGIS API Documentation 3.41.0-Master (af5edcb665c)
Loading...
Searching...
No Matches
qgsfieldformatterregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsfieldformatterregistry.cpp - QgsFieldFormatterRegistry
3
4 ---------------------
5 begin : 2.12.2016
6 copyright : (C) 2016 by Matthias Kuhn
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#include "moc_qgsfieldformatterregistry.cpp"
19#include "qgsfieldformatter.h"
20
30#include "qgsreadwritelocker.h"
31
46
48{
49 const QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Write );
50 qDeleteAll( mFieldFormatters );
51 delete mFallbackFieldFormatter;
52}
53
55{
57 mFieldFormatters.insert( formatter->id(), formatter );
58 locker.unlock();
59 emit fieldFormatterAdded( formatter );
60}
61
66
68{
69 const QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Write );
70 if ( QgsFieldFormatter *formatter = mFieldFormatters.take( id ) )
71 {
72 emit fieldFormatterRemoved( formatter );
73 delete formatter;
74 }
75}
76
78{
79 const QgsReadWriteLocker locker( mLock, QgsReadWriteLocker::Read );
80 return mFieldFormatters.value( id, mFallbackFieldFormatter );
81}
82
84{
85 return mFallbackFieldFormatter;
86}
Field formatter for a checkbox field.
Field formatter for a date time field.
A default fallback field formatter in case no specialized field formatter is defined.
void fieldFormatterRemoved(QgsFieldFormatter *formatter)
Will be emitted just before a field formatter is removed and deleted.
QgsFieldFormatter * fallbackFieldFormatter() const
Returns a basic fallback field formatter which can be used to represent any field in an unspectacular...
void fieldFormatterAdded(QgsFieldFormatter *formatter)
Will be emitted after a new field formatter has been added.
void removeFieldFormatter(QgsFieldFormatter *formatter)
Remove a field formatter from the registry.
QgsFieldFormatterRegistry(QObject *parent=nullptr)
You should not normally need to create your own field formatter registry.
void addFieldFormatter(QgsFieldFormatter *formatter)
They will take precedence in order of adding them.
QgsFieldFormatter * fieldFormatter(const QString &id) const
Gets a field formatter by its id.
A field formatter helps to handle and display values for a field.
virtual QString id() const =0
Returns a unique id for this field formatter.
Field formatter for a key value field.
Field formatter for a list field.
Field formatter for a range (double) field with precision and locale.
The QgsReadWriteLocker class is a convenience class that simplifies locking and unlocking QReadWriteL...
@ Write
Lock for write.
void unlock()
Unlocks the lock.
Field formatter for a relation reference field.
Field formatter for a ValueMap field.
Field formatter for a value relation field.