Skip to content

Commit

Permalink
[dualview] Default preview text shows also up for NULL values
Browse files Browse the repository at this point in the history
  • Loading branch information
m-kuhn committed Sep 2, 2013
1 parent a6b52b7 commit a105987
Showing 1 changed file with 19 additions and 7 deletions.
26 changes: 19 additions & 7 deletions src/gui/attributetable/qgsdualview.cpp
Expand Up @@ -80,13 +80,19 @@ void QgsDualView::columnBoxInit()
// load fields
QList<QgsField> fields = mLayerCache->layer()->pendingFields().toList();

QString defaultField;

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

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

// if neither diaplay expression nor display field is saved...
Expand All @@ -96,31 +102,37 @@ void QgsDualView::columnBoxInit()

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

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

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

displayExpression = pkFields.join( "||', '||" );
}
else if ( fields.size() > 0 )
{
if ( fields.size() == 1 )
defaultField = fields.at( 0 ).name();

// ... concat all fields
QStringList fieldNames;
foreach ( QgsField field, fields )
{
fieldNames.append( "\"" + field.name() + "\"" );
fieldNames.append( "COALESCE(\"" + field.name() + "\", '<NULL>')" );
}

displayExpression = fieldNames.join( "||', '||" );
}
else
{
// ... there isn't really much to display
displayExpression = "[Please define preview text]";
displayExpression = "'[Please define preview text]'";
}
}

Expand Down Expand Up @@ -151,7 +163,7 @@ void QgsDualView::columnBoxInit()
connect( previewAction, SIGNAL( triggered() ), mPreviewActionMapper, SLOT( map() ) );
mPreviewColumnsMenu->addAction( previewAction );

if ( text == displayExpression )
if ( text == defaultField )
{
mFeatureListPreviewButton->setDefaultAction( previewAction );
}
Expand Down Expand Up @@ -315,7 +327,7 @@ void QgsDualView::previewColumnChanged( QObject* action )

if ( previewAction )
{
if ( !mFeatureList->setDisplayExpression( previewAction->text() ) )
if ( !mFeatureList->setDisplayExpression( QString( "COALESCE( \"%1\", '<NULL>' )" ).arg( previewAction->text() ) ) )
{
QMessageBox::warning( this
, tr( "Could not set preview column" )
Expand Down

0 comments on commit a105987

Please sign in to comment.