287ff5d5eb58a5288c50c4a5e2741c3a1fe43cbd
[googlelatitude] / liblocationmaemo5 / liblocationwrapper_p.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the Qt Mobility Components.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
17 **
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
21 **
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
29 **
30 ** Other Usage
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** conditions contained in a signed written agreement between you and Nokia.
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef LIBLOCATIONWRAPPER_H
43 #define LIBLOCATINWRAPPER_H
44
45 // INCLUDES
46 #include <QDebug>
47 #include <QFile>
48
49 #include "qgeocoordinate.h"
50 #include "qgeopositioninfo.h"
51 #include "qgeosatelliteinfo.h"
52
53 #include "gconfitem_p.h"
54
55 extern "C" {
56    #include <glib.h>
57    #include <location/location-gpsd-control.h>
58    #include <location/location-gps-device.h>
59    #include <location/location-misc.h>
60    #include <location/location-distance-utils.h>
61 }
62
63 QTM_BEGIN_NAMESPACE
64
65 class LiblocationWrapper : public QObject
66 {
67     Q_OBJECT
68
69 public:
70     static LiblocationWrapper *instance();
71     LiblocationWrapper();
72     ~LiblocationWrapper();
73
74     void start();
75     void stop();
76     QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const;
77     bool inited();
78     bool isActive();
79     QList<QGeoSatelliteInfo> satellitesInView();
80     QList<QGeoSatelliteInfo> satellitesInUse();
81
82 private:
83     QFile *file;
84     LocationGPSDControl *locationControl;
85     LocationGPSDevice *locationDevice;
86
87     static void locationError(LocationGPSDevice *device, gint code, gpointer data);
88     static void locationChanged(LocationGPSDevice *device, gpointer data);
89
90     int errorHandlerId;
91     int posChangedId;
92     int origUpdateInterval;
93     int startcounter;
94     QGeoPositionInfo lastUpdate;
95     QGeoPositionInfo lastSatUpdate;
96     bool validLastUpdate;
97     bool validLastSatUpdate;
98     bool fromSatellite;
99
100     void satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &satellites);
101     void satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &satellites);
102     QList<QGeoSatelliteInfo> satsInView;
103     QList<QGeoSatelliteInfo> satsInUse;
104
105     enum LocationState {
106         Undefined = 0,
107         Inited = 1,
108         Started = 2,
109         Stopped = 4,
110         RequestActive = 8,
111         RequestSingleShot = 16
112     };
113     int locationState;
114
115 signals:
116     void positionUpdated(const QGeoPositionInfo &position);
117     void error();
118 };
119
120 QTM_END_NAMESPACE
121 #endif // LIBLOCATIONWRAPPER_H