1 /****************************************************************************
3 ** Copyright (C) 2011 Tito Eritja Real <jtitoo@gmail.com>
5 ** This program is free software: you can redistribute it and/or modify
6 ** it under the terms of the GNU General Public License as published by
7 ** the Free Software Foundation, either version 3 of the License, or
8 ** (at your option) any later version.
10 ** This program is distributed in the hope that it will be useful,
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ** GNU General Public License for more details.
15 ** You should have received a copy of the GNU General Public License
16 ** along with this program. If not, see <http://www.gnu.org/licenses/>.
18 ****************************************************************************/
23 #include <QMainWindow>
25 #include <QNetworkSession>
27 #include <QToolButton>
28 #include <QProgressBar>
31 //QtMobility API headers
32 #include <qmobilityglobal.h>
33 #include <qgeosatelliteinfosource.h>
34 #include <qnmeapositioninfosource.h>
35 #include <qgeopositioninfo.h>
36 #include <qnetworkconfigmanager.h>
37 #include <qnetworksession.h>
42 #include "loadTracksWindow.h"
43 #include "settingsWindow.h"
44 #include "activityinfo.h"
45 #include "downloadingStatus.h"
48 class ConnectivityHelper;
49 //class SatelliteDialog;
52 // Use the QtMobility namespace
56 class WindowMap : public QMainWindow
85 QGeoPositionInfoSource *location;
89 QNetworkSession *nSession;
90 ConnectivityHelper *nConHelp;
96 QAction *startNetworkAction;
97 QAction *loadTrackAction;
98 QAction *downloadMapsTrackAction;
99 QAction *newActivityAction;
100 QAction *simulatedActivityAction;
103 QAction *settingsAction;
105 QAction *startAction;
106 QAction *tracksAction;
107 //QAction *satelliteAction;
111 LoadTracksWindow *loadTracksWindow;
112 SettingsWindow *settingsWindow;
113 ActivityInfo *infoWindow;
117 DownloadingStatus* downloadingStatus;
119 //QGeoSatelliteInfoSource *satelliteInfo;
120 //SatelliteDialog *satelliteDialog;
128 QList<GpsPoint*> trackToSimulate;
130 //bool waitingForFix;
132 int invalidPositions;
134 QTimer *autosaveTimer;
135 QTimer *sPossitioningTimer;
136 QTimer *simulatePossitioningTimer;
141 void closeEvent(QCloseEvent *event);
142 void showEvent(QShowEvent *);
143 void paintEvent(QPaintEvent *event);
144 void mousePressEvent(QMouseEvent *event);
145 void mouseMoveEvent(QMouseEvent *event);
146 void mouseReleaseEvent(QMouseEvent *event);
147 void resizeEvent(QResizeEvent * );
149 void chooseDisplay();
152 QToolButton *zoomInButton;
153 QToolButton *zoomOutButton;
157 enum ScreenOrientation {
158 ScreenOrientationLockPortrait,
159 ScreenOrientationLockLandscape,
160 ScreenOrientationAuto
163 explicit WindowMap(QWidget *parent = 0,Settings* settings=0, Log *log=0);
164 virtual ~WindowMap();
166 void displayInit(QPainter *p);
168 void fixZoomButtons();
169 void updateSummary();
171 void setMenuActivity();
172 void setMenuLoadTracks();
173 void setTopLeft(qreal lat, qreal lng);
174 bool drawTrack(Track* track_p, QPainter* p, QString color, bool boolLast);
175 bool drawTrack(Track* track_p, QPainter* p, QString color);
176 void drawFullTrackMaps(Track* track_p);
178 void changeMapType(MapType map);
179 void changeUpdateInterval(int millis);
184 //void showSatelliteInfo();
185 void startNetworking();
186 void stopNetworking();
187 void setOrientation(ScreenOrientation orientation);
189 void startServices();
190 inline Track* getTrack(){return track;}
191 inline Track* getTrackToSniff(){return trackToSniff;}
192 inline void setTrackToSimulate(QList<GpsPoint*> toDo){trackToSimulate=toDo;}
193 inline bool hasTrackToSimulate(){return (trackToSimulate.size()>0);}
194 inline void startAutosaveTimer(int milliseconds){autosaveTimer->start(milliseconds);}
195 inline void startSimulatePossitioning(int milliseconds){simulatePossitioningTimer->start(milliseconds);}
196 inline void startSimulatePossitioning(){simulatePossitioningTimer->start();}
197 inline void startSPositioningTimer(){sPossitioningTimer->start();}
198 inline void saveXml(){autosave();}
199 inline void setMode(Mode m){mode=m;}
200 inline Mode getMode(){return mode;}
201 inline void setTrackToSniff(Track* t){trackToSniff=t;}
202 inline bool simulatingGPS(){return simulateGPS;}
203 inline void setSimulateGPS(bool value){simulateGPS=value;}
204 inline int getTilesToDownload(){return tilesToDownload;}
205 inline void setIsCacheEnabled(bool value){
207 slippyMap->setIsCacheEnabled(value);
209 inline bool isCacheEnabled(){return slippyMap->isCacheEnabled();}
211 void setTrack(QString filename,QString activity);
212 void setCenter(qreal lat, qreal lng);
216 void desactivatePossitionPaint();
217 void activatePossitionPaint();
218 void simulatedPossitionUpdated();
219 void updateProgress(int val);
222 void networkSessionOpened();
223 void error(QNetworkSession::SessionError error);
225 void startActivity();
226 void configureSettings();
228 void tracksActivity();
229 void newSimulation();
233 void downloadMapTrack();
234 void newActivityTrack();
243 void startPositioning();
244 void stopPositioning();
247 //void networkSessionOpened();
249 void updateMap(const QRect &r);
252 void positionUpdated(const QGeoPositionInfo &info);
257 #endif // ACTIVITYMAP_H