From 40bc75a98cd7388e21046cdd2d2aec46f1a729f7 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 26 Sep 2017 20:15:28 +0200 Subject: [PATCH] Ref T164, show (by LED) when consolidating data * added LED in info bar * signal in background updater and * connecting them --- src/blackcore/db/backgrounddataupdater.cpp | 2 ++ src/blackcore/db/backgrounddataupdater.h | 6 ++++ .../infobarwebreadersstatuscomponent.cpp | 28 +++++++++++++++++-- .../infobarwebreadersstatuscomponent.h | 16 +++++++++-- .../infobarwebreadersstatuscomponent.ui | 17 +++++++++-- .../infobarwebreadersstatussmallcomponent.cpp | 2 +- src/swiftdata/swiftdata.cpp | 2 ++ 7 files changed, 64 insertions(+), 9 deletions(-) diff --git a/src/blackcore/db/backgrounddataupdater.cpp b/src/blackcore/db/backgrounddataupdater.cpp index 8bbe2baec..aa9d51d7d 100644 --- a/src/blackcore/db/backgrounddataupdater.cpp +++ b/src/blackcore/db/backgrounddataupdater.cpp @@ -45,6 +45,7 @@ namespace BlackCore if (!this->doWorkCheck()) { return; } m_inWork = true; + emit this->consolidating(true); const int cycle = m_cycle; switch (cycle) { @@ -72,6 +73,7 @@ namespace BlackCore } ++m_cycle %= 5; m_inWork = false; + emit this->consolidating(false); } void CBackgroundDataUpdater::triggerInfoReads() diff --git a/src/blackcore/db/backgrounddataupdater.h b/src/blackcore/db/backgrounddataupdater.h index d0a1f0a0f..889071d1b 100644 --- a/src/blackcore/db/backgrounddataupdater.h +++ b/src/blackcore/db/backgrounddataupdater.h @@ -28,6 +28,8 @@ namespace BlackCore */ class BLACKCORE_EXPORT CBackgroundDataUpdater : public BlackMisc::CContinuousWorker { + Q_OBJECT + public: //! Log categories static const BlackMisc::CLogCategoryList &getLogCategories(); @@ -35,6 +37,10 @@ namespace BlackCore //! Constructor CBackgroundDataUpdater(QObject *owner); + signals: + //! Consolidation + void consolidating(bool started); + private: int m_cycle = 0; //!< cycle bool m_inWork = false; //!< indicates a running update diff --git a/src/blackgui/components/infobarwebreadersstatuscomponent.cpp b/src/blackgui/components/infobarwebreadersstatuscomponent.cpp index b098dc950..cbf20e711 100644 --- a/src/blackgui/components/infobarwebreadersstatuscomponent.cpp +++ b/src/blackgui/components/infobarwebreadersstatuscomponent.cpp @@ -57,11 +57,18 @@ namespace BlackGui m_timer.stop(); } + void CInfoBarWebReadersStatusBase::consolidationRunning(bool running) + { + if (!this->led_Consolidation) { return; } + this->led_Consolidation->setOn(running); + } + void CInfoBarWebReadersStatusBase::initLeds() { CLedWidget::LedShape shape = CLedWidget::Rounded; this->led_SwiftDb->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "DB online", "DB offline", 14); this->led_DataReady->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "all data ready", "data missing", 14); + if (this->led_Consolidation) { this->led_Consolidation->setValues(CLedWidget::Blue, CLedWidget::Black, shape, "consolidation running", "idle", 14); } this->led_IcaoAircraft->setValues(CLedWidget::Yellow, CLedWidget::Black, CLedWidget::Red, shape, "reading", "idle", "failed", 14); this->led_IcaoAirline->setValues(CLedWidget::Yellow, CLedWidget::Black, CLedWidget::Red, shape, "reading", "idle", "failed", 14); @@ -93,6 +100,14 @@ namespace BlackGui this->led_DataReady->setOn(allData); } + void CInfoBarWebReadersStatusBase::showConsolidationStatus(bool show) + { + if (this->led_Consolidation) + { + this->led_Consolidation->setVisible(show); + } + } + void CInfoBarWebReadersStatusBase::setLedReadStates(const QList &leds, CEntityFlags::ReadState readState) { for (CLedWidget *led : leds) @@ -146,10 +161,11 @@ namespace BlackGui sGui->getWebDataServices()->getCountriesCount() > 0; } - void CInfoBarWebReadersStatusBase::setLeds(CLedWidget *ledDb, CLedWidget *dataReady, CLedWidget *ledIcaoAircraft, CLedWidget *ledIcaoAirline, CLedWidget *ledCountries, CLedWidget *ledDistributors, CLedWidget *ledLiveries, CLedWidget *ledModels) + void CInfoBarWebReadersStatusBase::setLeds(CLedWidget *ledDb, CLedWidget *ledDataReady, CLedWidget *ledConsolidation, CLedWidget *ledIcaoAircraft, CLedWidget *ledIcaoAirline, CLedWidget *ledCountries, CLedWidget *ledDistributors, CLedWidget *ledLiveries, CLedWidget *ledModels) { this->led_SwiftDb = ledDb; - this->led_DataReady = dataReady; + this->led_DataReady = ledDataReady; + this->led_Consolidation = ledConsolidation; this->led_IcaoAircraft = ledIcaoAircraft; this->led_IcaoAirline = ledIcaoAirline; this->led_Countries = ledCountries; @@ -162,11 +178,17 @@ namespace BlackGui CInfoBarWebReadersStatusBase(parent), ui(new Ui::CInfoBarWebReadersStatusComponent) { ui->setupUi(this); - this->setLeds(ui->led_SwiftDb, ui->led_DataReady, ui->led_IcaoAircraft, ui->led_IcaoAirline, ui->led_Countries, ui->led_Distributors, ui->led_Liveries, ui->led_Models); + this->setLeds(ui->led_SwiftDb, ui->led_DataReady, ui->led_Consolidation, ui->led_IcaoAircraft, ui->led_IcaoAirline, ui->led_Countries, ui->led_Distributors, ui->led_Liveries, ui->led_Models); this->init(); } CInfoBarWebReadersStatusComponent::~CInfoBarWebReadersStatusComponent() { } + + void CInfoBarWebReadersStatusComponent::showConsolidationStatus(bool show) + { + ui->lbl_Consolidation->setVisible(show); + CInfoBarWebReadersStatusBase::showConsolidationStatus(show); + } } // namespace } // namespace diff --git a/src/blackgui/components/infobarwebreadersstatuscomponent.h b/src/blackgui/components/infobarwebreadersstatuscomponent.h index 45f9d1d46..933b78b63 100644 --- a/src/blackgui/components/infobarwebreadersstatuscomponent.h +++ b/src/blackgui/components/infobarwebreadersstatuscomponent.h @@ -39,13 +39,16 @@ namespace BlackGui //!Destructor virtual ~CInfoBarWebReadersStatusBase(); - //! Init the LEDs - void initLeds(); + //! Consolidation is running + virtual void consolidationRunning(bool running); protected: //! Constructor explicit CInfoBarWebReadersStatusBase(QWidget *parent = nullptr); + //! Init the LEDs + void initLeds(); + //! Init void init(); @@ -62,7 +65,7 @@ namespace BlackGui bool hasAllData() const; //! Initial setup of leds - void setLeds(BlackGui::CLedWidget *ledDb, BlackGui::CLedWidget *dataReady, + void setLeds(BlackGui::CLedWidget *ledDb, BlackGui::CLedWidget *ledDataReady, CLedWidget *ledConsolidation, BlackGui::CLedWidget *led_IcaoAircraft, BlackGui::CLedWidget *led_IcaoAirline, BlackGui::CLedWidget *led_Countries, BlackGui::CLedWidget *led_Distributors, BlackGui::CLedWidget *led_Liveries, BlackGui::CLedWidget *led_Models); @@ -75,10 +78,14 @@ namespace BlackGui //! Check server status void checkServerAndData(); + //! Show the consolidation status + virtual void showConsolidationStatus(bool show); + private: QTimer m_timer { this }; //!< check timer BlackGui::CLedWidget *led_SwiftDb = nullptr; BlackGui::CLedWidget *led_DataReady = nullptr; + BlackGui::CLedWidget *led_Consolidation = nullptr; BlackGui::CLedWidget *led_IcaoAircraft = nullptr; BlackGui::CLedWidget *led_IcaoAirline = nullptr; BlackGui::CLedWidget *led_Countries = nullptr; @@ -99,6 +106,9 @@ namespace BlackGui //!Destructor virtual ~CInfoBarWebReadersStatusComponent(); + //! Show the consolidation status + virtual void showConsolidationStatus(bool show) override; + private: QScopedPointer ui; }; diff --git a/src/blackgui/components/infobarwebreadersstatuscomponent.ui b/src/blackgui/components/infobarwebreadersstatuscomponent.ui index b676bba75..9969c8574 100644 --- a/src/blackgui/components/infobarwebreadersstatuscomponent.ui +++ b/src/blackgui/components/infobarwebreadersstatuscomponent.ui @@ -6,12 +6,12 @@ 0 0 - 632 + 691 22 - Frame + Web reader status bar QFrame::StyledPanel @@ -58,6 +58,19 @@ + + + + consolidation + + + cons. + + + + + + diff --git a/src/blackgui/components/infobarwebreadersstatussmallcomponent.cpp b/src/blackgui/components/infobarwebreadersstatussmallcomponent.cpp index c4360fb4c..c2ad538f6 100644 --- a/src/blackgui/components/infobarwebreadersstatussmallcomponent.cpp +++ b/src/blackgui/components/infobarwebreadersstatussmallcomponent.cpp @@ -19,7 +19,7 @@ namespace BlackGui ui(new Ui::CInfoBarWebReadersStatusSmallComponent) { ui->setupUi(this); - this->setLeds(ui->led_SwiftDb, ui->led_DataReady, ui->led_IcaoAircraft, ui->led_IcaoAirline, ui->led_Countries, ui->led_Distributors, ui->led_Liveries, ui->led_Models); + this->setLeds(ui->led_SwiftDb, ui->led_DataReady, nullptr, ui->led_IcaoAircraft, ui->led_IcaoAirline, ui->led_Countries, ui->led_Distributors, ui->led_Liveries, ui->led_Models); this->init(); } diff --git a/src/swiftdata/swiftdata.cpp b/src/swiftdata/swiftdata.cpp index 3d73d7f2a..5f7940c52 100644 --- a/src/swiftdata/swiftdata.cpp +++ b/src/swiftdata/swiftdata.cpp @@ -161,6 +161,7 @@ void CSwiftData::consolidationSettingChanged() if (m_updater) { ui->comp_MainInfoArea->getDataSettingsComponent()->setBackgroundUpdater(nullptr); + disconnect(m_updater.data()); m_updater->abandonAndWait(); m_updater = nullptr; } @@ -170,6 +171,7 @@ void CSwiftData::consolidationSettingChanged() if (!m_updater) { m_updater = m_updater.create(this); + connect(m_updater.data(), &CBackgroundDataUpdater::consolidating, ui->comp_InfoBar, &CInfoBarWebReadersStatusComponent::consolidationRunning, Qt::QueuedConnection); m_updater->start(QThread::LowestPriority); ui->comp_MainInfoArea->getDataSettingsComponent()->setBackgroundUpdater(m_updater.data()); }