From a1abbd9e05c80584d831b1d12c27c5f7d731cece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 28 May 2016 19:54:17 +0200 Subject: NOISSUE refactor *Download into more, smaller pieces * Download is now Download. * Download uses Sink subclasses to process various events. * Validators can be used to further customize the Sink behaviour. --- api/logic/status/StatusChecker.cpp | 11 +++-------- api/logic/status/StatusChecker.h | 24 ++++++++++++------------ 2 files changed, 15 insertions(+), 20 deletions(-) (limited to 'api/logic/status') diff --git a/api/logic/status/StatusChecker.cpp b/api/logic/status/StatusChecker.cpp index 13cac037..d09c9976 100644 --- a/api/logic/status/StatusChecker.cpp +++ b/api/logic/status/StatusChecker.cpp @@ -43,7 +43,7 @@ void StatusChecker::reloadStatus() // qDebug() << "Reloading status."; NetJob* job = new NetJob("Status JSON"); - job->addNetAction(ByteArrayDownload::make(URLConstants::MOJANG_STATUS_URL)); + job->addNetAction(Net::Download::makeByteArray(URLConstants::MOJANG_STATUS_URL, &dataSink)); QObject::connect(job, &NetJob::succeeded, this, &StatusChecker::statusDownloadFinished); QObject::connect(job, &NetJob::failed, this, &StatusChecker::statusDownloadFailed); m_statusNetJob.reset(job); @@ -55,15 +55,10 @@ void StatusChecker::statusDownloadFinished() { qDebug() << "Finished loading status JSON."; m_statusEntries.clear(); - QByteArray data; - { - ByteArrayDownloadPtr dl = std::dynamic_pointer_cast(m_statusNetJob->first()); - data = dl->m_data; - m_statusNetJob.reset(); - } + m_statusNetJob.reset(); QJsonParseError jsonError; - QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &jsonError); + QJsonDocument jsonDoc = QJsonDocument::fromJson(dataSink, &jsonError); if (jsonError.error != QJsonParseError::NoError) { diff --git a/api/logic/status/StatusChecker.h b/api/logic/status/StatusChecker.h index c1a54dba..452248f4 100644 --- a/api/logic/status/StatusChecker.h +++ b/api/logic/status/StatusChecker.h @@ -26,35 +26,35 @@ class MULTIMC_LOGIC_EXPORT StatusChecker : public QObject { Q_OBJECT -public: +public: /* con/des */ StatusChecker(); +public: /* methods */ QString getLastLoadErrorMsg() const; - bool isLoadingStatus() const; - QMap getStatusEntries() const; - void Q_SLOT reloadStatus(); - -protected: - virtual void timerEvent(QTimerEvent *); - signals: void statusLoading(bool loading); void statusChanged(QMap newStatus); +public slots: + void reloadStatus(); + +protected: /* methods */ + virtual void timerEvent(QTimerEvent *); + protected slots: void statusDownloadFinished(); void statusDownloadFailed(QString reason); + void succeed(); + void fail(const QString& errorMsg); -protected: +protected: /* data */ QMap m_prevEntries; QMap m_statusEntries; NetJobPtr m_statusNetJob; QString m_lastLoadError; - - void Q_SLOT succeed(); - void Q_SLOT fail(const QString& errorMsg); + QByteArray dataSink; }; -- cgit v1.2.3