mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 09:15:34 +08:00
refs #787, support for shared files in load component
Display component in swift pilot client (under settings)
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
|
||||
#include "blackcore/webdataservices.h"
|
||||
#include "blackgui/guiapplication.h"
|
||||
#include "blackmisc/network/networkutils.h"
|
||||
|
||||
using namespace BlackGui;
|
||||
using namespace BlackCore;
|
||||
@@ -39,13 +40,22 @@ namespace BlackGui
|
||||
ui->lbl_SharedUrls->setTextInteractionFlags(Qt::TextBrowserInteraction);
|
||||
ui->lbl_SharedUrls->setOpenExternalLinks(true);
|
||||
|
||||
connect(ui->tb_ReloadAircraft, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_reloadPressed);
|
||||
connect(ui->tb_ReloadAirlines, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_reloadPressed);
|
||||
connect(ui->tb_ReloadAirports, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_reloadPressed);
|
||||
connect(ui->tb_ReloadCountries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_reloadPressed);
|
||||
connect(ui->tb_ReloadLiveries, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_reloadPressed);
|
||||
connect(ui->tb_ReloadModels, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_reloadPressed);
|
||||
connect(ui->tb_ReloadDistributors, &QToolButton::pressed, this, &CDbLoadOverviewComponent::ps_reloadPressed);
|
||||
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_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(sGui->getWebDataServices(), &CWebDataServices::dataRead, this, &CDbLoadOverviewComponent::ps_dataLoaded);
|
||||
}
|
||||
|
||||
@@ -57,6 +67,30 @@ namespace BlackGui
|
||||
this->ps_setValues();
|
||||
}
|
||||
|
||||
void CDbLoadOverviewComponent::setVisibleDbRefreshButtons(bool visible)
|
||||
{
|
||||
ui->lbl_DbRefresh->setVisible(visible);
|
||||
ui->tb_DbReloadAircraft->setVisible(visible);
|
||||
ui->tb_DbReloadAirlines->setVisible(visible);
|
||||
ui->tb_DbReloadAirports->setVisible(visible);
|
||||
ui->tb_DbReloadCountries->setVisible(visible);
|
||||
ui->tb_DbReloadLiveries->setVisible(visible);
|
||||
ui->tb_DbReloadModels->setVisible(visible);
|
||||
ui->tb_DbReloadDistributors->setVisible(visible);
|
||||
}
|
||||
|
||||
void CDbLoadOverviewComponent::setVisibleSharedRefreshButtons(bool visible)
|
||||
{
|
||||
ui->lbl_SharedRefresh->setVisible(visible);
|
||||
ui->tb_SharedReloadAircraft->setVisible(visible);
|
||||
ui->tb_SharedReloadAirlines->setVisible(visible);
|
||||
ui->tb_SharedReloadAirports->setVisible(visible);
|
||||
ui->tb_SharedReloadCountries->setVisible(visible);
|
||||
ui->tb_SharedReloadLiveries->setVisible(visible);
|
||||
ui->tb_SharedReloadModels->setVisible(visible);
|
||||
ui->tb_SharedReloadDistributors->setVisible(visible);
|
||||
}
|
||||
|
||||
void CDbLoadOverviewComponent::ps_setValues()
|
||||
{
|
||||
if (!sGui) { return; }
|
||||
@@ -103,23 +137,29 @@ namespace BlackGui
|
||||
ui->le_DistributorsSharedFileTs->setText(sharedFileTimestampForEntity(CEntityFlags::DistributorEntity));
|
||||
|
||||
// DB URL
|
||||
const QString dbUrlHtml("<a href=\"%1\">%2</a>");
|
||||
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\"> <a href=\"%2\">%3</a>");
|
||||
QString url = sGui->getGlobalSetup().getDbHomePageUrl().getFullUrl();
|
||||
ui->lbl_DatabaseUrl->setText(dbUrlHtml.arg(url, url));
|
||||
bool canConnect = CNetworkUtils::canConnect(sGui->getGlobalSetup().getDbHomePageUrl());
|
||||
ui->lbl_DatabaseUrl->setText(dbUrlHtml.arg(canConnect ? imgOk : imgFailed, url, url));
|
||||
ui->lbl_DatabaseUrl->setToolTip(url);
|
||||
|
||||
// Shared URLs
|
||||
const CUrlList sharedUrls(sGui->getGlobalSetup().getSwiftSharedUrls());
|
||||
const QString sharedUrlHtml("<a href=\"%1\">%2</a>");
|
||||
const QString tableHtml("<table>%1</table>");
|
||||
const QString rowHtml("<tr><td><img src=\"%1\"> </td><td>%2</td></tr>");
|
||||
const QString urlLinkHtml("<a href=\"%1\">%2</a>");
|
||||
|
||||
QString sharedUrlsHtml;
|
||||
QString allRowsHtml;
|
||||
for (const CUrl &sharedUrl : sharedUrls)
|
||||
{
|
||||
sharedUrlsHtml += sharedUrlHtml.arg(sharedUrl.getFullUrl(), sharedUrl.getHost());
|
||||
sharedUrlsHtml += " ";
|
||||
canConnect = CNetworkUtils::canConnect(sharedUrl);
|
||||
allRowsHtml += rowHtml.arg(canConnect ? imgOk : imgFailed, urlLinkHtml.arg(sharedUrl.getFullUrl(), sharedUrl.getHost()));
|
||||
}
|
||||
ui->lbl_SharedUrls->setText(sharedUrlsHtml.trimmed());
|
||||
ui->lbl_SharedUrls->setToolTip(sharedUrls.toQString());
|
||||
ui->lbl_SharedUrls->setText(tableHtml.arg(allRowsHtml.trimmed()));
|
||||
ui->lbl_SharedUrls->setToolTip(sGui->getWebDataServices()->getDbReaderCurrentSharedDbDataUrl().toQString());
|
||||
ui->lbl_SharedUrls->setMinimumHeight(10 + (18 * sharedUrls.size()));
|
||||
|
||||
// Indicator
|
||||
if (this->m_loadIndicator) { this->m_loadIndicator->stopAnimation(); }
|
||||
@@ -182,20 +222,37 @@ namespace BlackGui
|
||||
sGui->getWebDataServices()->admitDbCaches(CEntityFlags::AllDbEntities);
|
||||
}
|
||||
|
||||
void CDbLoadOverviewComponent::ps_reloadPressed()
|
||||
void CDbLoadOverviewComponent::ps_refreshDbPressed()
|
||||
{
|
||||
if (this->m_reloading) { return; }
|
||||
QObject *sender = QObject::sender();
|
||||
CEntityFlags::Entity entity = CEntityFlags::singleEntityByName(sender->objectName());
|
||||
const QObject *sender = QObject::sender();
|
||||
const CEntityFlags::Entity entity = CEntityFlags::singleEntityByName(sender->objectName());
|
||||
|
||||
// DB entities
|
||||
CEntityFlags::Entity triggeredEntity = sGui->getWebDataServices()->triggerReloadFromDb(entity);
|
||||
const CEntityFlags::Entity triggeredEntity = sGui->getWebDataServices()->triggerLoadingDirectlyFromDb(entity);
|
||||
if (triggeredEntity == CEntityFlags::NoEntity) { return; }
|
||||
this->m_reloading = true;
|
||||
this->showLoading();
|
||||
|
||||
// shared files ts
|
||||
sGui->getWebDataServices()->triggerLoadingOfSharedFilesHeaders(entity);
|
||||
sGui->getWebDataServices()->triggerReadOfInfoObjects();
|
||||
}
|
||||
|
||||
void CDbLoadOverviewComponent::ps_refreshSharedPressed()
|
||||
{
|
||||
if (this->m_reloading) { return; }
|
||||
const QObject *sender = QObject::sender();
|
||||
const CEntityFlags::Entity entity = CEntityFlags::singleEntityByName(sender->objectName());
|
||||
|
||||
// DB entities
|
||||
const CEntityFlags::Entity triggeredEntity = sGui->getWebDataServices()->triggerLoadingDirectlyFromSharedFiles(entity, true);
|
||||
if (triggeredEntity == CEntityFlags::NoEntity) { return; }
|
||||
this->m_reloading = true;
|
||||
this->showLoading();
|
||||
|
||||
// shared files ts
|
||||
sGui->getWebDataServices()->triggerReadOfInfoObjects();
|
||||
}
|
||||
|
||||
void CDbLoadOverviewComponent::ps_dataLoaded(CEntityFlags::Entity entity, CEntityFlags::ReadState state, int number)
|
||||
|
||||
@@ -40,10 +40,22 @@ namespace BlackGui
|
||||
//! Initialize
|
||||
void display();
|
||||
|
||||
//! Visible DB refresh buttons
|
||||
void setVisibleDbRefreshButtons(bool visible);
|
||||
|
||||
//! Visible shared refresh buttons
|
||||
void setVisibleSharedRefreshButtons(bool visible);
|
||||
|
||||
signals:
|
||||
//! Trigger GUI update
|
||||
//! \private
|
||||
void ps_triggerDigestGuiUpdate();
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::CDbLoadOverviewComponent> ui;
|
||||
BlackGui::CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed
|
||||
bool m_reloading = false;
|
||||
BlackMisc::CDigestSignal m_dsTriggerGuiUpdate { this, &CDbLoadOverviewComponent::ps_triggerDigestGuiUpdate, &CDbLoadOverviewComponent::ps_setValues, 750, 4 };
|
||||
|
||||
//! Show loading
|
||||
void showLoading();
|
||||
@@ -73,8 +85,11 @@ namespace BlackGui
|
||||
static void admitCaches();
|
||||
|
||||
private slots:
|
||||
//! Reload
|
||||
void ps_reloadPressed();
|
||||
//! Refresh directly from DB
|
||||
void ps_refreshDbPressed();
|
||||
|
||||
//! Refresh directly from DB
|
||||
void ps_refreshSharedPressed();
|
||||
|
||||
//! Init the value panel
|
||||
void ps_setValues();
|
||||
|
||||
@@ -55,6 +55,7 @@ namespace BlackGui
|
||||
connect(ui->pb_Servers, &QPushButton::released, this, &CSettingsComponent::ps_overviewButtonClicked);
|
||||
connect(ui->pb_Simulator, &QPushButton::released, this, &CSettingsComponent::ps_overviewButtonClicked);
|
||||
connect(ui->pb_SimulatorBasics, &QPushButton::released, this, &CSettingsComponent::ps_overviewButtonClicked);
|
||||
connect(ui->pb_DataLoadAndCaches, &QPushButton::released, this, &CSettingsComponent::ps_overviewButtonClicked);
|
||||
connect(ui->pb_SimulatorMessages, &QPushButton::released, this, &CSettingsComponent::ps_overviewButtonClicked);
|
||||
}
|
||||
|
||||
@@ -87,6 +88,7 @@ namespace BlackGui
|
||||
if (sender == ui->pb_Servers) { this->setCurrentIndex(SettingTabServers); return; }
|
||||
if (sender == ui->pb_Simulator) { this->setCurrentIndex(SettingTabSimulator); return; }
|
||||
if (sender == ui->pb_SimulatorBasics) { this->setCurrentIndex(SettingTabSimulatorBasics); return; }
|
||||
if (sender == ui->pb_DataLoadAndCaches) { this->setCurrentIndex(SettingTabDataAndCaches); return; }
|
||||
if (sender == ui->pb_SimulatorMessages) { this->setCurrentIndex(SettingTabSimulatorMessages); return; }
|
||||
this->setCurrentIndex(SettingTabOverview);
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ namespace BlackGui
|
||||
SettingTabSimulatorMessages,
|
||||
SettingTabGui,
|
||||
SettingTabHotkeys,
|
||||
SettingTabDataAndCaches,
|
||||
SettingTabAdvanced
|
||||
};
|
||||
|
||||
|
||||
@@ -83,13 +83,20 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<item row="3" column="1">
|
||||
<widget class="QPushButton" name="pb_Advanced">
|
||||
<property name="text">
|
||||
<string>Advanced</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="pb_DataLoadAndCaches">
|
||||
<property name="text">
|
||||
<string>Data load and caches</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tb_SettingsTrafficNetworkServers">
|
||||
@@ -406,7 +413,7 @@
|
||||
<attribute name="title">
|
||||
<string>Hotkeys</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="vl_SettingsMisc">
|
||||
<layout class="QVBoxLayout" name="vl_SettingsHotkeys">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
@@ -430,21 +437,102 @@
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tb_DataLoad">
|
||||
<attribute name="title">
|
||||
<string>Data and caches</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="vl_DataLoad">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QScrollArea" name="sa_DataLoad">
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="wi_DataLoadOverview">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>479</width>
|
||||
<height>198</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="vl_DataLoadOverview">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="BlackGui::Components::CDbLoadOverviewComponent" name="comp_DataLoadOverview"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="vs_DataLoad">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tb_SettingsAdvanced">
|
||||
<attribute name="title">
|
||||
<string>Advanced</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<layout class="QVBoxLayout" name="vl_SettingsAdvanced">
|
||||
<property name="spacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>1</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="BlackGui::Components::CSettingsAdvancedComponent" name="comp_SettingsAdvancedComponent">
|
||||
<property name="frameShape">
|
||||
@@ -459,6 +547,12 @@
|
||||
</widget>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>BlackGui::Components::CDbLoadOverviewComponent</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>blackgui/components/dbloadoverviewcomponent.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::Components::CSettingsSimulatorBasicsComponent</class>
|
||||
<extends>QFrame</extends>
|
||||
|
||||
Reference in New Issue
Block a user