void GpsInfo::updateLocation( GeoDataCoordinates coordinates, qreal) { PositionTracking *tracking = marbleModel()->positionTracking(); qreal speed = tracking->speed(); qreal direction = tracking->direction(); qreal altitude = coordinates.altitude(); qreal precision = tracking->accuracy().horizontal; QString speedString; QString distanceString; switch ( m_locale->measurementSystem() ) { case MarbleLocale::ImperialSystem: //miles per hour speedString = tr("mph"); speed *= HOUR2SEC * METER2KM * KM2MI; distanceString = tr("ft"); altitude *= M2FT; precision *= M2FT; break; case MarbleLocale::MetricSystem: //kilometers per hour speedString = tr("km/h"); speed *= HOUR2SEC * METER2KM; distanceString = tr("m"); break; case MarbleLocale::NauticalSystem: // nm per hour (knots) speedString = tr("kt"); speed *= HOUR2SEC * METER2KM * KM2NM; distanceString = tr("nm"); break; } m_widget.SpeedValue->setText( QString( " %1 %2" ) .arg( QLocale().toString(speed, 'f', 1 ) ) .arg( speedString ) ); m_widget.AltitudeValue->setText( QString( " %1 %2" ) .arg( QLocale().toString(altitude, 'f', 1 ) ) .arg( distanceString ) ); m_widget.DirectionValue->setText( QString( " %1 %2" ) .arg( QLocale().toString(direction, 'f', 1 ) ) .arg( "d" ) ); m_widget.PrecisionValue->setText( QString( " %1 %2" ) .arg( QLocale().toString(precision, 'f', 1 ) ) .arg( distanceString ) ); int const minimumWidth = m_widgetItem->widget()->sizeHint().width(); if ( size().width() < minimumWidth ) { m_widgetItem->setSize( QSizeF( minimumWidth, size().height() ) ); } update(); emit repaintNeeded(); }
void CurrentLocationWidgetPrivate::changePositionProvider( const QString &provider ) { foreach( const PositionProviderPlugin* plugin, m_positionProviderPlugins ) { if ( plugin->guiString() == provider ) { m_currentLocationUi.locationLabel->setEnabled( true ); PositionProviderPlugin* instance = plugin->newInstance(); PositionTracking *tracking = m_widget->model()->positionTracking(); tracking->setPositionProviderPlugin( instance ); m_widget->update(); return; } } // requested provider not found -> disable position tracking m_currentLocationUi.locationLabel->setEnabled( false ); m_widget->model()->positionTracking()->setPositionProviderPlugin( 0 ); m_widget->update(); }
void CurrentLocationWidgetPrivate::changePositionProvider( const QString &provider ) { bool hasProvider = ( provider != QObject::tr("Disabled") ); if ( hasProvider ) { foreach( const PositionProviderPlugin* plugin, m_positionProviderPlugins ) { if ( plugin->guiString() == provider ) { m_currentLocationUi.locationLabel->setEnabled( true ); PositionProviderPlugin* instance = plugin->newInstance(); PositionTracking *tracking = m_widget->model()->positionTracking(); instance->setMarbleModel( m_widget->model() ); tracking->setPositionProviderPlugin( instance ); m_widget->update(); return; } } } else {