summaryrefslogtreecommitdiffstats
path: root/src/libs/kdtools/kdupdaterfiledownloader.h
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@nokia.com>2012-03-15 14:53:47 +0100
committerKarsten Heimrich <karsten.heimrich@nokia.com>2012-03-19 16:14:04 +0100
commitbe3b47d0d504a3409ce66bd77bb8c0acff87c4f5 (patch)
tree09dfb02d484a4f395991972b828da71400fb761a /src/libs/kdtools/kdupdaterfiledownloader.h
parent9fd62353cf7f973d78cd2093328ac15b5c4980b6 (diff)
Reorganize the tree, have better ifw.pri. Shadow build support.
Change-Id: I01fb12537f863ed0744979973c7e4153889cc5cb Reviewed-by: Tim Jenssen <tim.jenssen@nokia.com>
Diffstat (limited to 'src/libs/kdtools/kdupdaterfiledownloader.h')
-rw-r--r--src/libs/kdtools/kdupdaterfiledownloader.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/src/libs/kdtools/kdupdaterfiledownloader.h b/src/libs/kdtools/kdupdaterfiledownloader.h
new file mode 100644
index 000000000..bdba0a859
--- /dev/null
+++ b/src/libs/kdtools/kdupdaterfiledownloader.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+** Copyright (C) 2001-2010 Klaralvdalens Datakonsult AB. All rights reserved.
+**
+** This file is part of the KD Tools library.
+**
+** Licensees holding valid commercial KD Tools licenses may use this file in
+** accordance with the KD Tools Commercial License Agreement provided with
+** the Software.
+**
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU Lesser General Public License version 2 and version 3 as published by the
+** Free Software Foundation and appearing in the file LICENSE.LGPL included.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** Contact info@kdab.com if any conditions of this licensing are not
+** clear to you.
+**
+**********************************************************************/
+
+#ifndef KD_UPDATER_FILE_DOWNLOADER_H
+#define KD_UPDATER_FILE_DOWNLOADER_H
+
+#include "kdupdater.h"
+#include "kdtoolsglobal.h"
+
+#include <QtCore/QObject>
+#include <QtCore/QUrl>
+#include <QtCore/QCryptographicHash>
+
+#include <QtNetwork/QAuthenticator>
+
+namespace KDUpdater {
+
+KDTOOLS_EXPORT QByteArray calculateHash(QIODevice *device, QCryptographicHash::Algorithm algo);
+KDTOOLS_EXPORT QByteArray calculateHash(const QString &path, QCryptographicHash::Algorithm algo);
+
+class HashVerificationJob;
+class FileDownloaderProxyFactory;
+
+class KDTOOLS_EXPORT FileDownloader : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(bool autoRemoveDownloadedFile READ isAutoRemoveDownloadedFile WRITE setAutoRemoveDownloadedFile)
+ Q_PROPERTY(QUrl url READ url WRITE setUrl)
+ Q_PROPERTY(QString scheme READ scheme)
+
+public:
+ explicit FileDownloader(const QString &scheme, QObject *parent = 0);
+ ~FileDownloader();
+
+ void setUrl(const QUrl &url);
+ QUrl url() const;
+
+ void setSha1Sum(const QByteArray &sha1);
+ QByteArray sha1Sum() const;
+
+ QString errorString() const;
+ QString scheme() const;
+
+ virtual bool canDownload() const = 0;
+ virtual bool isDownloaded() const = 0;
+ virtual QString downloadedFileName() const = 0;
+ virtual void setDownloadedFileName(const QString &name) = 0;
+ virtual FileDownloader *clone(QObject *parent=0) const = 0;
+
+ void download();
+
+ void setAutoRemoveDownloadedFile(bool val);
+ bool isAutoRemoveDownloadedFile() const;
+
+ void setFollowRedirects(bool val);
+ bool followRedirects() const;
+
+ FileDownloaderProxyFactory *proxyFactory() const;
+ void setProxyFactory(FileDownloaderProxyFactory *factory);
+
+ QAuthenticator authenticator() const;
+ void setAuthenticator(const QAuthenticator &authenticator);
+
+public Q_SLOTS:
+ virtual void cancelDownload();
+ void sha1SumVerified(KDUpdater::HashVerificationJob *job);
+
+protected:
+ virtual void onError() = 0;
+ virtual void onSuccess() = 0;
+
+Q_SIGNALS:
+ void downloadStarted();
+ void downloadCanceled();
+
+ void downloadProgress(double progress);
+ void estimatedDownloadTime(int seconds);
+ void downloadSpeed(qint64 bytesPerSecond);
+ void downloadStatus(const QString &status);
+ void downloadProgress(qint64 bytesReceived, qint64 bytesToReceive);
+
+#ifndef Q_MOC_RUN
+private:
+#endif
+ void downloadCompleted();
+ void downloadAborted(const QString &errorMessage);
+
+protected:
+ void setDownloadCanceled();
+ void setDownloadCompleted(const QString &filepath);
+ void setDownloadAborted(const QString &error);
+
+ void runDownloadSpeedTimer();
+ void stopDownloadSpeedTimer();
+
+ void addSample(qint64 sample);
+ int downloadSpeedTimerId() const;
+ void setProgress(qint64 bytesReceived, qint64 bytesToReceive);
+
+ void emitDownloadSpeed();
+ void emitDownloadStatus();
+ void emitDownloadProgress();
+ void emitEstimatedDownloadTime();
+
+private Q_SLOTS:
+ virtual void doDownload() = 0;
+
+private:
+ struct Private;
+ Private *d;
+};
+
+} // namespace KDUpdater
+
+#endif // KD_UPDATER_FILE_DOWNLOADER_H