QGIS API Documentation 3.43.0-Master (b60ef06885e)
qgssettingseditorwidgetregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgssettingseditorwidgetregistry.cpp
3 ---------------------
4 begin : April 2023
5 copyright : (C) 2023 by Denis Rouzaud
6 email : denis@opengis.ch
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17
18#include "qgis.h"
19#include "qgslogger.h"
23#include "qgssettingsentry.h"
24
25#if defined( HAVE_QTSERIALPORT )
26#include <QSerialPort>
27#endif
28
29
31{
37
38 // enum
39#if defined( HAVE_QTSERIALPORT )
44#endif
56
60
61 // flags
63}
64
69
71{
72 if ( mWrappers.contains( wrapper->id() ) )
73 {
74 QgsDebugMsgLevel( QString( "Settings editor widget registry already contains a wrapper with id '%1'" ).arg( wrapper->id() ), 2 );
75 delete wrapper;
76 return false;
77 }
78
79 mWrappers.insert( wrapper->id(), wrapper );
80 return true;
81}
82
84{
85 mSpecificWrappers.insert( setting, wrapper );
86}
87
89{
90 QgsSettingsEditorWidgetWrapper *wrapper = mWrappers.value( id );
91 if ( wrapper )
92 {
93 return wrapper->createWrapper( parent );
94 }
95 else
96 {
97 QgsDebugError( QStringLiteral( "Setting factory was not found for '%1', returning the default string factory" ).arg( id ) );
98 return nullptr;
99 }
100}
101
102QWidget *QgsSettingsEditorWidgetRegistry::createEditor( const QgsSettingsEntryBase *setting, const QStringList &dynamicKeyPartList, QWidget *parent ) const
103{
104 if ( mSpecificWrappers.contains( setting ) )
105 {
106 return mSpecificWrappers.value( setting )->createEditor( setting, dynamicKeyPartList, parent );
107 }
108 QgsSettingsEditorWidgetWrapper *eww = createWrapper( setting->typeId(), parent );
109 if ( eww )
110 return eww->createEditor( setting, dynamicKeyPartList, parent );
111 else
112 return nullptr;
113}
A factory for editors of boolean settings with a checkbox.
A factory for editors of color settings with a color button.
A factory for editors for double settings with a double spin box.
void addWrapperForSetting(QgsSettingsEditorWidgetWrapper *wrapper, const QgsSettingsEntryBase *setting)
Adds an editor widget wrapper for a specific setting to the registry.
QWidget * createEditor(const QgsSettingsEntryBase *setting, const QStringList &dynamicKeyPartList, QWidget *parent=nullptr) const
Creates an editor widget for the given setting using the corresponding registered wrapper.
bool addWrapper(QgsSettingsEditorWidgetWrapper *wrapper)
Adds an editor widget wrapper to the registry If an editor widget with same id already exists,...
QgsSettingsEditorWidgetWrapper * createWrapper(const QString &id, QObject *parent) const
Returns a new instance of the editor widget for the given id.
Base class for settings editor wrappers.
virtual QgsSettingsEditorWidgetWrapper * createWrapper(QObject *parent=nullptr) const =0
Creates a new instance of the editor wrapper so it can be configured for a widget and a setting.
QWidget * createEditor(const QgsSettingsEntryBase *setting, const QStringList &dynamicKeyPartList=QStringList(), QWidget *parent=nullptr)
Creates the editor widget for the given setting.
virtual QString id() const =0
This id of the type of settings it handles.
Represents a settings entry and provides methods for reading and writing settings values.
virtual QString typeId() const
Returns the id of the type of settings This can be re-implemented in a custom implementation of a set...
A factory for editors for integer settings with a spin box.
A factory for editors for string settings with a line edit.
#define QgsDebugMsgLevel(str, level)
Definition qgslogger.h:41
#define QgsDebugError(str)
Definition qgslogger.h:40