[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdeedu/marble/src/lib/gps
From:       Thibaut Gridel <tgridel () free ! fr>
Date:       2010-08-04 17:36:37
Message-ID: 20100804173637.25B71AC7BC () svn ! kde ! org
[Download RAW message or body]

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;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic