From fb469472525528f4159c22a6e7fb3d52d9b8eccb Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 7 Feb 2019 03:17:10 +0100 Subject: [PATCH] Ref T529, own models UI component message sorting * if errors sort by severity * timeout if there is no error * check connects --- .../components/dbownmodelscomponent.cpp | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/src/blackgui/components/dbownmodelscomponent.cpp b/src/blackgui/components/dbownmodelscomponent.cpp index 023b021c0..21caf9d46 100644 --- a/src/blackgui/components/dbownmodelscomponent.cpp +++ b/src/blackgui/components/dbownmodelscomponent.cpp @@ -54,13 +54,20 @@ namespace BlackGui ui->tvp_OwnAircraftModels->setCustomMenu(new CLoadModelsMenu(this)); ui->tvp_OwnAircraftModels->setSimulatorForLoading(ui->comp_SimulatorSelector->getValue()); - connect(ui->tvp_OwnAircraftModels, &CAircraftModelView::requestUpdate, this, &CDbOwnModelsComponent::requestOwnModelsUpdate); - connect(ui->tvp_OwnAircraftModels, &CAircraftModelView::jsonLoadCompleted, this, &CDbOwnModelsComponent::onViewDiskLoadingFinished, Qt::QueuedConnection); - connect(ui->comp_SimulatorSelector, &CSimulatorSelector::changed, this, &CDbOwnModelsComponent::onSimulatorSelectorChanged); - connect(&CMultiAircraftModelLoaderProvider::multiModelLoaderInstance(), &CMultiAircraftModelLoaderProvider::loadingFinished, this, &CDbOwnModelsComponent::onModelLoaderLoadingFinished, Qt::QueuedConnection); - connect(&CMultiAircraftModelLoaderProvider::multiModelLoaderInstance(), &CMultiAircraftModelLoaderProvider::diskLoadingStarted, this, &CDbOwnModelsComponent::onModelLoaderDiskLoadingStarted, Qt::QueuedConnection); - connect(&CMultiAircraftModelLoaderProvider::multiModelLoaderInstance(), &CMultiAircraftModelLoaderProvider::loadingProgress, this, &CDbOwnModelsComponent::onModelLoadingProgress, Qt::QueuedConnection); - connect(&CMultiAircraftModelLoaderProvider::multiModelLoaderInstance(), &CMultiAircraftModelLoaderProvider::cacheChanged, this, &CDbOwnModelsComponent::onCacheChanged, Qt::QueuedConnection); + bool c = connect(ui->tvp_OwnAircraftModels, &CAircraftModelView::requestUpdate, this, &CDbOwnModelsComponent::requestOwnModelsUpdate); + Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed"); + c = connect(ui->tvp_OwnAircraftModels, &CAircraftModelView::jsonLoadCompleted, this, &CDbOwnModelsComponent::onViewDiskLoadingFinished, Qt::QueuedConnection); + Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed"); + c = connect(ui->comp_SimulatorSelector, &CSimulatorSelector::changed, this, &CDbOwnModelsComponent::onSimulatorSelectorChanged); + Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed"); + c = connect(&CMultiAircraftModelLoaderProvider::multiModelLoaderInstance(), &CMultiAircraftModelLoaderProvider::loadingFinished, this, &CDbOwnModelsComponent::onModelLoaderLoadingFinished, Qt::QueuedConnection); + Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed"); + c = connect(&CMultiAircraftModelLoaderProvider::multiModelLoaderInstance(), &CMultiAircraftModelLoaderProvider::diskLoadingStarted, this, &CDbOwnModelsComponent::onModelLoaderDiskLoadingStarted, Qt::QueuedConnection); + Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed"); + c = connect(&CMultiAircraftModelLoaderProvider::multiModelLoaderInstance(), &CMultiAircraftModelLoaderProvider::loadingProgress, this, &CDbOwnModelsComponent::onModelLoadingProgress, Qt::QueuedConnection); + Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed"); + c = connect(&CMultiAircraftModelLoaderProvider::multiModelLoaderInstance(), &CMultiAircraftModelLoaderProvider::cacheChanged, this, &CDbOwnModelsComponent::onCacheChanged, Qt::QueuedConnection); + Q_ASSERT_X(c, Q_FUNC_INFO, "Connect failed"); // Last selection isPinned -> no sync needed ui->comp_SimulatorSelector->setRememberSelectionAndSetToLastSelection(); @@ -612,15 +619,16 @@ namespace BlackGui void CDbOwnModelsComponent::onModelLoadingProgress(const CSimulatorInfo &simulator, const QString &message, int progress) { - CStatusMessage loadingMsg = CStatusMessage(this).info(u"%1 loading: %2") << simulator.toQString(true) << message; + const CStatusMessage loadingMsg = CStatusMessage(this).info(u"%1 loading: %2") << simulator.toQString(true) << message; this->showOverlayHTMLMessage(loadingMsg, 5000); + ui->tvp_OwnAircraftModels->showLoadIndicatorWithTimeout(5000); // trigger new load indicator Q_UNUSED(progress); } void CDbOwnModelsComponent::onModelLoaderLoadingFinished(const CStatusMessageList &statusMessages, const CSimulatorInfo &simulator, IAircraftModelLoader::LoadFinishedInfo info) { Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "Expect single simulator"); - if (statusMessages.isSuccess() && m_modelLoader) + if (IAircraftModelLoader::isLoadedInfo(info) && m_modelLoader) { const CAircraftModelList models(m_modelLoader->getCachedModels(simulator)); const int modelsLoaded = models.size(); @@ -645,16 +653,28 @@ namespace BlackGui // signal emit this->successfullyLoadedModels(simulator, modelsLoaded); } + else if (info == IAircraftModelLoader::LoadingSkipped) + { + CLogMessage(this).error(u"Loading of models skipped, simulator '%1'") << simulator.toQString(); + } else { ui->tvp_OwnAircraftModels->clear(); CLogMessage(this).error(u"Loading of models failed, simulator '%1'") << simulator.toQString(); } - if (statusMessages.hasWarningOrErrorMessages()) + // with errors we make sure errors are on top + int timeoutMs = -1; + if (statusMessages.hasErrorMessages()) { - this->showOverlayMessages(statusMessages); + this->setOverlayMessagesSorting(CStatusMessage::IndexSeverityAsIcon, Qt::DescendingOrder); } + else if (!statusMessages.hasWarningOrErrorMessages()) + { + // no issues + timeoutMs = 5000; + } + this->showOverlayMessages(statusMessages, false, timeoutMs); // cache loads may occur in background, do not adjust UI settings if (info == IAircraftModelLoader::CacheLoaded) { return; }