From 69213b1206e97f7d4db4270a4b3b0af41dc9e6fc Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sun, 21 Nov 2021 23:21:12 +0100 Subject: NOISSUE continue refactoring things to make tests pass --- launcher/net/NetJob.h | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'launcher/net/NetJob.h') diff --git a/launcher/net/NetJob.h b/launcher/net/NetJob.h index 338f8e71..45b9bc0f 100644 --- a/launcher/net/NetJob.h +++ b/launcher/net/NetJob.h @@ -22,33 +22,34 @@ #include "QObjectPtr.h" class NetJob; -typedef shared_qobject_ptr NetJobPtr; class NetJob : public Task { Q_OBJECT public: + using Ptr = shared_qobject_ptr; + explicit NetJob(QString job_name) : Task() { setObjectName(job_name); } virtual ~NetJob(); - bool addNetAction(NetActionPtr action); + bool addNetAction(NetAction::Ptr action); - NetActionPtr operator[](int index) + NetAction::Ptr operator[](int index) { return downloads[index]; } - const NetActionPtr at(const int index) + const NetAction::Ptr at(const int index) { return downloads.at(index); } - NetActionPtr first() + NetAction::Ptr first() { if (downloads.size()) return downloads[0]; - return NetActionPtr(); + return NetAction::Ptr(); } int size() const { @@ -64,6 +65,19 @@ private slots: public slots: virtual void executeTask() override; virtual bool abort() override; + virtual void start(shared_qobject_ptr network) { + m_network = network; + start(); + } + +protected slots: + void start() override { + if(!m_network) { + throw "Missing network while trying to start " + objectName(); + return; + } + Task::start(); + } private slots: void partProgress(int index, qint64 bytesReceived, qint64 bytesTotal); @@ -72,13 +86,15 @@ private slots: void partAborted(int index); private: + shared_qobject_ptr m_network; + struct part_info { qint64 current_progress = 0; qint64 total_progress = 1; int failures = 0; }; - QList downloads; + QList downloads; QList parts_progress; QQueue m_todo; QSet m_doing; -- cgit