LCOV - code coverage report
Current view: top level - core/editform - qgsattributeeditorcontainer.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 11 96 11.5 %
Date: 2021-04-10 08:29:14 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :   qgsattributeeditorcontainer.cpp - QgsAttributeEditorContainer
       3                 :            : 
       4                 :            :  ---------------------
       5                 :            :  begin                : 12.01.2021
       6                 :            :  copyright            : (C) 2021 by Denis Rouzaud
       7                 :            :  email                : denis@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 "qgsattributeeditorcontainer.h"
      18                 :            : 
      19                 :            : 
      20                 :        124 : QgsAttributeEditorContainer::~QgsAttributeEditorContainer()
      21                 :        124 : {
      22                 :         62 :   qDeleteAll( mChildren );
      23                 :        124 : }
      24                 :            : 
      25                 :         84 : void QgsAttributeEditorContainer::addChildElement( QgsAttributeEditorElement *widget )
      26                 :            : {
      27                 :         84 :   mChildren.append( widget );
      28                 :         84 : }
      29                 :            : 
      30                 :          0 : void QgsAttributeEditorContainer::setName( const QString &name )
      31                 :            : {
      32                 :          0 :   mName = name;
      33                 :          0 : }
      34                 :            : 
      35                 :          0 : QgsOptionalExpression QgsAttributeEditorContainer::visibilityExpression() const
      36                 :            : {
      37                 :          0 :   return mVisibilityExpression;
      38                 :            : }
      39                 :            : 
      40                 :          0 : void QgsAttributeEditorContainer::setVisibilityExpression( const QgsOptionalExpression &visibilityExpression )
      41                 :            : {
      42                 :          0 :   if ( visibilityExpression == mVisibilityExpression )
      43                 :          0 :     return;
      44                 :            : 
      45                 :          0 :   mVisibilityExpression = visibilityExpression;
      46                 :          0 : }
      47                 :            : 
      48                 :          0 : QColor QgsAttributeEditorContainer::backgroundColor() const
      49                 :            : {
      50                 :          0 :   return mBackgroundColor;
      51                 :            : }
      52                 :            : 
      53                 :          0 : void QgsAttributeEditorContainer::setBackgroundColor( const QColor &backgroundColor )
      54                 :            : {
      55                 :          0 :   mBackgroundColor = backgroundColor;
      56                 :          0 : }
      57                 :            : 
      58                 :          0 : QList<QgsAttributeEditorElement *> QgsAttributeEditorContainer::findElements( QgsAttributeEditorElement::AttributeEditorType type ) const
      59                 :            : {
      60                 :          0 :   QList<QgsAttributeEditorElement *> results;
      61                 :            : 
      62                 :          0 :   const auto constMChildren = mChildren;
      63                 :          0 :   for ( QgsAttributeEditorElement *elem : constMChildren )
      64                 :            :   {
      65                 :          0 :     if ( elem->type() == type )
      66                 :            :     {
      67                 :          0 :       results.append( elem );
      68                 :          0 :     }
      69                 :            : 
      70                 :          0 :     if ( elem->type() == AeTypeContainer )
      71                 :            :     {
      72                 :          0 :       QgsAttributeEditorContainer *cont = dynamic_cast<QgsAttributeEditorContainer *>( elem );
      73                 :          0 :       if ( cont )
      74                 :          0 :         results += cont->findElements( type );
      75                 :          0 :     }
      76                 :            :   }
      77                 :            : 
      78                 :          0 :   return results;
      79                 :          0 : }
      80                 :            : 
      81                 :         64 : void QgsAttributeEditorContainer::clear()
      82                 :            : {
      83                 :         64 :   qDeleteAll( mChildren );
      84                 :         64 :   mChildren.clear();
      85                 :         64 : }
      86                 :            : 
      87                 :          0 : int QgsAttributeEditorContainer::columnCount() const
      88                 :            : {
      89                 :          0 :   return mColumnCount;
      90                 :            : }
      91                 :            : 
      92                 :          0 : void QgsAttributeEditorContainer::setColumnCount( int columnCount )
      93                 :            : {
      94                 :          0 :   mColumnCount = columnCount;
      95                 :          0 : }
      96                 :            : 
      97                 :          0 : QgsAttributeEditorElement *QgsAttributeEditorContainer::clone( QgsAttributeEditorElement *parent ) const
      98                 :            : {
      99                 :          0 :   QgsAttributeEditorContainer *element = new QgsAttributeEditorContainer( name(), parent );
     100                 :            : 
     101                 :          0 :   const auto childElements = children();
     102                 :            : 
     103                 :          0 :   for ( QgsAttributeEditorElement *child : childElements )
     104                 :            :   {
     105                 :          0 :     element->addChildElement( child->clone( element ) );
     106                 :            :   }
     107                 :          0 :   element->mIsGroupBox = mIsGroupBox;
     108                 :          0 :   element->mColumnCount = mColumnCount;
     109                 :          0 :   element->mVisibilityExpression = mVisibilityExpression;
     110                 :            : 
     111                 :          0 :   return element;
     112                 :          0 : }
     113                 :            : 
     114                 :          0 : void QgsAttributeEditorContainer::saveConfiguration( QDomElement &elem, QDomDocument &doc ) const
     115                 :            : {
     116                 :          0 :   Q_UNUSED( doc )
     117                 :          0 :   elem.setAttribute( QStringLiteral( "columnCount" ), mColumnCount );
     118                 :          0 :   elem.setAttribute( QStringLiteral( "groupBox" ), mIsGroupBox ? 1 : 0 );
     119                 :          0 :   elem.setAttribute( QStringLiteral( "visibilityExpressionEnabled" ), mVisibilityExpression.enabled() ? 1 : 0 );
     120                 :          0 :   elem.setAttribute( QStringLiteral( "visibilityExpression" ), mVisibilityExpression->expression() );
     121                 :          0 :   if ( mBackgroundColor.isValid() )
     122                 :          0 :     elem.setAttribute( QStringLiteral( "backgroundColor" ), mBackgroundColor.name( ) );
     123                 :          0 :   const auto constMChildren = mChildren;
     124                 :          0 :   for ( QgsAttributeEditorElement *child : constMChildren )
     125                 :            :   {
     126                 :          0 :     QDomDocument doc = elem.ownerDocument();
     127                 :          0 :     elem.appendChild( child->toDomElement( doc ) );
     128                 :          0 :   }
     129                 :          0 : }
     130                 :            : 
     131                 :          0 : void QgsAttributeEditorContainer::loadConfiguration( const QDomElement &element, const QString &layerId, const QgsReadWriteContext &context, const QgsFields &fields )
     132                 :            : {
     133                 :          0 :   mBackgroundColor = element.attribute( QStringLiteral( "backgroundColor" ), QString() );
     134                 :            :   bool ok;
     135                 :          0 :   int cc = element.attribute( QStringLiteral( "columnCount" ) ).toInt( &ok );
     136                 :          0 :   if ( !ok )
     137                 :          0 :     cc = 0;
     138                 :          0 :   setColumnCount( cc );
     139                 :            : 
     140                 :          0 :   bool isGroupBox = element.attribute( QStringLiteral( "groupBox" ) ).toInt( &ok );
     141                 :          0 :   if ( ok )
     142                 :          0 :     setIsGroupBox( isGroupBox );
     143                 :            :   else
     144                 :          0 :     setIsGroupBox( mParent );
     145                 :            : 
     146                 :          0 :   bool visibilityExpressionEnabled = element.attribute( QStringLiteral( "visibilityExpressionEnabled" ) ).toInt( &ok );
     147                 :          0 :   QgsOptionalExpression visibilityExpression;
     148                 :          0 :   if ( ok )
     149                 :            :   {
     150                 :          0 :     visibilityExpression.setEnabled( visibilityExpressionEnabled );
     151                 :          0 :     visibilityExpression.setData( QgsExpression( element.attribute( QStringLiteral( "visibilityExpression" ) ) ) );
     152                 :          0 :   }
     153                 :          0 :   setVisibilityExpression( visibilityExpression );
     154                 :            : 
     155                 :          0 :   QDomNodeList childNodeList = element.childNodes();
     156                 :            : 
     157                 :          0 :   for ( int i = 0; i < childNodeList.size(); i++ )
     158                 :            :   {
     159                 :          0 :     QDomElement childElem = childNodeList.at( i ).toElement();
     160                 :            : 
     161                 :          0 :     QgsAttributeEditorElement *myElem = create( childElem, layerId, fields, context, this );
     162                 :          0 :     if ( myElem )
     163                 :          0 :       addChildElement( myElem );
     164                 :          0 :   }
     165                 :          0 : }
     166                 :            : 
     167                 :          0 : QString QgsAttributeEditorContainer::typeIdentifier() const
     168                 :            : {
     169                 :          0 :   return QStringLiteral( "attributeEditorContainer" );
     170                 :            : }
     171                 :            : 

Generated by: LCOV version 1.14