Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsattributeeditorelement.cpp - QgsAttributeEditorElement 3 : : 4 : : --------------------- 5 : : begin : 18.8.2016 6 : : copyright : (C) 2016 by Matthias Kuhn 7 : : email : matthias@opengis.ch 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : 17 : : #include "qgsattributeeditorelement.h" 18 : : 19 : : #include "qgsattributeeditorcontainer.h" 20 : : #include "qgsattributeeditorfield.h" 21 : : #include "qgsattributeeditorhtmlelement.h" 22 : : #include "qgsattributeeditorqmlelement.h" 23 : : #include "qgsattributeeditorrelation.h" 24 : : 25 : : 26 : : 27 : 0 : QDomElement QgsAttributeEditorElement::toDomElement( QDomDocument &doc ) const 28 : : { 29 : 0 : QDomElement elem = doc.createElement( typeIdentifier() ); 30 : 0 : elem.setAttribute( QStringLiteral( "name" ), mName ); 31 : 0 : elem.setAttribute( QStringLiteral( "showLabel" ), mShowLabel ); 32 : 0 : saveConfiguration( elem, doc ); 33 : 0 : return elem; 34 : 0 : } 35 : : 36 : 0 : bool QgsAttributeEditorElement::showLabel() const 37 : : { 38 : 0 : return mShowLabel; 39 : : } 40 : : 41 : 0 : void QgsAttributeEditorElement::setShowLabel( bool showLabel ) 42 : : { 43 : 0 : mShowLabel = showLabel; 44 : 0 : } 45 : : 46 : 0 : QgsAttributeEditorElement *QgsAttributeEditorElement::create( const QDomElement &element, const QString &layerId, const QgsFields &fields, const QgsReadWriteContext &context, QgsAttributeEditorElement *parent ) 47 : : { 48 : 0 : QgsAttributeEditorElement *newElement = nullptr; 49 : : 50 : 0 : QString name = element.attribute( QStringLiteral( "name" ) ); 51 : : 52 : 0 : if ( element.tagName() == QLatin1String( "attributeEditorContainer" ) ) 53 : : { 54 : 0 : newElement = new QgsAttributeEditorContainer( context.projectTranslator()->translate( QStringLiteral( "project:layers:%1:formcontainers" ).arg( layerId ), 55 : 0 : name ), parent ); 56 : 0 : } 57 : 0 : else if ( element.tagName() == QLatin1String( "attributeEditorField" ) ) 58 : : { 59 : 0 : int idx = fields.lookupField( name ); 60 : 0 : newElement = new QgsAttributeEditorField( name, idx, parent ); 61 : 0 : } 62 : 0 : else if ( element.tagName() == QLatin1String( "attributeEditorRelation" ) ) 63 : : { 64 : : // At this time, the relations are not loaded 65 : : // So we only grab the id and delegate the rest to onRelationsLoaded() 66 : 0 : newElement = new QgsAttributeEditorRelation( element.attribute( QStringLiteral( "relation" ), QStringLiteral( "[None]" ) ), parent ); 67 : 0 : } 68 : 0 : else if ( element.tagName() == QLatin1String( "attributeEditorQmlElement" ) ) 69 : : { 70 : 0 : newElement = new QgsAttributeEditorQmlElement( element.attribute( QStringLiteral( "name" ) ), parent ); 71 : 0 : } 72 : 0 : else if ( element.tagName() == QLatin1String( "attributeEditorHtmlElement" ) ) 73 : : { 74 : 0 : newElement = new QgsAttributeEditorHtmlElement( element.attribute( QStringLiteral( "name" ) ), parent ); 75 : 0 : } 76 : : 77 : 0 : if ( newElement ) 78 : : { 79 : 0 : if ( element.hasAttribute( QStringLiteral( "showLabel" ) ) ) 80 : 0 : newElement->setShowLabel( element.attribute( QStringLiteral( "showLabel" ) ).toInt() ); 81 : : else 82 : 0 : newElement->setShowLabel( true ); 83 : : 84 : 0 : newElement->loadConfiguration( element, layerId, context, fields ); 85 : 0 : } 86 : : 87 : 0 : return newElement; 88 : 0 : } 89 : :