X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=zouba%2Fsrc%2Fgpscontroller.cpp;fp=zouba%2Fsrc%2Fgpscontroller.cpp;h=abecb2dca9032ecad6582963ed49b103b36b70c8;hb=42e623376638d658a98b0ec30850658f82e1c641;hp=e4de9b415dcc225d35d3c4fbb973b3b6eee13c2b;hpb=9c66cc1fe4fe688c3b25b7236a01633763217a90;p=ptas diff --git a/zouba/src/gpscontroller.cpp b/zouba/src/gpscontroller.cpp index e4de9b4..abecb2d 100644 --- a/zouba/src/gpscontroller.cpp +++ b/zouba/src/gpscontroller.cpp @@ -1,6 +1,8 @@ #include "gpscontroller.h" #include "gpscontroller_p.h" +#include "locations.h" + #include #include #include @@ -27,23 +29,38 @@ GpsController::~GpsController() void GpsController::getGps() { - if ( q->currentLocation() != 0 ) { - emit locationChanged( q->currentLocation() ); + Location *location; + + if ( q->useFakeLocation() ) { + Locations *locations = Locations::instance(); + location = locations->location( q->fakeLocationLabel() ); + } else { + location = q->liveLocation(); } + + emit locationChanged( location ); } void GpsController::useLiveGps() { q->setUseFakeLocation( false ); - q->setCurrentLocation( new Location( "livegps" ) ); q->startGps(); + emit locationChanged( q->liveLocation() ); } -void GpsController::useFakeGps( Location *fakeLocation ) +void GpsController::useFakeGps( const QString &fakeLocationLabel ) { - qDebug() << "using fake gps (" << fakeLocation->label() << ")"; - q->stopGps(); - q->setUseFakeLocation( true ); - q->setCurrentLocation( fakeLocation ); - emit locationChanged( q->currentLocation() ); + qDebug() << "using fake gps (" << fakeLocationLabel << ")"; + + Locations *locations = Locations::instance(); + Location *fakeLocation = locations->location( fakeLocationLabel ); + + if ( fakeLocation == 0 ) { + qDebug() << "invalid fake location label; cannot use fake location"; + } else { + q->stopGps(); + q->setUseFakeLocation( true ); + q->setFakeLocationLabel( fakeLocationLabel ); + emit locationChanged( fakeLocation ); + } }