QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
qgsfielddomainwidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsfielddomainwidget.h
3  ------------------
4  Date : February 2022
5  Copyright : (C) 2022 by Nyall Dawson
6  Email : nyall dot dawson at gmail dot com
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 #ifndef QGSFIELDDOMAINWIDGET_H
16 #define QGSFIELDDOMAINWIDGET_H
17 
18 #include "qgis_gui.h"
19 #include "qgis_sip.h"
20 #include "ui_qgsfielddomainwidgetbase.h"
21 #include "ui_qgsrangedomainwidgetbase.h"
22 #include "ui_qgsglobdomainwidgetbase.h"
23 #include "ui_qgscodedvaluedomainwidgetbase.h"
24 #include "qgis.h"
25 #include "qgsfielddomain.h"
26 #include <QAbstractTableModel>
27 #include <QDialog>
28 
29 class QDialogButtonBox;
30 
31 #ifndef SIP_RUN
32 
42 class GUI_EXPORT QgsAbstractFieldDomainWidget : public QWidget
43 {
44  Q_OBJECT
45 
46  public:
47 
51  QgsAbstractFieldDomainWidget( QWidget *parent SIP_TRANSFERTHIS = nullptr );
52 
54 
60  virtual void setFieldDomain( const QgsFieldDomain *domain ) = 0;
61 
69  virtual QgsFieldDomain *createFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType ) const = 0 SIP_FACTORY;
70 
74  virtual bool isValid() const = 0;
75 
76  signals:
77 
81  void changed();
82 
83 };
84 
94 class GUI_EXPORT QgsRangeDomainWidget : public QgsAbstractFieldDomainWidget, private Ui_QgsRangeDomainWidgetBase
95 {
96  Q_OBJECT
97 
98  public:
99 
103  QgsRangeDomainWidget( QWidget *parent SIP_TRANSFERTHIS = nullptr );
104 
105  void setFieldDomain( const QgsFieldDomain *domain ) override;
106  QgsFieldDomain *createFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType ) const override SIP_FACTORY;
107  bool isValid() const override;
108 
109 };
110 
120 class GUI_EXPORT QgsGlobDomainWidget : public QgsAbstractFieldDomainWidget, private Ui_QgsGlobDomainWidgetBase
121 {
122  Q_OBJECT
123 
124  public:
125 
129  QgsGlobDomainWidget( QWidget *parent SIP_TRANSFERTHIS = nullptr );
130 
131  void setFieldDomain( const QgsFieldDomain *domain ) override;
132  QgsFieldDomain *createFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType ) const override SIP_FACTORY;
133  bool isValid() const override;
134 };
135 
143 class GUI_EXPORT QgsCodedValueTableModel : public QAbstractTableModel
144 {
145  Q_OBJECT
146 
147  public:
148 
152  QgsCodedValueTableModel( QObject *parent );
153 
154  int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
155  int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
156  QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
157  bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ) override;
158  Qt::ItemFlags flags( const QModelIndex &index ) const override;
159  QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
160  bool insertRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
161  bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
162 
168  void setValues( const QList< QgsCodedValue > &values );
169 
175  QList< QgsCodedValue > values() const { return mValues; }
176 
177  private:
178 
179  QList<QgsCodedValue> mValues;
180 };
181 
182 
192 class GUI_EXPORT QgsCodedFieldDomainWidget : public QgsAbstractFieldDomainWidget, private Ui_QgsCodedValueDomainWidgetBase
193 {
194  Q_OBJECT
195 
196  public:
197 
201  QgsCodedFieldDomainWidget( QWidget *parent SIP_TRANSFERTHIS = nullptr );
202 
203  void setFieldDomain( const QgsFieldDomain *domain ) override;
204  QgsFieldDomain *createFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType ) const override SIP_FACTORY;
205  bool isValid() const override;
206 
207  private:
208 
209  QgsCodedValueTableModel *mModel = nullptr;
210 
211 };
212 #endif
213 
220 class GUI_EXPORT QgsFieldDomainWidget : public QWidget, private Ui_QgsFieldDomainWidgetBase
221 {
222  Q_OBJECT
223 
224  public:
225 
229  QgsFieldDomainWidget( Qgis::FieldDomainType type, QWidget *parent SIP_TRANSFERTHIS = nullptr );
230 
236  void setFieldDomain( const QgsFieldDomain *domain );
237 
245  QgsFieldDomain *createFieldDomain() const SIP_FACTORY;
246 
252  bool isValid() const;
253 
254  signals:
255 
261  void validityChanged( bool isValid );
262 
263  private:
264 
265  QgsAbstractFieldDomainWidget *mDomainWidget = nullptr;
266 };
267 
268 
269 
276 class GUI_EXPORT QgsFieldDomainDialog: public QDialog
277 {
278  Q_OBJECT
279 
280  public:
281 
285  explicit QgsFieldDomainDialog( Qgis::FieldDomainType type, QWidget *parent SIP_TRANSFERTHIS = nullptr, Qt::WindowFlags flags = Qt::WindowFlags() );
286 
292  void setFieldDomain( const QgsFieldDomain *domain );
293 
301  QgsFieldDomain *createFieldDomain() const SIP_FACTORY;
302 
303  public slots:
304 
305  void accept() override;
306 
307  private slots:
308 
309  void validityChanged( bool isValid );
310 
311  private:
312  QgsFieldDomainWidget *mWidget = nullptr;
313  QDialogButtonBox *mButtonBox = nullptr;
314 };
315 
316 
317 #endif // QGSFIELDDOMAINWIDGET_H
QgsCodedFieldDomainWidget
A widget for configuration of the extended properties of a QgsCodedFieldDomain.
Definition: qgsfielddomainwidget.h:192
QgsAbstractFieldDomainWidget::setFieldDomain
virtual void setFieldDomain(const QgsFieldDomain *domain)=0
Sets the current field domain to show properties for in the widget.
QgsCodedValueTableModel::values
QList< QgsCodedValue > values() const
Returns the values from the model.
Definition: qgsfielddomainwidget.h:175
qgis.h
Qgis::FieldDomainType
FieldDomainType
Types of field domain.
Definition: qgis.h:1731
QgsRangeDomainWidget
A widget for configuration of the extended properties of a QgsRangeFieldDomain.
Definition: qgsfielddomainwidget.h:94
QgsAbstractFieldDomainWidget
Abstract base class for widgets which configure the extended properties of a QgsFieldDomain subclass.
Definition: qgsfielddomainwidget.h:42
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
QgsFieldDomainDialog
A dialog for configuration of the properties of a QgsFieldDomain.
Definition: qgsfielddomainwidget.h:276
qgsfielddomain.h
qgis_sip.h
QgsGlobDomainWidget
A widget for configuration of the extended properties of a QgsGlobFieldDomain.
Definition: qgsfielddomainwidget.h:120
QgsCodedValueTableModel
A table model for representing the values in a QgsCodedValue list.
Definition: qgsfielddomainwidget.h:143
QgsAbstractFieldDomainWidget::createFieldDomain
virtual QgsFieldDomain * createFieldDomain(const QString &name, const QString &description, QVariant::Type fieldType) const =0
Creates a new field domain using the properties from the widget.
QgsFieldDomainWidget
A widget for configuration of the properties of a QgsFieldDomain.
Definition: qgsfielddomainwidget.h:220
QgsAbstractFieldDomainWidget::isValid
virtual bool isValid() const =0
Returns true if the widget currently represents a valid field domain configuration.
QgsFieldDomain
Base class for field domains.
Definition: qgsfielddomain.h:33
SIP_TRANSFERTHIS
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53