Changes: added notification for address resolution failure and no route; fixed issue...
[ptas] / zouba / src / gpscontroller.cpp
1 #include "gpscontroller.h"
2 #include "gpscontroller_p.h"
3
4 #include <QObject>
5 #include <QGeoPositionInfo>
6 #include <QGeoPositionInfoSource>
7 #include <QDebug>
8
9 GpsController::GpsController() :
10   q( new GpsControllerPrivate() )
11 {
12   q->init();
13   q->startGps();
14 }
15
16 GpsController::GpsController( GpsControllerPrivate *gpsControllerPrivate ) :
17   q( gpsControllerPrivate )
18 {
19   q->init();
20   q->startGps();
21 }
22
23 GpsController::~GpsController()
24 {
25   delete q;
26 }
27
28 void GpsController::getGps()
29 {
30   Location *location;
31   Location *previousLocation = q->mostRecentlyReportedLocation();
32
33   if ( q->useFakeLocation() ) {
34     location = q->fakeLocation();
35   } else {
36     location = q->liveLocation();
37   }
38
39   if ( location != previousLocation ) {
40     emit locationChanged( location );
41   }
42 }
43
44 void GpsController::useLiveGps()
45 {
46   q->setUseFakeLocation( false );
47   q->startGps();
48   emit locationChanged( q->liveLocation() );
49 }
50
51 void GpsController::useFakeGps( const QString &fakeLocationLabel )
52 {
53   qDebug() << "using fake gps (" << fakeLocationLabel << ")";
54
55   q->setFakeLocationLabel( fakeLocationLabel );
56   Location  *fakeLocation = q->fakeLocation();
57
58   if ( fakeLocation == 0 ) {
59     qDebug() << "invalid fake location label; cannot use fake location";
60   } else {
61     q->stopGps();
62     q->setUseFakeLocation( true );
63     emit locationChanged( fakeLocation );
64   }
65 }