diff options
Diffstat (limited to 'src/fbgui/downloadmanager.h')
-rw-r--r-- | src/fbgui/downloadmanager.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/fbgui/downloadmanager.h b/src/fbgui/downloadmanager.h new file mode 100644 index 0000000..62df4bc --- /dev/null +++ b/src/fbgui/downloadmanager.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2010,2011 - RZ Uni Freiburg + * Copyright (c) 2010,2011 - OpenSLX Project + * + * This program/file is free software distributed under the GPL version 2. + * See http://openslx.org/COPYING + * + * If you have any feedback please consult http://openslx.org/feedback and + * send your feedback to feedback@openslx.org + * + * General information about OpenSLX can be found under http://openslx.org + * + * + * Class managing download requests: + * - provides queueing functionality + * - static info: filename, filesize + * - dynamic info: download progress, current speed + * + */ + +#ifndef DOWNLOADMANAGER_H +#define DOWNLOADMANAGER_H + +#include "fbgui.h" + +extern bool debug; +extern QUrl baseURL; +extern QString binPath; +extern QString downloadPath; +extern int updateInterval; + +class DownloadManager: public QObject { +Q_OBJECT + +public: + DownloadManager(); + ~DownloadManager(); + QTime time; + +private: + // checks for valid download directory, ran once in constructor + void checkDownloadDirectory(); + // private control function for queueing mechanism. + void processDownloadRequest(const QUrl& url); + + // base objects for downloading + QNetworkAccessManager* _qnam; + QQueue<QUrl> _downloadQueue; + QNetworkReply* _currentDownload; + QFile _outfile; + QDir _downloadDir; + // download progress variables + int _currentProgress, _lastProgress; + // download in progress flag + bool _dip; + // static counter + static int _downloaded; + +signals: + // notify sends a message to the javascript interface to be evaluated there + void notify(const QString& msg); + // downloadInfo sends static information (name, size) to the interface. + void downloadInfo(const QString& filename, const double& filesize); + // updateProgress sends download progress information to the interface. + void updateProgress(const int& percent, const double& speed, const QString& unit); + // signal emitted when download queue is empty. + void downloadQueueEmpty(); + +public slots: + // public slots to receive download requests. + void downloadFile(const QUrl& fileUrl); + // convenience function + void downloadFile(const QString& fileUrl); + +private slots: + // private slots to manage the downloading process + void startNextDownload(); + void processMetaInfo(); + void downloadReady(); + void downloadProgress(qint64 bytesIn, qint64 bytesTotal); + void downloadFinished(); +}; + +#endif // DOWNLOADMANAGER_H |