@@ -36,15 +36,10 @@ QgsGraduatedSymbolDialog::QgsGraduatedSymbolDialog( QgsVectorLayer * layer ): QD
36
36
setOrientation ( Qt::Vertical );
37
37
38
38
// find out the numerical fields of mVectorLayer
39
- QgsVectorDataProvider *provider = mVectorLayer ->dataProvider ();
40
- if ( provider )
41
- {
42
- const QgsFieldMap & fields = provider->fields ();
43
- QString str;
39
+ const QgsFieldMap & fields = layer->pendingFields ();
40
+ QString str;
44
41
45
- for ( QgsFieldMap::const_iterator it = fields.begin ();
46
- it != fields.end ();
47
- ++it )
42
+ for ( QgsFieldMap::const_iterator it = fields.begin (); it != fields.end (); ++it )
48
43
{
49
44
QVariant::Type type = ( *it ).type ();
50
45
if ( type == QVariant::Int || type == QVariant::Double )
@@ -53,12 +48,6 @@ QgsGraduatedSymbolDialog::QgsGraduatedSymbolDialog( QgsVectorLayer * layer ): QD
53
48
mFieldMap .insert ( std::make_pair ( it->name (), it.key () ) );
54
49
}
55
50
}
56
- }
57
- else
58
- {
59
- QgsDebugMsg ( " Warning, data provider is null" );
60
- return ;
61
- }
62
51
63
52
// restore the correct settings
64
53
const QgsGraduatedSymbolRenderer* renderer = dynamic_cast < const QgsGraduatedSymbolRenderer * >( layer->renderer () );
@@ -340,6 +329,8 @@ void QgsGraduatedSymbolDialog::adjustClassification()
340
329
}
341
330
342
331
QString listBoxText;
332
+ QString lowerString, upperString;
333
+
343
334
if ( modeComboBox->currentText () == tr ( " Quantiles" ) )
344
335
{
345
336
// test: insert the values into mClassListWidget
@@ -353,13 +344,32 @@ void QgsGraduatedSymbolDialog::adjustClassification()
353
344
{
354
345
if ( last_it != quantileBorders.end () )
355
346
{
356
- listBoxText = QString::number ( *last_it, ' f' ) + " - " + QString::number ( *it, ' f' );
347
+ if (*last_it - floor (*last_it) > 0 )
348
+ {
349
+ lowerString = QString::number (*last_it, ' f' );
350
+ }
351
+ else
352
+ {
353
+ lowerString = QString::number (*last_it);
354
+ }
355
+ ( *symbol_it )->setLowerValue (lowerString);
356
+
357
+ if (*it - floor (*it) > 0 )
358
+ {
359
+ upperString = QString::number (*it, ' f' );
360
+ }
361
+ else
362
+ {
363
+ upperString = QString::number (*it);
364
+ }
365
+ ( *symbol_it )->setUpperValue (upperString);
366
+
367
+
368
+ listBoxText = lowerString + " - " + upperString;
369
+ mEntries .insert ( std::make_pair ( listBoxText, *symbol_it ) );
357
370
QListWidgetItem *mypItem = new QListWidgetItem ( listBoxText );
358
371
mClassListWidget ->addItem ( mypItem );
359
372
updateEntryIcon ( *symbol_it, mypItem );
360
- ( *symbol_it )->setLowerValue ( QString::number ( *last_it, ' f' ) );
361
- ( *symbol_it )->setUpperValue ( QString::number ( *it, ' f' ) );
362
- mEntries .insert ( std::make_pair ( listBoxText, *symbol_it ) );
363
373
++symbol_it;
364
374
}
365
375
last_it = it;
@@ -370,19 +380,35 @@ void QgsGraduatedSymbolDialog::adjustClassification()
370
380
std::list<QgsSymbol*>::const_iterator symbol_it = symbolList.begin ();
371
381
for ( int i = 0 ;i < numberofclassesspinbox->value ();++i )
372
382
{
383
+ // switch if attribute is int or double
373
384
double lower = minimum + ( maximum - minimum ) / numberofclassesspinbox->value () * i;
374
385
double upper = minimum + ( maximum - minimum ) / numberofclassesspinbox->value () * ( i + 1 );
375
- if ( i == 0 )// make sure all feature attributes are between minimum and maximum value (round off problem)
386
+
387
+ QString lowerString;
388
+ if (lower - floor (lower) > 0 )
389
+ {
390
+ lowerString = QString::number (lower, ' f' );
391
+ }
392
+ else
376
393
{
377
- lower -= 0.001 ;
394
+ lowerString = QString::number (lower) ;
378
395
}
379
- if ( i == numberofclassesspinbox->value () - 1 )
396
+
397
+ ( *symbol_it )->setLowerValue (lowerString);
398
+
399
+ QString upperString;
400
+ if (upper - floor (upper) > 0 )
380
401
{
381
- upper += 0.001 ;
402
+ upperString = QString::number (upper, ' f ' ) ;
382
403
}
383
- ( *symbol_it )->setLowerValue ( QString::number ( lower, ' f' , 3 ) );
384
- ( *symbol_it )->setUpperValue ( QString::number ( upper, ' f' , 3 ) );
385
- listBoxText = QString::number ( lower, ' f' , 3 ) + " - " + QString::number ( upper, ' f' , 3 );
404
+ else
405
+ {
406
+ upperString = QString::number (upper);
407
+ }
408
+
409
+ ( *symbol_it )->setUpperValue (upperString);
410
+ listBoxText = lowerString + " - " + upperString;
411
+
386
412
QListWidgetItem * mypItem = new QListWidgetItem ( listBoxText );
387
413
updateEntryIcon ( *symbol_it, mypItem );
388
414
mClassListWidget ->addItem ( mypItem );
0 commit comments