Skip to content

Commit a105987

Browse files
committedSep 2, 2013
[dualview] Default preview text shows also up for NULL values
1 parent a6b52b7 commit a105987

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed
 

‎src/gui/attributetable/qgsdualview.cpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,19 @@ void QgsDualView::columnBoxInit()
8080
// load fields
8181
QList<QgsField> fields = mLayerCache->layer()->pendingFields().toList();
8282

83+
QString defaultField;
84+
8385
// default expression: saved value
8486
QString displayExpression = mLayerCache->layer()->displayExpression();
8587

8688
// if no display expression is saved: use display field instead
8789
if ( displayExpression == "" )
8890
{
89-
displayExpression = mLayerCache->layer()->displayField();
91+
if ( mLayerCache->layer()->displayField() != "" )
92+
{
93+
defaultField = mLayerCache->layer()->displayField();
94+
displayExpression = QString( "COALESCE(\"%1\", '<NULL>')" ).arg( defaultField );
95+
}
9096
}
9197

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

97103
if ( pkAttrs.size() > 0 )
98104
{
105+
if ( pkAttrs.size() == 1 )
106+
defaultField = pkAttrs.at( 0 );
107+
99108
// ... If there are primary key(s) defined
100109
QStringList pkFields;
101110

102-
foreach ( int attr, pkAttrs )
111+
Q_FOREACH( int attr, pkAttrs )
103112
{
104-
pkFields.append( "\"" + fields[attr].name() + "\"" );
113+
pkFields.append( "COALESCE(\"" + fields[attr].name() + "\", '<NULL>')" );
105114
}
106115

107116
displayExpression = pkFields.join( "||', '||" );
108117
}
109118
else if ( fields.size() > 0 )
110119
{
120+
if ( fields.size() == 1 )
121+
defaultField = fields.at( 0 ).name();
122+
111123
// ... concat all fields
112124
QStringList fieldNames;
113125
foreach ( QgsField field, fields )
114126
{
115-
fieldNames.append( "\"" + field.name() + "\"" );
127+
fieldNames.append( "COALESCE(\"" + field.name() + "\", '<NULL>')" );
116128
}
117129

118130
displayExpression = fieldNames.join( "||', '||" );
119131
}
120132
else
121133
{
122134
// ... there isn't really much to display
123-
displayExpression = "[Please define preview text]";
135+
displayExpression = "'[Please define preview text]'";
124136
}
125137
}
126138

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

154-
if ( text == displayExpression )
166+
if ( text == defaultField )
155167
{
156168
mFeatureListPreviewButton->setDefaultAction( previewAction );
157169
}
@@ -315,7 +327,7 @@ void QgsDualView::previewColumnChanged( QObject* action )
315327

316328
if ( previewAction )
317329
{
318-
if ( !mFeatureList->setDisplayExpression( previewAction->text() ) )
330+
if ( !mFeatureList->setDisplayExpression( QString( "COALESCE( \"%1\", '<NULL>' )" ).arg( previewAction->text() ) ) )
319331
{
320332
QMessageBox::warning( this
321333
, tr( "Could not set preview column" )

0 commit comments

Comments
 (0)
Please sign in to comment.