9 //#include <qmobilityglobal.h>
10 #include <qgeopositioninfosource.h>
11 #include <qgeopositioninfo.h>
12 #include <qnetworkconfigmanager.h>
13 #include <qnetworksession.h>
15 #include <QNetworkReply>
20 // Use the QtMobility namespace
23 // tile size in pixels
36 TileRequest(int z, QDateTime time, bool s){
45 class ThreadSaver: public QThread
50 ThreadSaver(QImage qi, QString fs);
60 class TilesMap: public QObject
66 TilesMap(QNetworkSession *session, QObject *parent, Log *log,int zoom, MapType mapType);
69 inline void setZoom(int z){zoom=z;}
70 inline int getZoom(){return zoom;}
72 inline void setWidth(int w){width=w;}
73 inline int getWidth(){return width;}
75 inline void setHeight(int h){height=h;}
76 inline int getHeight(){return height;}
78 inline void setNetwork(bool status){network=status;}
79 inline bool getNetwork(){return network;}
81 inline void setMapType(MapType m){mapType=m;}
82 inline MapType getMapType(){return mapType;}
84 //inline void setLatitude(qreal lat){latitude=lat;}
85 inline qreal getLatitude(){return latitude;}
87 //inline void setLongitude(qreal lng){longitude=lng;}
88 inline qreal getLongitude(){return longitude;}
90 inline QRect getTilesRect(){return m_tilesRect;}
92 QPointF coordinate2tile(qreal, qreal, int);
93 qreal tilex2long(qreal, int);
94 qreal tiley2lat(qreal, int);
96 bool mapIsOnCache(int zoom,int x,int y);
98 void updateTiles(qreal lat, qreal lng);
100 int downloadMaps(Track* track_p);
101 void downloadTiles(qreal lat, qreal lng, int zoom, int* numTiles);
102 void downloadWindow(int *numTiles, int zoom);
104 void updatePosition(GpsPoint point);
105 void render(QPainter *p, const QRect &rect);
106 void pan(const QPoint &delta);
111 void handleReplies(QNetworkReply *reply);
115 void updated(const QRect &rect);
116 void tilesDownloaded(int value);
117 void pointsRequested(int value);
120 QRect tileRect(const QPoint &tp);
136 QNetworkSession* m_session;
143 QHash<QPoint, QPixmap> m_tileMaps;
144 QNetworkAccessManager *m_manager;
146 QString mapUrlProvider();
147 QList<QNetworkReply*> m_pendingReplies;
148 QHash<QPoint, TileRequest> m_tileRequests;
150 bool timeout(QDateTime qdt);
152 QString fileUrlProvider();
153 QString urlProvider();