Пример #1
0
void QgsComposerObject::setDataDefinedProperty( const QgsComposerObject::DataDefinedProperty property, const bool active, const bool useExpression, const QString &expression, const QString &field )
{
  if ( property == QgsComposerObject::AllProperties || property == QgsComposerObject::NoProperty )
  {
    //bad property requested
    return;
  }

  bool defaultVals = ( !active && !useExpression && expression.isEmpty() && field.isEmpty() );

  if ( mDataDefinedProperties.contains( property ) )
  {
    QMap< QgsComposerObject::DataDefinedProperty, QgsDataDefined* >::const_iterator it = mDataDefinedProperties.find( property );
    if ( it != mDataDefinedProperties.constEnd() )
    {
      QgsDataDefined* dd = it.value();
      dd->setActive( active );
      dd->setExpressionString( expression );
      dd->setField( field );
      dd->setUseExpression( useExpression );
    }
  }
  else if ( !defaultVals )
  {
    QgsDataDefined* dd = new QgsDataDefined( active, useExpression, expression, field );
    mDataDefinedProperties.insert( property, dd );
  }
}
Пример #2
0
void TestQgsDataDefined::expressionOrString()
{
  QgsDataDefined dd;
  dd.setActive( true );
  dd.setField( "field" );
  dd.setExpressionString( "1+col1+col2" );
  dd.setUseExpression( true );
  QCOMPARE( dd.expressionOrField(), QString( "1+col1+col2" ) );

  dd.setUseExpression( false );
  QCOMPARE( dd.expressionOrField(), QString( "\"field\"" ) );
}
Пример #3
0
void QgsComposerUtils::readDataDefinedProperty( const QgsComposerObject::DataDefinedProperty property, const QDomElement &ddElem, QMap<QgsComposerObject::DataDefinedProperty, QgsDataDefined *> *dataDefinedProperties )
{
  if ( property == QgsComposerObject::AllProperties || property == QgsComposerObject::NoProperty )
  {
    //invalid property
    return;
  }

  QMap< QgsComposerObject::DataDefinedProperty, QgsDataDefined* >::const_iterator it = dataDefinedProperties->constFind( property );

  QgsDataDefined* dd = 0;
  if ( it != dataDefinedProperties->constEnd() )
  {
    dd = it.value();
  }
  else
  {
    //QgsDataDefined for property doesn't currently exist, need to add new
    dd = new QgsDataDefined();
    dataDefinedProperties->insert( property, dd );
  }

  //set values for QgsDataDefined
  QString active = ddElem.attribute( "active" );
  if ( active.compare( "true", Qt::CaseInsensitive ) == 0 )
  {
    dd->setActive( true );
  }
  else
  {
    dd->setActive( false );
  }
  dd->setField( ddElem.attribute( "field" ) );
  dd->setExpressionString( ddElem.attribute( "expr" ) );
  QString useExpr = ddElem.attribute( "useExpr" );
  if ( useExpr.compare( "true", Qt::CaseInsensitive ) == 0 )
  {
    dd->setUseExpression( true );
  }
  else
  {
    dd->setUseExpression( false );
  }
}
Пример #4
0
void TestQgsDataDefined::gettersSetters()
{
  QgsDataDefined dd;
  dd.setActive( false );
  QVERIFY( !dd.isActive() );
  dd.setActive( true );
  QVERIFY( dd.isActive() );

  dd.setUseExpression( false );
  QVERIFY( !dd.useExpression() );
  dd.setUseExpression( true );
  QVERIFY( dd.useExpression() );

  dd.setExpressionString( QString( "expression" ) );
  QCOMPARE( dd.expressionString(), QString( "expression" ) );

  dd.setField( QString( "field" ) );
  QCOMPARE( dd.field(), QString( "field" ) );
}
Пример #5
0
void TestQgsDataDefined::referencedColumns()
{
  QgsDataDefined dd;
  dd.setActive( true );
  dd.setUseExpression( true );

  QStringList cols = dd.referencedColumns();
  QVERIFY( cols.isEmpty() );

  //set as expression
  dd.setExpressionString( "1+col1+col2" );
  cols = dd.referencedColumns();
  QCOMPARE( cols.length(), 2 );
  QVERIFY( cols.contains( QString( "col1" ) ) );
  QVERIFY( cols.contains( QString( "col2" ) ) );

  //alter expression and check that referenced columns is updated
  dd.setExpressionString( "1+col1+col2+col3" );
  cols = dd.referencedColumns();
  QCOMPARE( cols.length(), 3 );
  QVERIFY( cols.contains( QString( "col1" ) ) );
  QVERIFY( cols.contains( QString( "col2" ) ) );
  QVERIFY( cols.contains( QString( "col3" ) ) );

  //switch to field
  dd.setUseExpression( false );
  cols = dd.referencedColumns();
  QVERIFY( cols.isEmpty() );

  dd.setField( "field" );
  cols = dd.referencedColumns();
  QCOMPARE( cols.length(), 1 );
  QVERIFY( cols.contains( QString( "field" ) ) );

  //switch back to expression
  dd.setUseExpression( true );
  cols = dd.referencedColumns();
  QCOMPARE( cols.length(), 3 );
  QVERIFY( cols.contains( QString( "col1" ) ) );
  QVERIFY( cols.contains( QString( "col2" ) ) );
  QVERIFY( cols.contains( QString( "col3" ) ) );
}
Пример #6
0
void TestQgsDataDefined::defaultValues()
{
  QgsDataDefined* dd = new QgsDataDefined();
  QVERIFY( dd->hasDefaultValues() );
  dd->setActive( true );
  QVERIFY( !dd->hasDefaultValues() );
  delete dd;
  dd = new QgsDataDefined();
  dd->setUseExpression( true );
  QVERIFY( !dd->hasDefaultValues() );
  delete dd;
  dd = new QgsDataDefined();
  dd->setExpressionString( QString( "expression" ) );
  QVERIFY( !dd->hasDefaultValues() );
  delete dd;
  dd = new QgsDataDefined();
  dd->setField( QString( "field" ) );
  QVERIFY( !dd->hasDefaultValues() );
  delete dd;
}