mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-28 08:48:48 +02:00
4287b2b7bb
- renamed files that should be preprocessed with moc: they will have _moc suffix (cpp files were also renamed for consistency) - fixed disabling of mods that have dependent on them mods - repositories will be reloaded if changed - may have fixed non-starting vcmi client on Win
57 lines
1.3 KiB
C++
57 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <QSharedPointer>
|
|
#include <QtNetwork/QNetworkReply>
|
|
|
|
class QFile;
|
|
|
|
class CDownloadManager: public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
struct FileEntry
|
|
{
|
|
enum Status
|
|
{
|
|
IN_PROGRESS,
|
|
FINISHED,
|
|
FAILED
|
|
};
|
|
|
|
QNetworkReply * reply;
|
|
QSharedPointer<QFile> file;
|
|
Status status;
|
|
qint64 bytesReceived;
|
|
qint64 totalSize;
|
|
};
|
|
|
|
QStringList encounteredErrors;
|
|
|
|
QNetworkAccessManager manager;
|
|
|
|
QList<FileEntry> currentDownloads;
|
|
|
|
FileEntry & getEntry(QNetworkReply * reply);
|
|
public:
|
|
CDownloadManager();
|
|
|
|
// returns true if download with such URL is in progress/queued
|
|
// FIXME: not sure what's right place for "mod download in progress" check
|
|
bool downloadInProgress(const QUrl &url);
|
|
|
|
// returns network reply so caller can connect to required signals
|
|
void downloadFile(const QUrl &url, const QString &file);
|
|
|
|
public slots:
|
|
void downloadFinished(QNetworkReply *reply);
|
|
void downloadProgressChanged(qint64 bytesReceived, qint64 bytesTotal);
|
|
|
|
signals:
|
|
// for status bar updates. Merges all queued downloads into one
|
|
void downloadProgress(qint64 currentAmount, qint64 maxAmount);
|
|
|
|
// called when all files were downloaded and manager goes to idle state
|
|
// Lists contains files that were successfully downloaded / failed to download
|
|
void finished(QStringList savedFiles, QStringList failedFiles, QStringList errors);
|
|
};
|