[Marble-commits] KDE/kdeedu/marble/src/lib/gps
Thibaut Gridel
tgridel at free.fr
Wed Aug 4 19:36:37 CEST 2010
SVN commit 1159190 by tgridel:
PositionTracking: name the placemarks and improve tracking representation
M +24 -2 PositionTracking.cpp
M +2 -0 PositionTracking.h
--- trunk/KDE/kdeedu/marble/src/lib/gps/PositionTracking.cpp #1159189:1159190
@@ -28,12 +28,20 @@
m_document = new GeoDataDocument();
m_document->setName("Position Tracking");
+ // First point is current position
GeoDataPlacemark *placemark = new GeoDataPlacemark;
+ placemark->setName("Current Position");
+ placemark->setVisible(false);
+ m_document->append(placemark);
+
+ // Second point is position track
+ placemark = new GeoDataPlacemark;
GeoDataMultiGeometry *multiGeometry = new GeoDataMultiGeometry;
GeoDataLineString *lineString = new GeoDataLineString;
multiGeometry->append(lineString);
placemark->setGeometry(multiGeometry);
+ placemark->setName("Current Track");
m_document->append(placemark);
m_fileManager->addGeoDataDocument(m_document);
@@ -51,7 +59,6 @@
if ( m_positionProvider && m_positionProvider->status() ==
PositionProviderStatusAvailable )
{
-
GeoDataPlacemark *placemark = static_cast<GeoDataPlacemark*>(m_document->child(m_document->size()-1));
GeoDataMultiGeometry *geometry = static_cast<GeoDataMultiGeometry*>(placemark->geometry());
GeoDataLineString *lineString = static_cast<GeoDataLineString*>(geometry->child(geometry->size()-1));
@@ -61,12 +68,27 @@
if ( !( m_gpsCurrentPosition ==
position ) )
{
+ placemark = static_cast<GeoDataPlacemark*>(m_document->child(0));
+ placemark->setCoordinate(position);
m_gpsCurrentPosition = position;
emit gpsLocation( position, speed() );
}
}
}
+
+void PositionTracking::setStatus( PositionProviderStatus status )
+{
+ if (status == PositionProviderStatusAvailable) {
+ GeoDataPlacemark *placemark = static_cast<GeoDataPlacemark*>(m_document->child(m_document->size()-1));
+ GeoDataMultiGeometry *multiGeometry = static_cast<GeoDataMultiGeometry*>(placemark->geometry());
+ GeoDataLineString *lineString = new GeoDataLineString;
+ multiGeometry->append(lineString);
+ }
+
+ emit statusChanged( status );
+}
+
void PositionTracking::setPositionProviderPlugin( PositionProviderPlugin* plugin )
{
if ( m_positionProvider ) {
@@ -79,7 +101,7 @@
m_positionProvider->setParent( this );
mDebug() << "Initializing position provider:" << m_positionProvider->name();
connect( m_positionProvider, SIGNAL( statusChanged( PositionProviderStatus ) ),
- this, SIGNAL( statusChanged(PositionProviderStatus ) ) );
+ this, SLOT( setStatus(PositionProviderStatus) ) );
connect( m_positionProvider, SIGNAL( positionChanged( GeoDataCoordinates,GeoDataAccuracy ) ),
this, SLOT( setPosition( GeoDataCoordinates,GeoDataAccuracy ) ) );
--- trunk/KDE/kdeedu/marble/src/lib/gps/PositionTracking.h #1159189:1159190
@@ -67,6 +67,8 @@
void setPosition( GeoDataCoordinates position,
GeoDataAccuracy accuracy );
+ void setStatus( PositionProviderStatus status );
+
private:
GeoDataDocument *m_document;
More information about the Marble-commits
mailing list