From 31050528017e11c54f408b22c92265ff6c4c4b69 Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Mon, 21 Mar 2011 11:48:32 +0100 Subject: and the files ^^ --- src/downloadmanager.h | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/downloadmanager.h (limited to 'src/downloadmanager.h') 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 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 -- cgit v1.2.3-55-g7522