mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-03 16:25:54 +08:00
refs #325, reduced loading in aircraft component
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "aircraftcomponent.h"
|
#include "aircraftcomponent.h"
|
||||||
|
#include "dockwidgetinfoareacomponent.h"
|
||||||
#include "ui_aircraftcomponent.h"
|
#include "ui_aircraftcomponent.h"
|
||||||
|
|
||||||
namespace BlackGui
|
namespace BlackGui
|
||||||
@@ -30,6 +31,18 @@ namespace BlackGui
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CAircraftComponent::countAircrafts() const
|
||||||
|
{
|
||||||
|
Q_ASSERT(this->ui->tvp_AircraftsInRange);
|
||||||
|
return this->ui->tvp_AircraftsInRange->rowCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
int CAircraftComponent::countAirportsInRange() const
|
||||||
|
{
|
||||||
|
Q_ASSERT(this->ui->tvp_AirportsInRange);
|
||||||
|
return this->ui->tvp_AirportsInRange->rowCount();
|
||||||
|
}
|
||||||
|
|
||||||
void CAircraftComponent::update()
|
void CAircraftComponent::update()
|
||||||
{
|
{
|
||||||
Q_ASSERT(this->ui->tvp_AircraftsInRange);
|
Q_ASSERT(this->ui->tvp_AircraftsInRange);
|
||||||
@@ -38,12 +51,45 @@ namespace BlackGui
|
|||||||
|
|
||||||
if (this->getIContextNetwork()->isConnected())
|
if (this->getIContextNetwork()->isConnected())
|
||||||
{
|
{
|
||||||
this->ui->tvp_AircraftsInRange->updateContainer(this->getIContextNetwork()->getAircraftsInRange());
|
if (this->countAircrafts() < 1 || this->isVisibleWidget())
|
||||||
|
{
|
||||||
|
this->ui->tvp_AircraftsInRange->updateContainer(this->getIContextNetwork()->getAircraftsInRange());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// KWB remove: qDebug() will be removed soo
|
||||||
|
qDebug() << this->objectName() << "Skipping update (aircrafts)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (this->getIContextSimulator()->isConnected())
|
if (this->getIContextSimulator()->isConnected())
|
||||||
{
|
{
|
||||||
this->ui->tvp_AirportsInRange->updateContainer(this->getIContextSimulator()->getAirportsInRange());
|
if (this->countAirportsInRange() < 1 || this->isVisibleWidget())
|
||||||
|
{
|
||||||
|
this->ui->tvp_AirportsInRange->updateContainer(this->getIContextSimulator()->getAirportsInRange());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug() << this->objectName() << "Skipping update (airports)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
void CAircraftComponent::runtimeHasBeenSet()
|
||||||
|
{
|
||||||
|
connect(this->getParentInfoArea(), &CInfoArea::tabBarCurrentChanged, this, &CAircraftComponent::ps_infoAreaTabBarChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CAircraftComponent::ps_infoAreaTabBarChanged(int index)
|
||||||
|
{
|
||||||
|
// ignore in those cases
|
||||||
|
if (!this->isVisibleWidget()) return;
|
||||||
|
if (this->isParentDockWidgetFloating()) return;
|
||||||
|
if (!this->getIContextNetwork()->isConnected()) return;
|
||||||
|
|
||||||
|
// here I know I am the selected widget, update, but keep GUI responsive (hence
|
||||||
|
QTimer::singleShot(1000, this, SLOT(update()));
|
||||||
|
Q_UNUSED(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
} // namespace
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
#include "blackgui/components/runtimebasedcomponent.h"
|
#include "blackgui/components/runtimebasedcomponent.h"
|
||||||
#include "blackgui/components/timerbasedcomponent.h"
|
#include "blackgui/components/timerbasedcomponent.h"
|
||||||
|
#include "blackgui/components/dockwidgetinfoareacomponent.h"
|
||||||
#include "blackmisc/avaircraft.h"
|
#include "blackmisc/avaircraft.h"
|
||||||
|
|
||||||
#include <QTabWidget>
|
#include <QTabWidget>
|
||||||
@@ -24,7 +25,10 @@ namespace BlackGui
|
|||||||
namespace Components
|
namespace Components
|
||||||
{
|
{
|
||||||
//! Aircraft widget
|
//! Aircraft widget
|
||||||
class CAircraftComponent : public QTabWidget, public CRuntimeBasedComponent
|
class CAircraftComponent :
|
||||||
|
public QTabWidget,
|
||||||
|
public CDockWidgetInfoAreaComponent,
|
||||||
|
public CRuntimeBasedComponent
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
@@ -38,6 +42,12 @@ namespace BlackGui
|
|||||||
//! Timer for updating
|
//! Timer for updating
|
||||||
CTimerBasedComponent *getTimerComponent() { return this->m_timerComponent; }
|
CTimerBasedComponent *getTimerComponent() { return this->m_timerComponent; }
|
||||||
|
|
||||||
|
//! Aircrafts in range
|
||||||
|
int countAircrafts() const;
|
||||||
|
|
||||||
|
//! Airports in range
|
||||||
|
int countAirportsInRange() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
//! Update users
|
//! Update users
|
||||||
void update();
|
void update();
|
||||||
@@ -51,6 +61,14 @@ namespace BlackGui
|
|||||||
//! \copydoc CTimerBasedComponent::stopTimer
|
//! \copydoc CTimerBasedComponent::stopTimer
|
||||||
void stopTimer() { Q_ASSERT(this->m_timerComponent); this->m_timerComponent->stopTimer(); }
|
void stopTimer() { Q_ASSERT(this->m_timerComponent); this->m_timerComponent->stopTimer(); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! \copydoc CRuntimeBasedComponent::runtimeHasBeenSet
|
||||||
|
void runtimeHasBeenSet() override;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
//! Info area tab bar has changed
|
||||||
|
void ps_infoAreaTabBarChanged(int index);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::CAircraftComponent *ui;
|
Ui::CAircraftComponent *ui;
|
||||||
CTimerBasedComponent *m_timerComponent;
|
CTimerBasedComponent *m_timerComponent;
|
||||||
|
|||||||
Reference in New Issue
Block a user