summaryrefslogtreecommitdiffstats
path: root/src/downloadmanager.h
diff options
context:
space:
mode:
authorJonathan Bauer2011-03-21 11:48:32 +0100
committerJonathan Bauer2011-03-21 11:48:32 +0100
commit31050528017e11c54f408b22c92265ff6c4c4b69 (patch)
treeb3a83fc05f53548a7c6beb29b9b0d971b9c49cc3 /src/downloadmanager.h
parentminor code convention fixes (diff)
downloadfbgui-31050528017e11c54f408b22c92265ff6c4c4b69.tar.gz
fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.tar.xz
fbgui-31050528017e11c54f408b22c92265ff6c4c4b69.zip
and the files ^^
Diffstat (limited to 'src/downloadmanager.h')
-rw-r--r--src/downloadmanager.h81
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