Ref T164, show (by LED) when consolidating data

* added LED in info bar
* signal in background updater and
* connecting them
This commit is contained in:
Klaus Basan
2017-09-26 20:15:28 +02:00
parent 3cf97b3f37
commit 40bc75a98c
7 changed files with 64 additions and 9 deletions

View File

@@ -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()

View File

@@ -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

View File

@@ -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<CLedWidget *> &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

View File

@@ -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::CInfoBarWebReadersStatusComponent> ui;
};

View File

@@ -6,12 +6,12 @@
<rect>
<x>0</x>
<y>0</y>
<width>632</width>
<width>691</width>
<height>22</height>
</rect>
</property>
<property name="windowTitle">
<string>Frame</string>
<string>Web reader status bar</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
@@ -58,6 +58,19 @@
<item>
<widget class="BlackGui::CLedWidget" name="led_DataReady" native="true"/>
</item>
<item>
<widget class="QLabel" name="lbl_Consolidation">
<property name="toolTip">
<string>consolidation</string>
</property>
<property name="text">
<string>cons.</string>
</property>
</widget>
</item>
<item>
<widget class="BlackGui::CLedWidget" name="led_Consolidation" native="true"/>
</item>
<item>
<spacer name="hs_Spacer">
<property name="orientation">

View File

@@ -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();
}

View File

@@ -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());
}