LibrePCB Developers Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FileDownload Class Referencefinal

This class is used to download a file asynchronously in a separate thread. More...

#include <filedownload.h>

+ Inheritance diagram for FileDownload:
+ Collaboration diagram for FileDownload:

Signals

void fileDownloaded (librepcb::FilePath filepath)
 File successfully downloaded signal (emited right before finished()) More...
 
void zipFileExtracted (librepcb::FilePath directory)
 ZIP file successfully extracted signal (emited right before finished()) More...
 
- Signals inherited from NetworkRequestBase
void startRequested ()
 Internal signal, don't use it from outside. More...
 
void progressState (QString state)
 Reply progress / state changed signal. More...
 
void progressPercent (int percent)
 Reply content download progress signal (simple) More...
 
void progress (qint64 bytesReceived, qint64 bytesTotal, int percent)
 Reply content download progress signal (extended) More...
 
void aborted ()
 Request aborted signal (emited right before finished()) More...
 
void succeeded ()
 Request succeeded signal (emited right before finished()) More...
 
void errored (QString errorMsg)
 Request errored signal (emited right before finished()) More...
 
void finished (bool success)
 Request finished signal. More...
 

Public Member Functions

 FileDownload ()=delete
 
 FileDownload (const FileDownload &other)=delete
 
 FileDownload (const QUrl &url, const FilePath &dest) noexcept
 Constructor. More...
 
 ~FileDownload () noexcept
 
void setExpectedChecksum (QCryptographicHash::Algorithm algorithm, const QByteArray &checksum) noexcept
 Set the expected checksum of the file to download. More...
 
void setZipExtractionDirectory (const FilePath &dir) noexcept
 Set extraction directory of the ZIP file to download. More...
 
FileDownloadoperator= (const FileDownload &rhs)=delete
 
- Public Member Functions inherited from NetworkRequestBase
 NetworkRequestBase ()=delete
 
 NetworkRequestBase (const NetworkRequestBase &other)=delete
 
 NetworkRequestBase (const QUrl &url) noexcept
 
virtual ~NetworkRequestBase () noexcept
 
void setHeaderField (const QByteArray &name, const QByteArray &value) noexcept
 Set a HTTP header field for the network request. More...
 
void setExpectedReplyContentSize (qint64 bytes) noexcept
 Set the expected size of the requested content. More...
 
NetworkRequestBaseoperator= (const NetworkRequestBase &rhs)=delete
 

Private Member Functions

void prepareRequest () override
 
void finalizeRequest () override
 
void emitSuccessfullyFinishedSignals () noexceptoverride
 
void fetchNewData () noexceptoverride
 

Private Attributes

FilePath mDestination
 
QScopedPointer< QSaveFile > mFile
 
QCryptographicHash::Algorithm mHashAlgorithm
 
QByteArray mExpectedChecksum
 
FilePath mExtractZipToDir
 

Additional Inherited Members

- Public Slots inherited from NetworkRequestBase
void start () noexcept
 Start downloading the requested content. More...
 
void abort () noexcept
 Abort downloading the requested content. More...
 
- Protected Attributes inherited from NetworkRequestBase
QUrl mUrl
 
qint64 mExpectedContentSize
 
QList< QUrl > mRedirectedUrls
 
QNetworkRequest mRequest
 
QScopedPointer< QNetworkReply > mReply
 
bool mStarted
 
bool mAborted
 
bool mErrored
 
bool mFinished
 

Detailed Description

This class is used to download a file asynchronously in a separate thread.

See Also
librepcb::NetworkRequestBase, librepcb::DownloadManager
Author
ubruhin
Date
2016-09-12

Constructor & Destructor Documentation

FileDownload ( )
delete
FileDownload ( const FileDownload other)
delete
FileDownload ( const QUrl &  url,
const FilePath dest 
)
noexcept

Constructor.

Parameters
urlThe URL to the file to download
destThe path to the destination file (must not exist!)
~FileDownload ( )
noexcept

Member Function Documentation

void setExpectedChecksum ( QCryptographicHash::Algorithm  algorithm,
const QByteArray &  checksum 
)
noexcept

Set the expected checksum of the file to download.

If set, the checksum of the downloaded file will be compared with this checksum. If they differ, the file gets removed and an error will be reported.

Parameters
algorithmThe checksum algorithm to be used
checksumThe expected checksum of the file to download
void setZipExtractionDirectory ( const FilePath dir)
noexcept

Set extraction directory of the ZIP file to download.

If set (and valid), the downloaded file (must be a ZIP!) will be extracted into this directory after downloading it.

Note
The downloaded ZIP file will be removed after extracting it.
Parameters
dirDestination directory (may or may not exist)
FileDownload& operator= ( const FileDownload rhs)
delete
void fileDownloaded ( librepcb::FilePath  filepath)
signal

File successfully downloaded signal (emited right before finished())

Note
The parameter type is specified with the full namespace, reason see here: http://stackoverflow.com/questions/21119397/emitting-signals-with-custom-types-does-not-work

+ Here is the caller graph for this function:

void zipFileExtracted ( librepcb::FilePath  directory)
signal

ZIP file successfully extracted signal (emited right before finished())

Note
The parameter type is specified with the full namespace, reason see here: http://stackoverflow.com/questions/21119397/emitting-signals-with-custom-types-does-not-work

+ Here is the caller graph for this function:

void prepareRequest ( )
overrideprivatevirtual

Implements NetworkRequestBase.

+ Here is the call graph for this function:

void finalizeRequest ( )
overrideprivatevirtual

Implements NetworkRequestBase.

+ Here is the call graph for this function:

void emitSuccessfullyFinishedSignals ( )
overrideprivatevirtualnoexcept

Implements NetworkRequestBase.

+ Here is the call graph for this function:

void fetchNewData ( )
overrideprivatevirtualnoexcept

Implements NetworkRequestBase.

Member Data Documentation

FilePath mDestination
private
QScopedPointer<QSaveFile> mFile
private
QCryptographicHash::Algorithm mHashAlgorithm
private
QByteArray mExpectedChecksum
private
FilePath mExtractZipToDir
private

The documentation for this class was generated from the following files: