GPS Sport Sniffer is a open source GPS application developed with Qt and made in...
[gpssportsniffer] / windowMap.h
1 #ifndef ACTIVITYMAP_H
2 #define ACTIVITYMAP_H
3
4 #include <QMainWindow>
5 #include <QDir>
6 #include <QNetworkSession>
7 #include <QTimer>
8 #include <QToolButton>
9 #include <QProgressBar>
10
11
12 //QtMobility API headers
13 #include <qmobilityglobal.h>
14 #include <qgeosatelliteinfosource.h>
15 #include <qnmeapositioninfosource.h>
16 #include <qgeopositioninfo.h>
17 #include <qnetworkconfigmanager.h>
18 #include <qnetworksession.h>
19
20 #include "log.h"
21 #include "track.h"
22 #include "tilesMap.h"
23 #include "loadTracksWindow.h"
24 #include "settingsWindow.h"
25 #include "activityinfo.h"
26 #include "downloadingStatus.h"
27
28 class Settings;
29 class ConnectivityHelper;
30 class SatelliteDialog;
31
32
33 // Use the QtMobility namespace
34 QTM_USE_NAMESPACE
35
36
37 class WindowMap : public QMainWindow
38 {
39     Q_OBJECT
40
41 private:
42
43     int zoom;
44     // Atributes
45     qreal firstLat;
46     qreal firstLong;
47
48     Mode mode;
49
50     bool network;
51
52     bool isConfigured;
53
54     bool pressed;
55     bool snapped;
56     bool possitionPaint;
57
58     int tilesToDownload;
59
60
61     QPoint pressPos;
62     QPoint dragPos;
63
64     QPointF topLeft;
65     QGeoPositionInfoSource *location;
66
67     TilesMap* slippyMap;
68
69     QNetworkSession *nSession;
70     ConnectivityHelper *nConHelp;
71     QString networkError;
72
73
74     //Menus
75
76     QAction *startNetworkAction;
77     QAction *loadTrackAction;
78     QAction *downloadMapsAction;
79     QAction *newActivityAction;
80     QAction *simulatedActivityAction;
81     QAction *quitAction;
82     QAction *lapAction;
83     QAction *settingsAction;
84     QAction *stopAction;
85     QAction *startAction;
86     QAction *tracksAction;
87     QAction *satelliteAction;
88     QAction *infoAction;
89
90     // Dialogs
91     LoadTracksWindow *loadTracksWindow;
92     SettingsWindow *settingsWindow;
93     ActivityInfo *infoWindow;
94
95     // Progress bar
96
97     DownloadingStatus* downloadingStatus;
98
99     QGeoSatelliteInfoSource *satelliteInfo;
100     SatelliteDialog *satelliteDialog;
101
102
103     Log *log;
104
105     Track *track;
106     Track *trackToSniff;
107
108     QList<GpsPoint*> trackToSimulate;
109
110     bool waitingForFix;
111     int validPositions;
112     int invalidPositions;
113
114     QTimer *autosaveTimer;
115     QTimer *sPossitioningTimer;
116     QTimer *simulatePossitioningTimer;
117
118     bool simulateGPS;
119
120     // events
121     void closeEvent(QCloseEvent *event);
122     void showEvent(QShowEvent *);
123     void paintEvent(QPaintEvent *event);
124     void mousePressEvent(QMouseEvent *event);
125     void mouseMoveEvent(QMouseEvent *event);
126     void mouseReleaseEvent(QMouseEvent *event);
127     void resizeEvent(QResizeEvent * );
128
129 public:
130
131     QToolButton *zoomInButton;
132     QToolButton *zoomOutButton;
133
134     Settings *settings;
135
136     enum ScreenOrientation {
137         ScreenOrientationLockPortrait,
138         ScreenOrientationLockLandscape,
139         ScreenOrientationAuto
140     };
141
142     explicit WindowMap(QWidget *parent = 0,Settings* settings=0, Log *log=0);
143     virtual ~WindowMap();
144
145     void fixZoomButtons();
146     void updateSummary();
147     void clearAllMaps();
148     void setMenuActivity();
149     void setMenuLoadTracks();
150     void setTopLeft(qreal lat, qreal lng);
151     bool drawTrack(Track* track_p, QPainter* p, QString color, bool boolLast);
152     bool drawTrack(Track* track_p, QPainter* p, QString color);
153     void drawFullTrackMaps(Track* track_p);
154
155     void changeMapType(MapType map);
156     void changeUpdateInterval(int millis);
157     bool checkGPS();
158     void startGPS();
159     void startMaps();
160
161     void showSatelliteInfo();
162     void startNetworking();
163     void stopNetworking();
164     void setOrientation(ScreenOrientation orientation);
165     void showExpanded();
166     void startServices();
167     inline Track* getTrack(){return track;}
168     inline Track* getTrackToSniff(){return trackToSniff;}
169     inline void setTrackToSimulate(QList<GpsPoint*> toDo){trackToSimulate=toDo;}
170     inline bool hasTrackToSimulate(){(trackToSimulate.size()>0);}
171     inline void startAutosaveTimer(int milliseconds){autosaveTimer->start(milliseconds);}
172     inline void startSimulatePossitioning(int milliseconds){simulatePossitioningTimer->start(milliseconds);}
173     inline void startSimulatePossitioning(){simulatePossitioningTimer->start();}
174     inline void startSPositioningTimer(){sPossitioningTimer->start();}
175     inline void saveXml(){autosave();}
176     inline void setMode(Mode m){mode=m;}
177     inline Mode getMode(){return mode;}
178     inline void setTrackToSniff(Track* t){trackToSniff=t;}
179     inline bool simulatingGPS(){return simulateGPS;}
180     inline void setSimulateGPS(bool value){simulateGPS=value;}
181     inline int getTilesToDownload(){return tilesToDownload;}
182
183     void setTrack(QString filename,QString activity);
184     void setCenter(qreal lat, qreal lng);
185
186
187     public slots:
188     void desactivatePossitionPaint();
189     void activatePossitionPaint();
190     void simulatedPossitionUpdated();
191     void updateProgress(int val);
192
193     private slots:
194     void networkSessionOpened();
195     void error(QNetworkSession::SessionError error);
196     void stopActivity();
197     void startActivity();
198     void configureSettings();
199     void lapActivity();
200     void tracksActivity();
201     void newSimulation();
202     void info();
203
204     void loadTrack();
205     void downloadMapTrack();
206     void newActivityTrack();
207     void networkStart();
208
209
210     void quit();
211     void satellite();
212
213     void onZoomIn();
214     void onZoomOut();
215     void startPositioning();
216     void stopPositioning();
217
218
219     //void networkSessionOpened();
220     void waitForFix();
221     void updateMap(const QRect &r);
222
223
224     void positionUpdated(const QGeoPositionInfo &info);
225     void autosave();
226
227 };
228
229 #endif // ACTIVITYMAP_H