summaryrefslogtreecommitdiffstats
path: root/api/logic/net/NetAction.h
diff options
context:
space:
mode:
Diffstat (limited to 'api/logic/net/NetAction.h')
-rw-r--r--api/logic/net/NetAction.h71
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;
};