1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-11-28 08:48:48 +02:00
vcmi/launcher/modManager/cdownloadmanager_moc.h
Ivan Savenko 4287b2b7bb fixes for launcher, as discussed on forums:
- 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
2013-08-24 20:11:51 +00:00

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);
};