@@ -36,15 +36,10 @@ QgsGraduatedSymbolDialog::QgsGraduatedSymbolDialog( QgsVectorLayer * layer ): QD
3636 setOrientation ( Qt::Vertical );
3737
3838 // 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;
4441
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 )
4843 {
4944 QVariant::Type type = ( *it ).type ();
5045 if ( type == QVariant::Int || type == QVariant::Double )
@@ -53,12 +48,6 @@ QgsGraduatedSymbolDialog::QgsGraduatedSymbolDialog( QgsVectorLayer * layer ): QD
5348 mFieldMap .insert ( std::make_pair ( it->name (), it.key () ) );
5449 }
5550 }
56- }
57- else
58- {
59- QgsDebugMsg ( " Warning, data provider is null" );
60- return ;
61- }
6251
6352 // restore the correct settings
6453 const QgsGraduatedSymbolRenderer* renderer = dynamic_cast < const QgsGraduatedSymbolRenderer * >( layer->renderer () );
@@ -340,6 +329,8 @@ void QgsGraduatedSymbolDialog::adjustClassification()
340329 }
341330
342331 QString listBoxText;
332+ QString lowerString, upperString;
333+
343334 if ( modeComboBox->currentText () == tr ( " Quantiles" ) )
344335 {
345336 // test: insert the values into mClassListWidget
@@ -353,13 +344,32 @@ void QgsGraduatedSymbolDialog::adjustClassification()
353344 {
354345 if ( last_it != quantileBorders.end () )
355346 {
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 ) );
357370 QListWidgetItem *mypItem = new QListWidgetItem ( listBoxText );
358371 mClassListWidget ->addItem ( mypItem );
359372 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 ) );
363373 ++symbol_it;
364374 }
365375 last_it = it;
@@ -370,19 +380,35 @@ void QgsGraduatedSymbolDialog::adjustClassification()
370380 std::list<QgsSymbol*>::const_iterator symbol_it = symbolList.begin ();
371381 for ( int i = 0 ;i < numberofclassesspinbox->value ();++i )
372382 {
383+ // switch if attribute is int or double
373384 double lower = minimum + ( maximum - minimum ) / numberofclassesspinbox->value () * i;
374385 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
376393 {
377- lower -= 0.001 ;
394+ lowerString = QString::number (lower) ;
378395 }
379- if ( i == numberofclassesspinbox->value () - 1 )
396+
397+ ( *symbol_it )->setLowerValue (lowerString);
398+
399+ QString upperString;
400+ if (upper - floor (upper) > 0 )
380401 {
381- upper += 0.001 ;
402+ upperString = QString::number (upper, ' f ' ) ;
382403 }
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+
386412 QListWidgetItem * mypItem = new QListWidgetItem ( listBoxText );
387413 updateEntryIcon ( *symbol_it, mypItem );
388414 mClassListWidget ->addItem ( mypItem );
0 commit comments