Load overview component fixes and formatting

* this->m_XX => m_XX
* private slots => private
* GUI updates only via digest signal, and slower (was called too often)
* flag to avoid gui updates when another gui update is still in progress (possible because of canConnect/processEvent situation)
This commit is contained in:
Klaus Basan
2017-08-14 22:32:23 +02:00
committed by Mathew Sutcliffe
parent a993ccd1c1
commit ca651877cd
2 changed files with 65 additions and 53 deletions

View File

@@ -40,30 +40,30 @@ namespace BlackGui
ui->lbl_SharedUrls->setTextInteractionFlags(Qt::TextBrowserInteraction);
ui->lbl_SharedUrls->setOpenExternalLinks(true);
connect(ui->tb_DbReloadAircraft, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshDbPressed);
connect(ui->tb_DbReloadAirlines, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshDbPressed);
connect(ui->tb_DbReloadAirports, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshDbPressed);
connect(ui->tb_DbReloadCountries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshDbPressed);
connect(ui->tb_DbReloadLiveries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshDbPressed);
connect(ui->tb_DbReloadModels, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshDbPressed);
connect(ui->tb_DbReloadDistributors, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshDbPressed);
connect(ui->tb_DbReloadAircraft, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshDbPressed);
connect(ui->tb_DbReloadAirlines, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshDbPressed);
connect(ui->tb_DbReloadAirports, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshDbPressed);
connect(ui->tb_DbReloadCountries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshDbPressed);
connect(ui->tb_DbReloadLiveries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshDbPressed);
connect(ui->tb_DbReloadModels, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshDbPressed);
connect(ui->tb_DbReloadDistributors, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshDbPressed);
connect(ui->tb_SharedReloadAircraft, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshSharedPressed);
connect(ui->tb_SharedReloadAirlines, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshSharedPressed);
connect(ui->tb_SharedReloadAirports, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshSharedPressed);
connect(ui->tb_SharedReloadCountries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshSharedPressed);
connect(ui->tb_SharedReloadLiveries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshSharedPressed);
connect(ui->tb_SharedReloadModels, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshSharedPressed);
connect(ui->tb_SharedReloadDistributors, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_refreshSharedPressed);
connect(ui->tb_SharedReloadAircraft, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshSharedPressed);
connect(ui->tb_SharedReloadAirlines, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshSharedPressed);
connect(ui->tb_SharedReloadAirports, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshSharedPressed);
connect(ui->tb_SharedReloadCountries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshSharedPressed);
connect(ui->tb_SharedReloadLiveries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshSharedPressed);
connect(ui->tb_SharedReloadModels, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshSharedPressed);
connect(ui->tb_SharedReloadDistributors, &QToolButton::pressed, this, &CDbLoadOverviewComponent::refreshSharedPressed);
connect(ui->pb_LoadAllFromDB, &QPushButton::pressed, this, &CDbLoadOverviewComponent::loadAllFromDb);
connect(ui->pb_LoadAllFromShared, &QPushButton::pressed, this, &CDbLoadOverviewComponent::loadAllFromShared);
connect(this, &CDbLoadOverviewComponent::ps_triggerDigestGuiUpdate, this, &CDbLoadOverviewComponent::ps_setValues);
connect(this, &CDbLoadOverviewComponent::ps_triggerDigestGuiUpdate, this, &CDbLoadOverviewComponent::setGuiValues);
if (sGui->hasWebDataServices())
{
connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbLoadOverviewComponent::ps_dataLoaded);
QTimer::singleShot(10 * 1000, this, &CDbLoadOverviewComponent::ps_loadInfoObjects);
connect(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbLoadOverviewComponent::dataLoaded);
QTimer::singleShot(10 * 1000, this, &CDbLoadOverviewComponent::loadInfoObjects);
}
}
@@ -72,7 +72,7 @@ namespace BlackGui
void CDbLoadOverviewComponent::display()
{
this->ps_setValues();
m_dsTriggerGuiUpdate.inputSignal();
}
void CDbLoadOverviewComponent::showVisibleDbRefreshButtons(bool visible)
@@ -127,10 +127,12 @@ namespace BlackGui
this->triggerLoadingFromSharedFiles(CEntityFlags::AllDbEntitiesNoInfoObjects);
}
void CDbLoadOverviewComponent::ps_setValues()
void CDbLoadOverviewComponent::setGuiValues()
{
if (!sGui) { return; }
if (!sGui->hasWebDataServices()) { return; }
if (m_setValuesInProgress) { return; }
m_setValuesInProgress = true; // avoid processEvent (canConnect) calling this again before done
ui->le_AircraftIcaoCacheCount->setText(cacheCountForEntity(CEntityFlags::AircraftIcaoEntity));
ui->le_AirlinesIcaoCacheCount->setText(cacheCountForEntity(CEntityFlags::AirlineIcaoEntity));
@@ -184,7 +186,7 @@ namespace BlackGui
static const QString imgOk(":/diagona/icons/diagona/icons/tick.png");
static const QString imgFailed(":/diagona/icons/diagona/icons/cross-script.png");
const QString dbUrlHtml("<img src=\"%1\">&nbsp;&nbsp;<a href=\"%2\">%3</a>");
QString url = sGui->getGlobalSetup().getDbHomePageUrl().getFullUrl();
const QString url = sGui->getGlobalSetup().getDbHomePageUrl().getFullUrl();
bool canConnect = CNetworkUtils::canConnect(sGui->getGlobalSetup().getDbHomePageUrl());
ui->lbl_DatabaseUrl->setText(dbUrlHtml.arg(canConnect ? imgOk : imgFailed, url, url));
ui->lbl_DatabaseUrl->setToolTip(url);
@@ -198,16 +200,25 @@ namespace BlackGui
QString allRowsHtml;
for (const CUrl &sharedUrl : sharedUrls)
{
if (!sGui || sGui->isShuttingDown())
{
// shutdown during connect test
m_setValuesInProgress = false;
return;
}
canConnect = CNetworkUtils::canConnect(sharedUrl);
allRowsHtml += rowHtml.arg(canConnect ? imgOk : imgFailed, urlLinkHtml.arg(sharedUrl.getFullUrl(), sharedUrl.getHost()));
if (!sGui || sGui->isShuttingDown()) { return; } // shutdown during connect test
}
ui->lbl_SharedUrls->setText(tableHtml.arg(allRowsHtml.trimmed()));
ui->lbl_SharedUrls->setToolTip(sGui->getWebDataServices()->getDbReaderCurrentSharedDbDataUrl().toQString());
ui->lbl_SharedUrls->setMinimumHeight(10 + (18 * sharedUrls.size()));
const QString currentlyUsedSharedUrl = sGui->getWebDataServices()->getDbReaderCurrentSharedDbDataUrl().toQString();
ui->lbl_SharedUrls->setToolTip(
currentlyUsedSharedUrl.isEmpty() ? "No shared URL" : "currently used: " + currentlyUsedSharedUrl
);
// Indicator
this->hideLoading();
m_setValuesInProgress = false;
}
bool CDbLoadOverviewComponent::isInitialized() const
@@ -263,9 +274,9 @@ namespace BlackGui
sGui->getWebDataServices()->admitDbCaches(CEntityFlags::AllDbEntities);
}
void CDbLoadOverviewComponent::ps_refreshDbPressed()
void CDbLoadOverviewComponent::refreshDbPressed()
{
if (this->m_loadInProgress) { return; }
if (m_loadInProgress) { return; }
const QObject *sender = QObject::sender();
const CEntityFlags::Entity entity = CEntityFlags::singleEntityByName(sender->objectName());
this->triggerLoadingFromDb(entity);
@@ -273,12 +284,13 @@ namespace BlackGui
void CDbLoadOverviewComponent::triggerLoadingFromDb(CEntityFlags::Entity entities)
{
if (this->m_loadInProgress) { return; }
Q_ASSERT_X(sGui, Q_FUNC_INFO, "Missing sGui");
if (m_loadInProgress) { return; }
// DB entities
const CEntityFlags::Entity triggeredEntities = sGui->getWebDataServices()->triggerLoadingDirectlyFromDb(entities);
if (triggeredEntities == CEntityFlags::NoEntity) { return; }
this->m_loadInProgress = true;
m_loadInProgress = true;
this->showLoading();
// shared files ts and DB info objects
@@ -286,9 +298,9 @@ namespace BlackGui
sGui->getWebDataServices()->triggerReadOfDbInfoObjects();
}
void CDbLoadOverviewComponent::ps_refreshSharedPressed()
void CDbLoadOverviewComponent::refreshSharedPressed()
{
if (this->m_loadInProgress) { return; }
if (m_loadInProgress) { return; }
const QObject *sender = QObject::sender();
const CEntityFlags::Entity entity = CEntityFlags::singleEntityByName(sender->objectName());
this->triggerLoadingFromSharedFiles(entity);
@@ -296,30 +308,30 @@ namespace BlackGui
void CDbLoadOverviewComponent::triggerLoadingFromSharedFiles(CEntityFlags::Entity entities)
{
if (this->m_loadInProgress) { return; }
if (m_loadInProgress) { return; }
// DB entities
const CEntityFlags::Entity triggeredEntities = sGui->getWebDataServices()->triggerLoadingDirectlyFromSharedFiles(entities, true);
if (triggeredEntities == CEntityFlags::NoEntity) { return; }
this->m_loadInProgress = true;
m_loadInProgress = true;
this->showLoading();
// shared files ts
sGui->getWebDataServices()->triggerReadOfSharedInfoObjects();
}
void CDbLoadOverviewComponent::ps_dataLoaded(CEntityFlags::Entity entities, CEntityFlags::ReadState state, int number)
void CDbLoadOverviewComponent::dataLoaded(CEntityFlags::Entity entities, CEntityFlags::ReadState state, int number)
{
Q_UNUSED(number);
if (!CEntityFlags::isFinishedReadState(state)) return;
if (!entities.testFlag(CEntityFlags::SharedInfoObjectEntity) && entities.testFlag(CEntityFlags::DbInfoObjectEntity) && !CEntityFlags::anySwiftDbEntity(entities)) { return; }
this->m_loadInProgress = false;
emit this->ps_triggerDigestGuiUpdate();
m_loadInProgress = false;
m_dsTriggerGuiUpdate.inputSignal();
}
void CDbLoadOverviewComponent::ps_loadInfoObjects()
void CDbLoadOverviewComponent::loadInfoObjects()
{
if (this->m_loadInProgress) { return; }
if (m_loadInProgress) { return; }
if (!sGui || !sGui->hasWebDataServices()) { return; }
bool direct = false;
@@ -343,7 +355,7 @@ namespace BlackGui
if (direct)
{
this->m_dsTriggerGuiUpdate.inputSignal();
m_dsTriggerGuiUpdate.inputSignal();
}
}
} // ns

View File

@@ -68,8 +68,9 @@ namespace BlackGui
private:
QScopedPointer<Ui::CDbLoadOverviewComponent> ui;
BlackMisc::CDigestSignal m_dsTriggerGuiUpdate { this, &CDbLoadOverviewComponent::ps_triggerDigestGuiUpdate, &CDbLoadOverviewComponent::ps_setValues, 750, 4 };
BlackMisc::CDigestSignal m_dsTriggerGuiUpdate { this, &CDbLoadOverviewComponent::ps_triggerDigestGuiUpdate, &CDbLoadOverviewComponent::setGuiValues, 2500, 5 };
bool m_loadInProgress = false; //!< data loading in progress
bool m_setValuesInProgress = false; //!< setting values in progress, needed because of CNetworkUtils::canConnect check (processing events)
//! Trigger loading from DB
void triggerLoadingFromDb(BlackMisc::Network::CEntityFlags::Entity entities);
@@ -80,6 +81,21 @@ namespace BlackGui
//! Values at least set once
bool isInitialized() const;
//! Refresh directly from DB
void refreshDbPressed();
//! Refresh directly from shared files
void refreshSharedPressed();
//! Init the value panel
void setGuiValues();
//! Data have been loaded
void dataLoaded(BlackMisc::Network::CEntityFlags::Entity entities, BlackMisc::Network::CEntityFlags::ReadState state, int number);
//! Load info objects if not already loaded
void loadInfoObjects();
//! Timestamp
static QString formattedTimestamp(const QDateTime &dateTime);
@@ -103,22 +119,6 @@ namespace BlackGui
//! Admit caches
static void admitCaches();
private slots:
//! Refresh directly from DB
void ps_refreshDbPressed();
//! Refresh directly from shared files
void ps_refreshSharedPressed();
//! Init the value panel
void ps_setValues();
//! Data have been loaded
void ps_dataLoaded(BlackMisc::Network::CEntityFlags::Entity entities, BlackMisc::Network::CEntityFlags::ReadState state, int number);
//! Load info objects if not already loaded
void ps_loadInfoObjects();
};
} // ns
} // ns