Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsfield_p.h 3 : : ------------ 4 : : Date : May 2015 5 : : Copyright : (C) 2015 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 QGSFIELD_PRIVATE_H 17 : : #define QGSFIELD_PRIVATE_H 18 : : 19 : : /// @cond PRIVATE 20 : : 21 : : // 22 : : // W A R N I N G 23 : : // ------------- 24 : : // 25 : : // This file is not part of the QGIS API. It exists purely as an 26 : : // implementation detail. This header file may change from version to 27 : : // version without notice, or even be removed. 28 : : // 29 : : 30 : : #define SIP_NO_FILE 31 : : 32 : : #include "qgsfieldconstraints.h" 33 : : #include "qgseditorwidgetsetup.h" 34 : : #include "qgsdefaultvalue.h" 35 : : #include "qgsfield.h" 36 : : 37 : : #include <QString> 38 : : #include <QVariant> 39 : : #include <QSharedData> 40 : : 41 : : /*************************************************************************** 42 : : * This class is considered CRITICAL and any change MUST be accompanied with 43 : : * full unit tests in testqgsfield.cpp. 44 : : * See details in QEP #17 45 : : ****************************************************************************/ 46 : : 47 : : class QgsFieldPrivate : public QSharedData 48 : : { 49 : : public: 50 : : 51 : 246 : QgsFieldPrivate( const QString &name = QString(), 52 : : QVariant::Type type = QVariant::Invalid, 53 : : QVariant::Type subType = QVariant::Invalid, 54 : : const QString &typeName = QString(), 55 : : int len = 0, 56 : : int prec = 0, 57 : : const QString &comment = QString() ) 58 : 246 : : name( name ) 59 : 246 : , type( type ) 60 : 246 : , subType( subType ) 61 : 246 : , typeName( typeName ) 62 : 246 : , length( len ) 63 : 246 : , precision( prec ) 64 : 246 : , comment( comment ) 65 : 246 : { 66 : 246 : } 67 : : 68 : 0 : QgsFieldPrivate( const QgsFieldPrivate &other ) 69 : 0 : : QSharedData( other ) 70 : 0 : , name( other.name ) 71 : 0 : , type( other.type ) 72 : 0 : , subType( other.subType ) 73 : 0 : , typeName( other.typeName ) 74 : 0 : , length( other.length ) 75 : 0 : , precision( other.precision ) 76 : 0 : , comment( other.comment ) 77 : 0 : , alias( other.alias ) 78 : 0 : , flags( other.flags ) 79 : 0 : , defaultValueDefinition( other.defaultValueDefinition ) 80 : 0 : , constraints( other.constraints ) 81 : 0 : , isReadOnly( other.isReadOnly ) 82 : 0 : { 83 : 0 : } 84 : : 85 : 238 : ~QgsFieldPrivate() = default; 86 : : 87 : 0 : bool operator==( const QgsFieldPrivate &other ) const 88 : : { 89 : 0 : return ( ( name == other.name ) && ( type == other.type ) && ( subType == other.subType ) 90 : 0 : && ( length == other.length ) && ( precision == other.precision ) 91 : 0 : && ( alias == other.alias ) && ( defaultValueDefinition == other.defaultValueDefinition ) 92 : 0 : && ( constraints == other.constraints ) && ( flags == other.flags ) 93 : 0 : && ( isReadOnly == other.isReadOnly ) ); 94 : : } 95 : : 96 : : //! Name 97 : : QString name; 98 : : 99 : : //! Variant type 100 : : QVariant::Type type; 101 : : 102 : : //! If the variant is a collection, its element's type 103 : : QVariant::Type subType; 104 : : 105 : : //! Type name from provider 106 : : QString typeName; 107 : : 108 : : //! Length 109 : : int length; 110 : : 111 : : //! Precision 112 : : int precision; 113 : : 114 : : //! Comment 115 : : QString comment; 116 : : 117 : : //! Alias for field name (friendly name shown to users) 118 : : QString alias; 119 : : 120 : : //! Flags for the field (searchable, …) 121 : 246 : QgsField::ConfigurationFlags flags = QgsField::ConfigurationFlag::None; 122 : : 123 : : //! Default value 124 : : QgsDefaultValue defaultValueDefinition; 125 : : 126 : : //! Field constraints 127 : : QgsFieldConstraints constraints; 128 : : 129 : : QgsEditorWidgetSetup editorWidgetSetup; 130 : : 131 : : //! Read-only 132 : 246 : bool isReadOnly = false; 133 : : 134 : : private: 135 : : QgsFieldPrivate &operator=( const QgsFieldPrivate & ) = delete; 136 : : }; 137 : : 138 : : /// @endcond 139 : : 140 : : #endif