supercell-wx/scwx-qt/source/scwx/qt/request/download_request.hpp
2024-03-25 00:20:15 -05:00

51 lines
886 B
C++

#pragma once
#include <filesystem>
#include <memory>
#include <QObject>
namespace scwx
{
namespace qt
{
namespace request
{
class DownloadRequest : public QObject
{
Q_OBJECT
public:
enum class CompleteReason
{
OK,
Canceled,
IOError,
RemoteError
};
explicit DownloadRequest(const std::string& url,
const std::filesystem::path& destinationPath);
~DownloadRequest();
const std::string& url() const;
const std::filesystem::path& destination_path() const;
void Cancel();
bool IsCanceled() const;
private:
class Impl;
std::unique_ptr<Impl> p;
signals:
void ProgressUpdated(std::ptrdiff_t downloadedBytes,
std::ptrdiff_t totalBytes);
void RequestComplete(CompleteReason reason);
};
} // namespace request
} // namespace qt
} // namespace scwx