1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 23:03:22 +02:00
GPXSee/src/map/downloader.h

68 lines
1.2 KiB
C
Raw Normal View History

2015-11-23 02:33:01 +01:00
#ifndef DOWNLOADER_H
#define DOWNLOADER_H
#include <QNetworkAccessManager>
#include <QUrl>
#include <QList>
#include <QMap>
2015-12-04 22:56:34 +01:00
#include <QSet>
2015-11-23 02:33:01 +01:00
class QNetworkReply;
2015-11-23 02:33:01 +01:00
class Download
{
public:
Download(const QUrl &url, const QString &file)
2015-11-23 02:33:01 +01:00
{_url = url; _file = file;}
const QUrl& url() const {return _url;}
2015-11-23 02:33:01 +01:00
const QString& file() const {return _file;}
private:
QUrl _url;
2015-11-23 02:33:01 +01:00
QString _file;
};
class Downloader : public QObject
{
Q_OBJECT
public:
Downloader(QObject *parent = 0);
bool get(const QList<Download> &list);
2015-11-23 02:33:01 +01:00
signals:
void finished();
private slots:
void downloadFinished(QNetworkReply *reply);
private:
2017-01-16 21:45:27 +01:00
class Redirect
{
public:
Redirect() : _level(0) {}
Redirect(const QUrl &origin, int level) :
_origin(origin), _level(level) {}
const QUrl &origin() const {return _origin;}
int level() const {return _level;}
bool isNull() const {return (_level == 0);}
private:
QUrl _origin;
int _level;
};
bool doDownload(const Download &dl, const Redirect &redirect = Redirect());
2015-11-23 02:33:01 +01:00
bool saveToDisk(const QString &filename, QIODevice *data);
2015-12-04 22:56:34 +01:00
QNetworkAccessManager _manager;
QMap<QUrl, QNetworkReply *> _currentDownloads;
2015-12-04 22:56:34 +01:00
QSet<QUrl> _errorDownloads;
2015-11-23 02:33:01 +01:00
};
#endif // DOWNLOADER_H