[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