From 400a8fc2a8e7f00ea83455fa94db12a5bfa9c56c Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 28 Dec 2018 00:54:40 +0100 Subject: [PATCH] Splash screen messages for web data services --- src/blackcore/setupreader.cpp | 1 + src/blackcore/webdataservices.cpp | 15 +++++++++------ src/blackgui/guiapplication.cpp | 13 +++++++++++++ src/blackgui/guiapplication.h | 3 +++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/blackcore/setupreader.cpp b/src/blackcore/setupreader.cpp index e50d1649b..861e984e0 100644 --- a/src/blackcore/setupreader.cpp +++ b/src/blackcore/setupreader.cpp @@ -250,6 +250,7 @@ namespace BlackCore m1 = CStatusMessage(this, CStatusMessage::SeverityError, "First bootstrap URL is empty"); } + emit this->setupLoadingMessages(m1); url = randomUrls.back(); if (!url.isEmpty()) diff --git a/src/blackcore/webdataservices.cpp b/src/blackcore/webdataservices.cpp index 7ec6b8163..a959a55cc 100644 --- a/src/blackcore/webdataservices.cpp +++ b/src/blackcore/webdataservices.cpp @@ -1430,10 +1430,11 @@ namespace BlackCore if (timeOut.isValid() && QDateTime::currentDateTimeUtc() > timeOut) { const QString timeOutString = timeOut.toString(); - CLogMessage(this).warning(u"Could not read '%1' info objects for '%2' from '%3', time out '%4'. Marking reader '%5' as failed and continue.") - << info << CEntityFlags::flagToString(entities) - << infoReader->getInfoObjectsUrl().toQString() << timeOutString - << infoReader->getName(); + const CStatusMessage m = CLogMessage(this).warning(u"Could not read '%1' info objects for '%2' from '%3', time out '%4'. Marking reader '%5' as failed and continue.") + << info << CEntityFlags::flagToString(entities) + << infoReader->getInfoObjectsUrl().toQString() << timeOutString + << infoReader->getName(); + emit this->databaseReaderMessages(m); // continue here and read data without info objects infoReader->setMarkedAsFailed(true); @@ -1448,15 +1449,17 @@ namespace BlackCore { // ok, this means we are parsing this->readDeferredInBackground(entities, waitForInfoObjectsMs); - CLogMessage(this).info(u"Parsing objects (%1) for '%2' from '%3'") << info << CEntityFlags::flagToString(entities) << infoReader->getInfoObjectsUrl().toQString(); + const CStatusMessage m = CLogMessage(this).info(u"Parsing objects (%1) for '%2' from '%3'") << info << CEntityFlags::flagToString(entities) << infoReader->getInfoObjectsUrl().toQString(); + emit this->databaseReaderMessages(m); return false; // wait } else { // we have a response, but a failure, means server is alive, but responded with error // such an error (access, ...) normally will not go away - CLogMessage(this).error(u"Info objects (%1) loading for '%2' failed from '%3', '%4'") << info << CEntityFlags::flagToString(entities) << infoReader->getInfoObjectsUrl().toQString() << infoReader->getStatusMessage(); + const CStatusMessage m = CLogMessage(this).error(u"Info objects (%1) loading for '%2' failed from '%3', '%4'") << info << CEntityFlags::flagToString(entities) << infoReader->getInfoObjectsUrl().toQString() << infoReader->getStatusMessage(); infoReader->setMarkedAsFailed(true); + emit this->databaseReaderMessages(m); return true; // carry on, regardless of situation } } diff --git a/src/blackgui/guiapplication.cpp b/src/blackgui/guiapplication.cpp index d5c3f61af..561f69a93 100644 --- a/src/blackgui/guiapplication.cpp +++ b/src/blackgui/guiapplication.cpp @@ -96,6 +96,9 @@ namespace BlackGui // notify when app goes down connect(qGuiApp, &QGuiApplication::lastWindowClosed, this, &CGuiApplication::gracefulShutdown); + // follow up on web data services + connect(this, &CApplication::webDataServicesStarted, this, &CGuiApplication::onWebDataServicesStarted); + if (!sGui) { CGuiApplication::registerMetadata(); @@ -109,6 +112,8 @@ namespace BlackGui connect(&m_styleSheetUtility, &CStyleSheetUtility::styleSheetsChanged, this, &CGuiApplication::onStyleSheetsChanged, Qt::QueuedConnection); connect(this, &CGuiApplication::startUpCompleted, this, &CGuiApplication::superviseWindowMinSizes, Qt::QueuedConnection); + + // splash screen connect(this->getSetupReader(), &CSetupReader::setupLoadingMessages, this, &CGuiApplication::displaySplashMessages, Qt::QueuedConnection); } } @@ -1112,6 +1117,14 @@ namespace BlackGui m_fontPointSize = font.pointSize(); } + void CGuiApplication::onWebDataServicesStarted(bool success) + { + if (success) + { + connect(this->getWebDataServices(), &CWebDataServices::databaseReaderMessages, this, &CGuiApplication::displaySplashMessages, Qt::QueuedConnection); + } + } + void CGuiApplication::superviseWindowMinSizes() { CGuiUtility::superviseMainWindowMinSizes(); diff --git a/src/blackgui/guiapplication.h b/src/blackgui/guiapplication.h index c09e9d4c9..9e91eb8e0 100644 --- a/src/blackgui/guiapplication.h +++ b/src/blackgui/guiapplication.h @@ -344,6 +344,9 @@ namespace BlackGui //! Set current font values void setCurrentFontValues(); + //! Web data services started + void onWebDataServicesStarted(bool success); + //! \copydoc BlackGui::CGuiUtility::superviseMainWindowMinSizes void superviseWindowMinSizes(); };