WSJT-X/Network/FileDownload.hpp

55 lines
1.4 KiB
C++

#ifndef WSJTX_FILEDOWNLOAD_H
#define WSJTX_FILEDOWNLOAD_H
#include <QObject>
#include <QString>
#include <QPointer>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include <QTemporaryFile>
#include <QSaveFile>
class FileDownload : public QObject {
Q_OBJECT
public:
explicit FileDownload();
~FileDownload();
void configure(QNetworkAccessManager *network_manager, const QString& source_url, const QString& destination_filename, const QString& user_agent);
private:
QNetworkAccessManager *manager_;
QString source_url_;
QString destination_filename_;
QString user_agent_;
QPointer<QNetworkReply> reply_;
QNetworkRequest request_;
QSaveFile destfile_;
bool url_valid_;
int redirect_count_;
signals:
void complete(QString filename);
void progress(QString filename);
void load_finished() const;
void download_error (QString const& reason) const;
void error(QString const& reason) const;
public slots:
void start_download();
void download(QUrl url);
void store();
void abort();
void downloadComplete(QNetworkReply* data);
void downloadProgress(qint64 recieved, qint64 total);
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
void errorOccurred(QNetworkReply::NetworkError code);
#else
void obsoleteError();
#endif
void replyComplete();
};
#endif //WSJTX_FILEDOWNLOAD_H