QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsfielddomain.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsfielddomain.h
3 ------------------
4 Date : January 2022
5 Copyright : (C) 2022 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#include "qgsfielddomain.h"
17
18#include <memory>
19
20#include "qgsvariantutils.h"
21
22//
23// QgsFieldDomain
24//
25
26QgsFieldDomain::QgsFieldDomain( const QString &name, const QString &description, QMetaType::Type fieldType )
27 : mName( name )
30{
31
32}
33
35 const QString &description,
36 QVariant::Type fieldType )
37 : QgsFieldDomain( name, description, QgsVariantUtils::variantTypeToMetaType( fieldType ) )
38{
39}
40
42
47
48//
49// QgsCodedValue
50//
51bool QgsCodedValue::operator==( const QgsCodedValue &other ) const
52{
53 return other.mCode == mCode && other.mValue == mValue;
54}
55
56bool QgsCodedValue::operator!=( const QgsCodedValue &other ) const
57{
58 return !( *this == other );
59}
60
61//
62// QgsCodedFieldDomain
63//
64
65QgsCodedFieldDomain::QgsCodedFieldDomain( const QString &name, const QString &description, QMetaType::Type fieldType, const QList<QgsCodedValue> &values )
67 , mValues( values )
68{
69
70}
71
72QgsCodedFieldDomain::QgsCodedFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType, const QList<QgsCodedValue> &values )
73 : QgsCodedFieldDomain( name, description, QgsVariantUtils::variantTypeToMetaType( fieldType ), values )
74{
75
76}
77
82
84{
85 return QObject::tr( "Coded Values" );
86}
87
89{
90 auto res = std::make_unique< QgsCodedFieldDomain >( mName, mDescription, mFieldType, mValues );
91 res->mSplitPolicy = mSplitPolicy;
92 res->mMergePolicy = mMergePolicy;
93 return res.release();
94}
95
96//
97// QgsRangeFieldDomain
98//
99
100QgsRangeFieldDomain::QgsRangeFieldDomain( const QString &name, const QString &description, QMetaType::Type fieldType, const QVariant &minimum, bool minimumIsInclusive, const QVariant &maximum, bool maximumIsInclusive )
102 , mMin( minimum )
103 , mMax( maximum )
104 , mMinIsInclusive( minimumIsInclusive )
105 , mMaxIsInclusive( maximumIsInclusive )
106{
107
108}
109
110QgsRangeFieldDomain::QgsRangeFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType, const QVariant &minimum, bool minimumIsInclusive, const QVariant &maximum, bool maximumIsInclusive )
112{
113}
114
119
121{
122 return QObject::tr( "Range" );
123}
124
126{
127 auto res = std::make_unique< QgsRangeFieldDomain >( mName, mDescription, mFieldType, mMin, mMinIsInclusive, mMax, mMaxIsInclusive );
128 res->mSplitPolicy = mSplitPolicy;
129 res->mMergePolicy = mMergePolicy;
130 return res.release();
131}
132
133
134//
135// QgsGlobFieldDomain
136//
137
138QgsGlobFieldDomain::QgsGlobFieldDomain( const QString &name, const QString &description, QMetaType::Type fieldType, const QString &glob )
140 , mGlob( glob )
141{
142
143}
144
145QgsGlobFieldDomain::QgsGlobFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType, const QString &glob )
146 : QgsGlobFieldDomain( name, description, QgsVariantUtils::variantTypeToMetaType( fieldType ), glob )
147{
148}
149
154
156{
157 return QObject::tr( "Glob" );
158}
159
161{
162 auto res = std::make_unique< QgsGlobFieldDomain >( mName, mDescription, mFieldType, mGlob );
163 res->mSplitPolicy = mSplitPolicy;
164 res->mMergePolicy = mMergePolicy;
165 return res.release();
166}
FieldDomainType
Types of field domain.
Definition qgis.h:3956
@ Coded
Coded field domain.
Definition qgis.h:3957
@ Range
Numeric range field domain (min/max).
Definition qgis.h:3958
@ Glob
Glob string pattern field domain.
Definition qgis.h:3959
QgsCodedFieldDomain * clone() const override
Clones the field domain.
QList< QgsCodedValue > values() const
Returns the enumeration as QgsCodedValue values.
QgsCodedFieldDomain(const QString &name, const QString &description, QMetaType::Type fieldType, const QList< QgsCodedValue > &values)
Constructor for QgsCodedFieldDomain, with the associated name, description and fieldType.
Qgis::FieldDomainType type() const override
Returns the type of field domain.
QString typeName() const override
Returns a translated name of the field domain type.
QgsCodedValue(const QVariant &code, const QString &value)
Constructor for QgsCodedValue, with the associated code and value.
bool operator==(const QgsCodedValue &other) const
bool operator!=(const QgsCodedValue &other) const
Qgis::FieldDomainSplitPolicy mSplitPolicy
void setFieldType(QMetaType::Type type)
Sets the associated field type.
virtual ~QgsFieldDomain()
QMetaType::Type fieldType() const
Returns the associated field type.
Qgis::FieldDomainMergePolicy mMergePolicy
virtual Qgis::FieldDomainType type() const =0
Returns the type of field domain.
QMetaType::Type mFieldType
QString name() const
Returns the name of the field domain.
QgsFieldDomain(const QString &name, const QString &description, QMetaType::Type fieldType)
Constructor for QgsFieldDomain, with the specified name, description and fieldType.
QString description() const
Returns the description of the field domain.
QgsGlobFieldDomain(const QString &name, const QString &description, QMetaType::Type fieldType, const QString &glob)
Constructor for QgsGlobFieldDomain, with the specified name, description and fieldType.
QString typeName() const override
Returns a translated name of the field domain type.
QString glob() const
Returns the glob expression.
QgsGlobFieldDomain * clone() const override
Clones the field domain.
Qgis::FieldDomainType type() const override
Returns the type of field domain.
Qgis::FieldDomainType type() const override
Returns the type of field domain.
QVariant minimum() const
Returns the minimum value.
bool maximumIsInclusive() const
Returns true if the maximum value is inclusive.
QgsRangeFieldDomain(const QString &name, const QString &description, QMetaType::Type fieldType, const QVariant &minimum, bool minimumIsInclusive, const QVariant &maximum, bool maximumIsInclusive)
Constructor for QgsRangeFieldDomain, with the specified name, description and fieldType.
QgsRangeFieldDomain * clone() const override
Clones the field domain.
bool minimumIsInclusive() const
Returns true if the minimum value is inclusive.
QVariant maximum() const
Returns the maximum value.
QString typeName() const override
Returns a translated name of the field domain type.
Contains utility functions for working with QVariants and QVariant types.
static QMetaType::Type variantTypeToMetaType(QVariant::Type variantType)
Converts a QVariant::Type to a QMetaType::Type.