QGIS API Documentation  3.21.0-Master (56b4176581)
qgsfieldconstraints.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsfieldconstraints.h
3  ---------------------
4  Date : November 2016
5  Copyright : (C) 2016 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 
16 #ifndef QGSFIELDCONSTRAINTS_H
17 #define QGSFIELDCONSTRAINTS_H
18 
19 #include <QString>
20 #include <QHash>
21 #include <QObject>
22 
23 #include "qgis_core.h"
24 
32 class CORE_EXPORT QgsFieldConstraints
33 {
34  Q_GADGET
35 
36  Q_PROPERTY( Constraints constraints READ constraints )
37 
38  public:
39 
44  {
45  ConstraintNotNull = 1,
46  ConstraintUnique = 1 << 1,
47  ConstraintExpression = 1 << 2,
48  };
49  Q_DECLARE_FLAGS( Constraints, Constraint )
50 
51 
55  {
56  ConstraintOriginNotSet = 0,
59  };
60 
65  {
66  ConstraintStrengthNotSet = 0,
69  };
70 
75 
81  Constraints constraints() const { return mConstraints; }
82 
88  ConstraintOrigin constraintOrigin( Constraint constraint ) const;
89 
96  ConstraintStrength constraintStrength( Constraint constraint ) const;
97 
103  void setConstraintStrength( Constraint constraint, ConstraintStrength strength );
104 
110  void setConstraint( Constraint constraint, ConstraintOrigin origin = ConstraintOriginLayer );
111 
117  void removeConstraint( Constraint constraint ) { mConstraints &= ~constraint; }
118 
125  QString constraintExpression() const;
126 
133  QString constraintDescription() const { return mExpressionConstraintDescription; }
134 
142  void setConstraintExpression( const QString &expression, const QString &description = QString() );
143 
144  // TODO c++20 - replace with = default
145  bool operator==( const QgsFieldConstraints &other ) const;
146 
147  private:
148 
150  Constraints mConstraints;
151 
153  QHash< Constraint, ConstraintOrigin > mConstraintOrigins;
154 
156  QHash< Constraint, ConstraintStrength > mConstraintStrengths;
157 
159  QString mExpressionConstraint;
160 
162  QString mExpressionConstraintDescription;
163 };
164 
165 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsFieldConstraints::Constraints )
166 
167 #endif //QGSFIELDCONSTRAINTS_H
Stores information about constraints which may be present on a field.
ConstraintStrength
Strength of constraints.
@ ConstraintStrengthSoft
User is warned if constraint is violated but feature can still be accepted.
@ ConstraintStrengthHard
Constraint must be honored before feature can be accepted.
ConstraintOrigin
Origin of constraints.
@ ConstraintOriginProvider
Constraint was set at data provider.
@ ConstraintOriginLayer
Constraint was set by layer.
Constraint
Constraints which may be present on a field.
Constraints constraints() const
Returns any constraints which are present for the field.
void removeConstraint(Constraint constraint)
Removes a constraint from the field.
QString constraintDescription() const
Returns the descriptive name for the constraint expression.
QgsFieldConstraints()
Constructor for QgsFieldConstraints.
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsField::ConfigurationFlags) CORE_EXPORT QDataStream &operator<<(QDataStream &out
Writes the field to stream out. QGIS version compatibility is not guaranteed.