QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
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 { return new QgsBasicNumericFormatWidget( format ); }
32};
33
34class QgsBearingNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
35{
36 public:
37 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override { return new QgsBearingNumericFormatWidget( format ); }
38};
39
40class QgsGeographicCoordinateNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
41{
42 public:
43 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override { return new QgsGeographicCoordinateNumericFormatWidget( format ); }
44};
45
46class QgsCurrencyNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
47{
48 public:
49 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override { return new QgsCurrencyNumericFormatWidget( format ); }
50};
51
52class QgsPercentageNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
53{
54 public:
55 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override { return new QgsPercentageNumericFormatWidget( format ); }
56};
57
58class QgsScientificNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
59{
60 public:
61 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override { return new QgsScientificNumericFormatWidget( format ); }
62};
63
64class QgsFractionNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
65{
66 public:
67 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override { return new QgsFractionNumericFormatWidget( format ); }
68};
69
70class QgsExpressionBasedNumericFormatConfigurationWidgetFactory : public QgsNumericFormatConfigurationWidgetFactory
71{
72 public:
73 QgsNumericFormatWidget *create( const QgsNumericFormat *format ) const override { return new QgsExpressionBasedNumericFormatWidget( format ); }
74};
75
77
79{
80 addFormatConfigurationWidgetFactory( u"basic"_s, new QgsBasicNumericFormatConfigurationWidgetFactory() );
81 addFormatConfigurationWidgetFactory( u"bearing"_s, new QgsBearingNumericFormatConfigurationWidgetFactory() );
82 addFormatConfigurationWidgetFactory( u"currency"_s, new QgsCurrencyNumericFormatConfigurationWidgetFactory() );
83 addFormatConfigurationWidgetFactory( u"percentage"_s, new QgsPercentageNumericFormatConfigurationWidgetFactory() );
84 addFormatConfigurationWidgetFactory( u"scientific"_s, new QgsScientificNumericFormatConfigurationWidgetFactory() );
85 addFormatConfigurationWidgetFactory( u"fraction"_s, new QgsFractionNumericFormatConfigurationWidgetFactory() );
86 addFormatConfigurationWidgetFactory( u"geographiccoordinate"_s, new QgsGeographicCoordinateNumericFormatConfigurationWidgetFactory() );
87 addFormatConfigurationWidgetFactory( u"expression"_s, new QgsExpressionBasedNumericFormatConfigurationWidgetFactory() );
88}
89
91{
92 qDeleteAll( mFormatConfigurationWidgetFactories );
93}
94
96{
97 mFormatConfigurationWidgetFactories.insert( id, factory );
98}
99
101{
102 delete mFormatConfigurationWidgetFactories.value( id );
103 mFormatConfigurationWidgetFactories.remove( id );
104}
105
107{
108 if ( !format )
109 return nullptr;
110
111 auto it = mFormatConfigurationWidgetFactories.constFind( format->id() );
112 if ( it == mFormatConfigurationWidgetFactories.constEnd() )
113 return nullptr;
114
115 return it.value()->create( format );
116}
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.