diff options
author | kh1 <karsten.heimrich@nokia.com> | 2012-03-15 14:53:47 +0100 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@nokia.com> | 2012-03-19 16:14:04 +0100 |
commit | be3b47d0d504a3409ce66bd77bb8c0acff87c4f5 (patch) | |
tree | 09dfb02d484a4f395991972b828da71400fb761a /src/libs/kdtools/kdupdaterfiledownloader.h | |
parent | 9fd62353cf7f973d78cd2093328ac15b5c4980b6 (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.h | 134 |
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 |