Download manager implementation

This commit is contained in:
Dan Paulat 2024-03-24 23:48:35 -05:00
parent 94726631cb
commit 4ac2626b65
5 changed files with 351 additions and 2 deletions

View file

@ -0,0 +1,51 @@
#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