Skip to content

Commit 6f9c956

Browse files
committed
Avoid nan values in gps info panel
1 parent 2beee20 commit 6f9c956

File tree

1 file changed

+40
-4
lines changed

1 file changed

+40
-4
lines changed

src/app/gps/qgsgpsinformationwidget.cpp

+40-4
Original file line numberDiff line numberDiff line change
@@ -715,13 +715,49 @@ void QgsGpsInformationWidget::displayGPSInformation( const QgsGpsInformation &in
715715
{
716716
mTxtDateTime->setText( info.utcDateTime.toString( mDateTimeFormat ) ); //user specified format string for testing the millisecond part of time
717717
}
718-
mTxtSpeed->setText( tr( "%1 km/h" ).arg( info.speed, 0, 'f', 1 ) );
719-
mTxtDirection->setText( QString::number( info.direction, 'f', 1 ) + QStringLiteral( "°" ) );
718+
if ( std::isfinite( info.speed ))
719+
{
720+
mTxtSpeed->setEnabled( true );
721+
mTxtSpeed->setText( tr( "%1 km/h" ).arg( info.speed, 0, 'f', 1 ) );
722+
}
723+
else
724+
{
725+
mTxtSpeed->setEnabled( false );
726+
mTxtSpeed->setText( tr( "Not available" ) );
727+
}
728+
if ( std::isfinite( info.direction ))
729+
{
730+
mTxtDirection->setEnabled( true );
731+
mTxtDirection->setText( QString::number( info.direction, 'f', 1 ) + QStringLiteral( "°" ) );
732+
}
733+
else
734+
{
735+
mTxtDirection->setEnabled( false );
736+
mTxtDirection->setText( tr( "Not available" ) );
737+
}
720738
mTxtHdop->setText( QString::number( info.hdop, 'f', 1 ) );
721739
mTxtVdop->setText( QString::number( info.vdop, 'f', 1 ) );
722740
mTxtPdop->setText( QString::number( info.pdop, 'f', 1 ) );
723-
mTxtHacc->setText( QString::number( info.hacc, 'f', 1 ) + "m" );
724-
mTxtVacc->setText( QString::number( info.vacc, 'f', 1 ) + "m" );
741+
if ( std::isfinite( info.hacc ))
742+
{
743+
mTxtHacc->setEnabled( true );
744+
mTxtHacc->setText( QString::number( info.hacc, 'f', 1 ) + "m" );
745+
}
746+
else
747+
{
748+
mTxtHacc->setEnabled( false );
749+
mTxtHacc->setText( tr( "Not available" ) );
750+
}
751+
if ( std::isfinite( info.vacc ))
752+
{
753+
mTxtVacc->setEnabled( true );
754+
mTxtVacc->setText( QString::number( info.vacc, 'f', 1 ) + "m" );
755+
}
756+
else
757+
{
758+
mTxtVacc->setEnabled( false );
759+
mTxtVacc->setText( tr( "Not available" ) );
760+
}
725761
mTxtFixMode->setText( info.fixMode == 'A' ? tr( "Automatic" ) : info.fixMode == 'M' ? tr( "Manual" ) : QLatin1String( "" ) ); // A=automatic 2d/3d, M=manual; allowing for anything else
726762
mTxtFixType->setText( info.fixType == 3 ? tr( "3D" ) : info.fixType == 2 ? tr( "2D" ) : info.fixType == 1 ? tr( "No fix" ) : QString::number( info.fixType ) ); // 1=no fix, 2=2D, 3=3D; allowing for anything else
727763
mTxtQuality->setText( info.quality == 2 ? tr( "Differential" ) : info.quality == 1 ? tr( "Non-differential" ) : info.quality == 0 ? tr( "No position" ) : info.quality > 2 ? QString::number( info.quality ) : QLatin1String( "" ) ); // allowing for anything else

0 commit comments

Comments
 (0)