1fa5ee4a0f542f2d692c96572d0f9195f7f407b2
[situare] / src / map / mapfetcher.cpp
1 #include <QNetworkAccessManager>
2 #include <QNetworkRequest>
3 #include <QNetworkReply>
4 #include <QUrl>
5 #include <QDebug>
6 #include <QPixmap>
7 #include <QNetworkDiskCache>
8 #include <QDesktopServices>
9
10 #include "mapfetcher.h"
11
12 MapFetcher::MapFetcher(QObject *parent)
13     : QObject(parent)
14 {
15     QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
16     diskCache->setCacheDirectory(QDesktopServices::storageLocation(
17             QDesktopServices::CacheLocation));
18     m_manager.setCache(diskCache);
19
20     connect(&m_manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(downloadFinished(QNetworkReply*)));
21 }
22
23 void MapFetcher::fetchMapImage(const QUrl &url)
24 {
25     qDebug() << "fetchMapImage()";
26     if (url.isEmpty())
27         return;
28
29     QNetworkRequest request(url);
30     request.setRawHeader("User-Agent", "Map Test");
31     m_manager.get(request);
32 }
33
34 void MapFetcher::downloadFinished(QNetworkReply *reply)
35 {
36     qDebug() << "downloadFinished()";
37     if (reply->error()) {
38         qDebug() << reply->errorString();
39         emit error(reply->errorString());
40     }
41     else {
42         QImage image;
43         QUrl url = reply->url();
44         if (!image.load(reply, 0))
45             image = QImage();
46
47         emit mapImageReceived(url, QPixmap::fromImage(image));
48     }
49
50     reply->deleteLater();
51 }
52
53 MapFetcher::~MapFetcher()
54 {
55
56 }