QGIS API Documentation 3.99.0-Master (e9821da5c6b)
Loading...
Searching...
No Matches
qgsnumericformatguiregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsnumericformatguiregistry.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 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19
20#include "qgis.h"
22
23#include <QString>
24
25using namespace Qt::StringLiterals;
26
28class QgsBasicNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
29{
30 public:
31 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
32 {
33 return new QgsBasicNumericFormatWidget( format );
34 }
35};
36
37class QgsBearingNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
38{
39 public:
40 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
41 {
42 return new QgsBearingNumericFormatWidget( format );
43 }
44};
45
46class QgsGeographicCoordinateNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
47{
48 public:
49 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
50 {
51 return new QgsGeographicCoordinateNumericFormatWidget( format );
52 }
53};
54
55class QgsCurrencyNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
56{
57 public:
58 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
59 {
60 return new QgsCurrencyNumericFormatWidget( format );
61 }
62};
63
64class QgsPercentageNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
65{
66 public:
67 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
68 {
69 return new QgsPercentageNumericFormatWidget( format );
70 }
71};
72
73class QgsScientificNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
74{
75 public:
76 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
77 {
78 return new QgsScientificNumericFormatWidget( format );
79 }
80};
81
82class QgsFractionNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
83{
84 public:
85 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
86 {
87 return new QgsFractionNumericFormatWidget( format );
88 }
89};
90
91class QgsExpressionBasedNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
92{
93 public:
94 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override
95 {
96 return new QgsExpressionBasedNumericFormatWidget( format );
97 }
98};
99
101
103{
104 addFormatConfigurationWidgetFactory( u"basic"_s, new QgsBasicNumericFormatConfigurationWidgetFactory() );
105 addFormatConfigurationWidgetFactory( u"bearing"_s, new QgsBearingNumericFormatConfigurationWidgetFactory() );
106 addFormatConfigurationWidgetFactory( u"currency"_s, new QgsCurrencyNumericFormatConfigurationWidgetFactory() );
107 addFormatConfigurationWidgetFactory( u"percentage"_s, new QgsPercentageNumericFormatConfigurationWidgetFactory() );
108 addFormatConfigurationWidgetFactory( u"scientific"_s, new QgsScientificNumericFormatConfigurationWidgetFactory() );
109 addFormatConfigurationWidgetFactory( u"fraction"_s, new QgsFractionNumericFormatConfigurationWidgetFactory() );
110 addFormatConfigurationWidgetFactory( u"geographiccoordinate"_s, new QgsGeographicCoordinateNumericFormatConfigurationWidgetFactory() );
111 addFormatConfigurationWidgetFactory( u"expression"_s, new QgsExpressionBasedNumericFormatConfigurationWidgetFactory() );
112}
113
115{
116 qDeleteAll( mFormatConfigurationWidgetFactories );
117}
118
120{
121 mFormatConfigurationWidgetFactories.insert( id, factory );
122}
123
125{
126 delete mFormatConfigurationWidgetFactories.value( id );
127 mFormatConfigurationWidgetFactories.remove( id );
128}
129
131{
132 if ( !format )
133 return nullptr;
134
135 auto it = mFormatConfigurationWidgetFactories.constFind( format->id() );
136 if ( it == mFormatConfigurationWidgetFactories.constEnd() )
137 return nullptr;
138
139 return it.value()->create( format );
140}
Interface base class for factories for numeric format configuration widgets.
virtual QgsNumericFormatWidget * create(const QgsNumericFormat *format) const =0
Create a new configuration widget for a format.
QgsNumericFormatWidget * formatConfigurationWidget(const QgsNumericFormat *format) const
Returns a new configuration widget for an format.
void addFormatConfigurationWidgetFactory(const QString &id, QgsNumericFormatConfigurationWidgetFactory *factory)
Add a new configuration widget factory for customizing a numeric format with the specified id.
void removeFormatConfigurationWidgetFactory(const QString &id)
Removes the configuration widget factory for customizing numeric formats with the specified id.
Base class for widgets which allow control over the properties of QgsNumericFormat subclasses.
Abstract base class for numeric formatters, which allow for formatting a numeric value for display.
virtual QString id() const =0
Returns a unique id for this numeric format.