QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgseditorwidgetwrapper.h
Go to the documentation of this file.
1/***************************************************************************
2 qgseditorwidgetwrapper.h
3 --------------------------------------
4 Date : 20.4.2013
5 Copyright : (C) 2013 Matthias Kuhn
6 Email : matthias at opengis dot 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
16#ifndef QGSEDITORWIDGETWRAPPER_H
17#define QGSEDITORWIDGETWRAPPER_H
18
19#include "qgis_sip.h"
20
21#include <QMap>
22#include <QObject>
23#include <QVariant>
24
25class QgsVectorLayer;
26class QgsField;
27
28#include "qgswidgetwrapper.h"
29#include "qgis_gui.h"
30#include "qgis_sip.h"
31
32
50{
51 Q_OBJECT
52
55
56 public:
57
67
76 explicit QgsEditorWidgetWrapper( QgsVectorLayer *vl, int fieldIdx, QWidget *editor = nullptr, QWidget *parent SIP_TRANSFERTHIS = nullptr );
77
87 virtual QVariant value() const = 0;
88
93 virtual QStringList additionalFields() const { return QStringList(); }
94
101 virtual QVariantList additionalFieldValues() const { return QVariantList(); }
102
110 int fieldIdx() const;
111
119 QgsField field() const;
120
128 QVariant defaultValue() const;
129
135 static QgsEditorWidgetWrapper *fromWidget( QWidget *widget ); // cppcheck-suppress duplInheritedMember
136
142 static bool isInTable( const QWidget *parent );
143
150 void setEnabled( bool enabled ) override;
151
155 virtual void showIndeterminateState() {}
156
163 void updateConstraint( const QgsFeature &featureContext, QgsFieldConstraints::ConstraintOrigin constraintOrigin = QgsFieldConstraints::ConstraintOriginNotSet );
164
174 void updateConstraint( const QgsVectorLayer *layer, int index, const QgsFeature &feature, QgsFieldConstraints::ConstraintOrigin constraintOrigin = QgsFieldConstraints::ConstraintOriginNotSet );
175
182 void updateConstraint( QgsEditorWidgetWrapper::ConstraintResult constraintResult, const QString &constraintFailureReason );
183
191 bool isValidConstraint() const;
192
198 bool isBlockingCommit() const;
199
205 QString constraintFailureReason() const;
206
211 virtual void setHint( const QString &hintText );
212
218 ConstraintResult constraintResult() const;
219
227 bool constraintResultVisible() const;
228
237 void setConstraintResultVisible( bool constraintResultVisible );
238
239 signals:
240
247 Q_DECL_DEPRECATED void valueChanged( const QVariant &value );
248
257 void valuesChanged( const QVariant &value, const QVariantList &additionalFieldValues = QVariantList() );
258
267 void constraintStatusChanged( const QString &constraint, const QString &desc, const QString &err, QgsEditorWidgetWrapper::ConstraintResult status );
268
272 void constraintResultVisibleChanged( bool visible );
273
274 public slots:
275
283 void setFeature( const QgsFeature &feature ) override;
284
285 // TODO Q_DECL_DEPRECATED
286
294 virtual void setValue( const QVariant &value ) SIP_DEPRECATED;
295
302 void setValues( const QVariant &value, const QVariantList &additionalValues );
303
307 void emitValueChanged();
308
320 virtual void parentFormValueChanged( const QString &attribute, const QVariant &value );
321
322 protected:
323
335 virtual void updateConstraintWidgetStatus();
336
337
344 QgsFeature formFeature() const { return mFormFeature; }
345
351 void setFormFeature( const QgsFeature &feature ) { mFormFeature = feature; }
352
360 bool setFormFeatureAttribute( const QString &attributeName, const QVariant &attributeValue );
361
362 private:
363
373 virtual void updateValues( const QVariant &value, const QVariantList &additionalValues = QVariantList() ); //TODO QGIS 4: make it pure virtual
374
375 // TODO QGIS 4: remove
376 bool isRunningDeprecatedSetValue = false;
377
381 int mFieldIdx = -1;
382
383 QList<int> mAdditionalFieldIndexes;
384
388 QgsFeature mFormFeature;
389
393 bool mValidConstraint;
394
396 bool mIsBlockingCommit;
397
399 QString mConstraintFailureReason;
400
402 ConstraintResult mConstraintResult = ConstraintResultPass;
403
405 bool mConstraintResultVisible = false;
406
407 mutable QVariant mDefaultValue; // Cache default value, we don't want to retrieve different serial numbers if called repeatedly
408};
409
410// We'll use this class inside a QVariant in the widgets properties
412
413#endif // QGSEDITORWIDGETWRAPPER_H
Manages an editor widget.
QgsFeature formFeature() const
The feature currently being edited, in its current state.
Q_DECL_DEPRECATED void valueChanged(const QVariant &value)
Emit this signal, whenever the value changed.
virtual void updateConstraintWidgetStatus()
This should update the widget with a visual cue if a constraint status changed.
void setFormFeature(const QgsFeature &feature)
Set the feature currently being edited to feature.
virtual QVariant value() const =0
Will be used to access the widget's value.
virtual QVariantList additionalFieldValues() const
Will be used to access the widget's values for potential additional fields handled by the widget.
virtual void parentFormValueChanged(const QString &attribute, const QVariant &value)
Is called in embedded form widgets when an attribute value in the parent form has changed.
virtual void showIndeterminateState()
Sets the widget to display in an indeterminate "mixed value" state.
QgsEditorWidgetWrapper(QgsVectorLayer *vl, int fieldIdx, QWidget *editor=nullptr, QWidget *parent=nullptr)
Create a new widget wrapper.
virtual QStringList additionalFields() const
Returns the list of additional fields which the editor handles.
void constraintResultVisibleChanged(bool visible)
Emit this signal when the constraint result visibility changed.
void valuesChanged(const QVariant &value, const QVariantList &additionalFieldValues=QVariantList())
Emit this signal, whenever the value changed.
void setValues(const QVariant &value, const QVariantList &additionalValues)
Is called when the value of the widget or additional field values needs to be changed.
void emitValueChanged()
Will call the value() method to determine the emitted value.
ConstraintResult
Result of constraint checks.
@ ConstraintResultFailSoft
Widget failed at least one soft (non-enforced) constraint.
@ ConstraintResultPass
Widget passed constraints successfully.
@ ConstraintResultFailHard
Widget failed at least one hard (enforced) constraint.
void constraintStatusChanged(const QString &constraint, const QString &desc, const QString &err, QgsEditorWidgetWrapper::ConstraintResult status)
Emit this signal when the constraint status changed.
virtual void setValue(const QVariant &value)
Is called when the value of the widget needs to be changed.
void setConstraintResultVisible(bool constraintResultVisible)
Sets whether the constraint result is visible.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
ConstraintOrigin
Origin of constraints.
@ ConstraintOriginNotSet
Constraint is not set.
Encapsulate a field in an attribute table or data source.
Definition qgsfield.h:54
Represents a vector layer which manages a vector based dataset.
virtual void setFeature(const QgsFeature &feature)=0
Is called when the value of the widget needs to be changed.
static QgsWidgetWrapper * fromWidget(QWidget *widget)
Will return a wrapper for a given widget.
QgsWidgetWrapper(QgsVectorLayer *vl, QWidget *editor=nullptr, QWidget *parent=nullptr)
Create a new widget wrapper.
virtual void setEnabled(bool enabled)
Is used to enable or disable the edit functionality of the managed widget.
#define SIP_DEPRECATED
Definition qgis_sip.h:114
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:53
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)