QGIS API Documentation 4.1.0-Master (60fea48833c)
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
32QgsFieldDomain::QgsFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType )
33 : QgsFieldDomain( name, description, QgsVariantUtils::variantTypeToMetaType( fieldType ) )
34{}
35
37
42
43//
44// QgsCodedValue
45//
46bool QgsCodedValue::operator==( const QgsCodedValue &other ) const
47{
48 return other.mCode == mCode && other.mValue == mValue;
49}
50
51bool QgsCodedValue::operator!=( const QgsCodedValue &other ) const
52{
53 return !( *this == other );
54}
55
56//
57// QgsCodedFieldDomain
58//
59
60QgsCodedFieldDomain::QgsCodedFieldDomain( const QString &name, const QString &description, QMetaType::Type fieldType, const QList<QgsCodedValue> &values )
62 , mValues( values )
63{}
64
65QgsCodedFieldDomain::QgsCodedFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType, const QList<QgsCodedValue> &values )
66 : QgsCodedFieldDomain( name, description, QgsVariantUtils::variantTypeToMetaType( fieldType ), values )
67{}
68
73
75{
76 return QObject::tr( "Coded Values" );
77}
78
80{
81 auto res = std::make_unique< QgsCodedFieldDomain >( mName, mDescription, mFieldType, mValues );
82 res->mSplitPolicy = mSplitPolicy;
83 res->mMergePolicy = mMergePolicy;
84 return res.release();
85}
86
87//
88// QgsRangeFieldDomain
89//
90
92 const QString &name, const QString &description, QMetaType::Type fieldType, const QVariant &minimum, bool minimumIsInclusive, const QVariant &maximum, bool maximumIsInclusive
93)
95 , mMin( minimum )
96 , mMax( maximum )
97 , mMinIsInclusive( minimumIsInclusive )
98 , mMaxIsInclusive( maximumIsInclusive )
99{}
100
102 const QString &name, const QString &description, QVariant::Type fieldType, const QVariant &minimum, bool minimumIsInclusive, const QVariant &maximum, bool maximumIsInclusive
103)
105{}
106
111
113{
114 return QObject::tr( "Range" );
115}
116
118{
119 auto res = std::make_unique< QgsRangeFieldDomain >( mName, mDescription, mFieldType, mMin, mMinIsInclusive, mMax, mMaxIsInclusive );
120 res->mSplitPolicy = mSplitPolicy;
121 res->mMergePolicy = mMergePolicy;
122 return res.release();
123}
124
125
126//
127// QgsGlobFieldDomain
128//
129
130QgsGlobFieldDomain::QgsGlobFieldDomain( const QString &name, const QString &description, QMetaType::Type fieldType, const QString &glob )
132 , mGlob( glob )
133{}
134
135QgsGlobFieldDomain::QgsGlobFieldDomain( const QString &name, const QString &description, QVariant::Type fieldType, const QString &glob )
136 : QgsGlobFieldDomain( name, description, QgsVariantUtils::variantTypeToMetaType( fieldType ), glob )
137{}
138
143
145{
146 return QObject::tr( "Glob" );
147}
148
150{
151 auto res = std::make_unique< QgsGlobFieldDomain >( mName, mDescription, mFieldType, mGlob );
152 res->mSplitPolicy = mSplitPolicy;
153 res->mMergePolicy = mMergePolicy;
154 return res.release();
155}
FieldDomainType
Types of field domain.
Definition qgis.h:4073
@ Coded
Coded field domain.
Definition qgis.h:4074
@ Range
Numeric range field domain (min/max).
Definition qgis.h:4075
@ Glob
Glob string pattern field domain.
Definition qgis.h:4076
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.