Exemplo n.º 1
0
void TestQgsFields::allAttrsList()
{
    QgsFields fields;
    QgsAttributeList attrList = fields.allAttributesList();
    QVERIFY( attrList.isEmpty() );

    QgsField field( QString( "testfield" ) );
    fields.append( field );
    QgsField field2( QString( "testfield2" ) );
    fields.append( field2 );
    QgsField field3( QString( "testfield3" ) );
    fields.append( field3 );

    attrList = fields.allAttributesList();
    QCOMPARE( attrList.at( 0 ), 0 );
    QCOMPARE( attrList.at( 1 ), 1 );
    QCOMPARE( attrList.at( 2 ), 2 );
}
Exemplo n.º 2
0
void QgsDualView::columnBoxInit()
{
  // load fields
  QList<QgsField> fields = mLayerCache->layer()->fields().toList();

  QString defaultField;

  // default expression: saved value
  QString displayExpression = mLayerCache->layer()->displayExpression();

  // if no display expression is saved: use display field instead
  if ( displayExpression.isEmpty() )
  {
    if ( !mLayerCache->layer()->displayField().isEmpty() )
    {
      defaultField = mLayerCache->layer()->displayField();
      displayExpression = QString( "COALESCE(\"%1\", '<NULL>')" ).arg( defaultField );
    }
  }

  // if neither display expression nor display field is saved...
  if ( displayExpression.isEmpty() )
  {
    QgsAttributeList pkAttrs = mLayerCache->layer()->pkAttributeList();

    if ( !pkAttrs.isEmpty() )
    {
      if ( pkAttrs.size() == 1 )
        defaultField = pkAttrs.at( 0 );

      // ... If there are primary key(s) defined
      QStringList pkFields;

      Q_FOREACH ( int attr, pkAttrs )
      {
        pkFields.append( "COALESCE(\"" + fields[attr].name() + "\", '<NULL>')" );
      }

      displayExpression = pkFields.join( "||', '||" );
    }