From 8a8c4193e6ee7cd55870ef8495cb7cc3b9534e02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 17 May 2014 16:23:48 +0200 Subject: Finish status pills. --- logic/status/StatusChecker.cpp | 23 ++++++++++++++++++++--- logic/status/StatusChecker.h | 11 ++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) (limited to 'logic') diff --git a/logic/status/StatusChecker.cpp b/logic/status/StatusChecker.cpp index 66f800ae..17053837 100644 --- a/logic/status/StatusChecker.cpp +++ b/logic/status/StatusChecker.cpp @@ -27,6 +27,12 @@ StatusChecker::StatusChecker() } +void StatusChecker::timerEvent(QTimerEvent *e) +{ + QObject::timerEvent(e); + reloadStatus(); +} + void StatusChecker::reloadStatus() { if (isLoadingStatus()) @@ -42,13 +48,14 @@ void StatusChecker::reloadStatus() QObject::connect(job, &NetJob::succeeded, this, &StatusChecker::statusDownloadFinished); QObject::connect(job, &NetJob::failed, this, &StatusChecker::statusDownloadFailed); m_statusNetJob.reset(job); + emit statusLoading(true); job->start(); } void StatusChecker::statusDownloadFinished() { QLOG_DEBUG() << "Finished loading status JSON."; - + m_statusEntries.clear(); QByteArray data; { ByteArrayDownloadPtr dl = std::dynamic_pointer_cast(m_statusNetJob->first()); @@ -121,17 +128,27 @@ QString StatusChecker::getLastLoadErrorMsg() const void StatusChecker::succeed() { + if(m_prevEntries != m_statusEntries) + { + emit statusChanged(m_statusEntries); + m_prevEntries = m_statusEntries; + } m_lastLoadError = ""; QLOG_DEBUG() << "Status loading succeeded."; m_statusNetJob.reset(); - emit statusLoaded(); + emit statusLoading(false); } void StatusChecker::fail(const QString& errorMsg) { + if(m_prevEntries != m_statusEntries) + { + emit statusChanged(m_statusEntries); + m_prevEntries = m_statusEntries; + } m_lastLoadError = errorMsg; QLOG_DEBUG() << "Failed to load status:" << errorMsg; m_statusNetJob.reset(); - emit statusLoadingFailed(errorMsg); + emit statusLoading(false); } diff --git a/logic/status/StatusChecker.h b/logic/status/StatusChecker.h index 1cb01836..df0dd06d 100644 --- a/logic/status/StatusChecker.h +++ b/logic/status/StatusChecker.h @@ -29,26 +29,27 @@ public: QString getLastLoadErrorMsg() const; - bool isStatusLoaded() const; - bool isLoadingStatus() const; QMap getStatusEntries() const; void Q_SLOT reloadStatus(); +protected: + virtual void timerEvent(QTimerEvent *); + signals: - void statusLoaded(); - void statusLoadingFailed(QString errorMsg); + void statusLoading(bool loading); + void statusChanged(QMap newStatus); protected slots: void statusDownloadFinished(); void statusDownloadFailed(); protected: + QMap m_prevEntries; QMap m_statusEntries; NetJobPtr m_statusNetJob; - bool m_loadedStatus; QString m_lastLoadError; void Q_SLOT succeed(); -- cgit v1.2.3