-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathfiledownloader.h
58 lines (44 loc) · 1.33 KB
/
filedownloader.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef FILEDOWNLOADER_H
#define FILEDOWNLOADER_H
#include <QObject>
#include <QByteArray>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
class FileDownloader : public QObject {
Q_OBJECT
public:
explicit FileDownloader(QUrl url, QObject *parent = 0);
virtual ~FileDownloader() Q_DEL_OVERRIDE;
QByteArray downloadedData() const;
void wait();
void abort() { emit byAbort(); }
QNetworkReply::NetworkError lastError() { return m_lastError; }
QString lastErrorString() const { return m_lastErrorString; }
inline QString link() const { return m_link; }
enum {
Second = 1000,
Timeout = 30 * Second
};
signals:
void downloaded(const QUrl &url);
void byResult(QNetworkReply *, QNetworkReply::NetworkError);
void byAbort();
private slots:
void fileDownloaded(QNetworkReply* pReply);
#ifndef QT_NO_OPENSSL
void catchSslError(QNetworkReply*, const QList<QSslError> &);
#endif
void catchError(QNetworkReply::NetworkError);
void onTimeout();
private:
friend class DownloadThread;
QNetworkAccessManager m_WebCtrl;
/// Ownership is external.
QNetworkReply *netReply;
QByteArray m_DownloadedData;
QNetworkReply::NetworkError m_lastError;
QString m_lastErrorString;
QString m_link;
};
#endif // FILEDOWNLOADER_H