Showing with 22 additions and 9 deletions.
  1. +15 −2 src/gui/qgsscalecombobox.cpp
  2. +7 −7 tests/src/gui/testqgsscalecombobox.cpp
17 changes: 15 additions & 2 deletions src/gui/qgsscalecombobox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,19 @@ void QgsScaleComboBox::updateScales( const QStringList &scales )
}
}

QStringList parts;
double denominator;
bool ok;
for ( int i = 0; i < myScalesList.size(); ++i )
{
parts = myScalesList[ i ] .split( ':' );
denominator = QLocale::system().toDouble( parts[1], &ok );
if ( ok )
{
myScalesList[ i ] = toString( 1.0 / denominator );
}
}

blockSignals( true );
clear();
addItems( myScalesList );
Expand Down Expand Up @@ -180,11 +193,11 @@ QString QgsScaleComboBox::toString( double scale )
{
if ( scale > 1 )
{
return QString( "%1:1" ).arg( qRound( scale ) );
return QString( "%1:1" ).arg( QLocale::system().toString( qRound( scale ) ) );
}
else
{
return QString( "1:%1" ).arg( qRound( 1.0 / scale ) );
return QString( "1:%1" ).arg( QLocale::system().toString( qRound( 1.0 / scale ) ) );
}
}

Expand Down
14 changes: 7 additions & 7 deletions tests/src/gui/testqgsscalecombobox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,21 +65,21 @@ void TestQgsScaleComboBox::basic()
l->setText( "" );
QTest::keyClicks( l, "1:2345" );
QTest::keyClick( l, Qt::Key_Return );
QCOMPARE( s->scaleString(), QString( "1:2345" ) );
QCOMPARE( s->scaleString(), QString( "1:%1" ).arg( QLocale::system().toString( 2345 ) ) );
QCOMPARE( s->scale(), (( double ) 1.0 / ( double ) 2345.0 ) );

// Testing conversion from number to "1:x"
l->setText( "" );
QTest::keyClicks( l, QLocale::system().toString( 0.02 ) );
QTest::keyClick( l, Qt::Key_Return );
QCOMPARE( s->scaleString(), QString( "1:50" ) );
QCOMPARE( s->scaleString(), QString( "1:%1" ).arg( QLocale::system().toString( 50 ) ) );
QCOMPARE( s->scale(), ( double ) 0.02 );

// Testing conversion from number to "1:x"
l->setText( "" );
QTest::keyClicks( l, QLocale::system().toString( 42 ) );
QTest::keyClick( l, Qt::Key_Return );
QCOMPARE( s->scaleString(), QString( "1:42" ) );
QCOMPARE( s->scaleString(), QString( "1:%1" ).arg( QLocale::system().toString( 42 ) ) );
QCOMPARE( s->scale(), ( double ) 1.0 / ( double ) 42.0 );

// Testing rounding and conversion from illegal
Expand All @@ -91,22 +91,22 @@ void TestQgsScaleComboBox::basic()
l->setText( "" );
QTest::keyClicks( l, "1:x:2" );
QTest::keyClick( l, Qt::Key_Return );
QCOMPARE( s->scaleString(), QString( "1:4" ) );
QCOMPARE( s->scaleString(), QString( "1:%1" ).arg( QLocale::system().toString( 4 ) ) );
QCOMPARE( s->scale(), ( double ) 0.25 );

// Test setting programatically
s->setScale(( double ) 0.19 );
QCOMPARE( s->scaleString(), QString( "1:5" ) );
QCOMPARE( s->scaleString(), QString( "1:%1" ).arg( QLocale::system().toString( 5 ) ) );
QCOMPARE( s->scale(), ( double ) 0.2 );

// Test setting programatically
s->setScaleString( QString( "1:240" ) );
QCOMPARE( s->scaleString(), QString( "1:240" ) );
QCOMPARE( s->scaleString(), QString( "1:%1" ).arg( QLocale::system().toString( 240 ) ) );
QCOMPARE( s->scale(), ( double ) 1.0 / ( double ) 240.0 );

// Test setting programatically illegal string
s->setScaleString( QString( "1:2.4" ) );
QCOMPARE( s->scaleString(), QString( "1:240" ) );
QCOMPARE( s->scaleString(), QString( "1:%1" ).arg( QLocale::system().toString( 240 ) ) );
QCOMPARE( s->scale(), ( double ) 1.0 / ( double ) 240.0 );

};
Expand Down