summaryrefslogtreecommitdiffstats
path: root/src/fbgui/downloadmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/fbgui/downloadmanager.h')
-rw-r--r--src/fbgui/downloadmanager.h84
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