Skip to content

Commit e7ca3ff

Browse files
author
jef
committedJun 27, 2009
[FEATURE] add default class to unique value renderer (fixes #1750)
- unique value enull" now default class (ie. class for values without a defined class) - "add class" and "classify" now add the default class git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@10986 c8812cc2-4d05-0410-92ff-de0c093fc19c

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed
 

‎src/app/qgsuniquevaluedialog.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,15 +200,15 @@ void QgsUniqueValueDialog::setSymbolColor( QgsSymbol *symbol, QColor thecolor )
200200
void QgsUniqueValueDialog::addClass( QString value )
201201
{
202202
QgsDebugMsg( "called." );
203-
if ( value.isNull() || mValues.contains( value ) )
203+
if ( mValues.contains( value ) )
204204
{
205205
int i;
206206
for ( i = 0; mValues.contains( value + QString::number( i ) ); i++ )
207207
;
208208
value += QString::number( i );
209209
}
210210

211-
QgsSymbol *symbol = new QgsSymbol( mVectorLayer->geometryType(), value );
211+
QgsSymbol *symbol = new QgsSymbol( mVectorLayer->geometryType(), value, value, value.isNull() ? tr( "default" ) : "" );
212212
mValues.insert( value, symbol );
213213

214214
QListWidgetItem *item = new QListWidgetItem( value );
@@ -306,6 +306,9 @@ void QgsUniqueValueDialog::changeClassificationAttribute()
306306
if ( !mValues.contains( values[i].toString() ) )
307307
addClass( values[i].toString() );
308308
}
309+
310+
if ( !mValues.contains( QString::null ) )
311+
addClass( QString::null );
309312
}
310313
}
311314

‎src/core/renderer/qgsuniquevaluerenderer.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,11 @@ QgsSymbol *QgsUniqueValueRenderer::symbolForFeature( const QgsFeature *f )
183183
QString value = attrs[mClassificationField].toString();
184184

185185
QMap<QString, QgsSymbol*>::iterator it = mSymbols.find( value );
186+
if ( it == mSymbols.end() )
187+
{
188+
it = mSymbols.find( QString::null );
189+
}
190+
186191
if ( it == mSymbols.end() )
187192
{
188193
return 0;

‎src/core/symbology/qgssymbol.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,10 @@ void QgsSymbol::appendText( QDomElement &symbol, QDomDocument &document, QString
445445
{
446446
QDomElement node = document.createElement( name );
447447
QDomText txt = document.createTextNode( value );
448+
if ( value.isNull() )
449+
{
450+
node.setAttribute( "null", "1" );
451+
}
448452
symbol.appendChild( node );
449453
node.appendChild( txt );
450454
}
@@ -542,7 +546,14 @@ bool QgsSymbol::readXML( QDomNode &synode, const QgsVectorLayer *vl )
542546
if ( ! lvalnode.isNull() )
543547
{
544548
QDomElement lvalelement = lvalnode.toElement();
545-
mLowerValue = lvalelement.text();
549+
if ( lvalelement.attribute( "null" ).toInt() == 1 )
550+
{
551+
mLowerValue = QString::null;
552+
}
553+
else
554+
{
555+
mLowerValue = lvalelement.text();
556+
}
546557
}
547558

548559
QDomNode uvalnode = synode.namedItem( "uppervalue" );

0 commit comments

Comments
 (0)
Please sign in to comment.