#pragma once #include #include #include namespace scwx { namespace qt { namespace request { class DownloadRequest : public QObject { Q_OBJECT public: enum class CompleteReason { OK, Canceled, IOError, RemoteError, DigestError }; 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 p; signals: void ProgressUpdated(std::ptrdiff_t downloadedBytes, std::ptrdiff_t totalBytes); void RequestComplete(CompleteReason reason); }; } // namespace request } // namespace qt } // namespace scwx