diff options
Diffstat (limited to 'api/logic/net/NetAction.h')
-rw-r--r-- | api/logic/net/NetAction.h | 71 |
1 files changed, 61 insertions, 10 deletions
diff --git a/api/logic/net/NetAction.h b/api/logic/net/NetAction.h index 667484d1..a533c317 100644 --- a/api/logic/net/NetAction.h +++ b/api/logic/net/NetAction.h @@ -15,8 +15,6 @@ #pragma once -#include "tasks/Task.h" - #include <QObject> #include <QUrl> #include <memory> @@ -25,29 +23,82 @@ #include "multimc_logic_export.h" -typedef shared_qobject_ptr<class NetAction> NetActionPtr; -class MULTIMC_LOGIC_EXPORT NetAction : public Task +enum JobStatus +{ + Job_NotStarted, + Job_InProgress, + Job_Finished, + Job_Failed, + Job_Aborted, + Job_Failed_Proceed +}; + +typedef std::shared_ptr<class NetAction> NetActionPtr; +class MULTIMC_LOGIC_EXPORT NetAction : public QObject { Q_OBJECT protected: - explicit NetAction(QObject *parent = 0) : Task(parent) {}; + explicit NetAction() : QObject(0) {}; public: virtual ~NetAction() {}; public: + virtual qint64 totalProgress() const + { + return m_total_progress; + } + virtual qint64 currentProgress() const + { + return m_progress; + } + virtual qint64 numberOfFailures() const + { + return m_failures; + } + virtual bool abort() + { + return false; + } + virtual bool canAbort() + { + return false; + } + +public: + /// the network reply unique_qobject_ptr<QNetworkReply> m_reply; + + /// source URL QUrl m_url; - // FIXME: pull this up into Task - Status m_status = Status::NotStarted; + + /// The file's status + JobStatus m_status = Job_NotStarted; + + /// index within the parent job + int m_index_within_job = 0; + + qint64 m_progress = 0; + qint64 m_total_progress = 1; + + /// number of failures up to this point + int m_failures = 0; signals: - void failed(); - void aborted(); + void started(int index); + void netActionProgress(int index, qint64 current, qint64 total); + void succeeded(int index); + void failed(int index); + void aborted(int index); -protected slots: +protected +slots: virtual void downloadProgress(qint64 bytesReceived, qint64 bytesTotal) = 0; virtual void downloadError(QNetworkReply::NetworkError error) = 0; virtual void downloadFinished() = 0; virtual void downloadReadyRead() = 0; + +public +slots: + virtual void start() = 0; }; |