diff options
author | Jonathan Bauer | 2011-03-21 11:48:32 +0100 |
---|---|---|
committer | Jonathan Bauer | 2011-03-21 11:48:32 +0100 |
commit | 31050528017e11c54f408b22c92265ff6c4c4b69 (patch) | |
tree | b3a83fc05f53548a7c6beb29b9b0d971b9c49cc3 /src/downloadmanager.h | |
parent | minor code convention fixes (diff) | |
download | fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.tar.gz fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.tar.xz fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.zip |
and the files ^^
Diffstat (limited to 'src/downloadmanager.h')
-rw-r--r-- | src/downloadmanager.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/downloadmanager.h b/src/downloadmanager.h new file mode 100644 index 0000000..0cc1a35 --- /dev/null +++ b/src/downloadmanager.h @@ -0,0 +1,81 @@ +/* +# 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 +# +# +# Helper class managing downloads. +# +*/ + +#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(); + +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> dlQ; + QNetworkReply* currentDownload; + QFile outfile; + QDir downloadDir; + // download progress variables + QTime dltime; + int currentProgress, lastProgress; + // download in progress flag + bool dip; + // static counter + static int downloaded; + +signals: + // notify sends a message to the javascript interface. + 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); + 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 |