mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-26 02:35:38 +08:00
Ref T268, improvements in log display
* can request elevation * more detailed statistics
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
using namespace BlackCore;
|
using namespace BlackCore;
|
||||||
using namespace BlackCore::Context;
|
using namespace BlackCore::Context;
|
||||||
|
using namespace BlackGui::Views;
|
||||||
using namespace BlackMisc;
|
using namespace BlackMisc;
|
||||||
using namespace BlackMisc::Aviation;
|
using namespace BlackMisc::Aviation;
|
||||||
using namespace BlackMisc::Geo;
|
using namespace BlackMisc::Geo;
|
||||||
@@ -50,14 +51,20 @@ namespace BlackGui
|
|||||||
ui->led_Updating->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "Just updating", "Idle", 14);
|
ui->led_Updating->setValues(CLedWidget::Yellow, CLedWidget::Black, shape, "Just updating", "Idle", 14);
|
||||||
|
|
||||||
m_callsign = ui->comp_CallsignCompleter->getCallsign();
|
m_callsign = ui->comp_CallsignCompleter->getCallsign();
|
||||||
|
ui->tvp_AircraftSituations->setWithMenuRequestElevation(true);
|
||||||
|
|
||||||
connect(&m_updateTimer, &QTimer::timeout, this, &CInterpolationLogDisplay::updateLog);
|
connect(&m_updateTimer, &QTimer::timeout, this, &CInterpolationLogDisplay::updateLog);
|
||||||
connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEntered, this, &CInterpolationLogDisplay::onCallsignEntered);
|
connect(ui->comp_CallsignCompleter, &CCallsignCompleter::validCallsignEntered, this, &CInterpolationLogDisplay::onCallsignEntered);
|
||||||
connect(ui->hs_UpdateTime, &QSlider::valueChanged, this, &CInterpolationLogDisplay::onSliderChanged);
|
connect(ui->hs_UpdateTime, &QSlider::valueChanged, this, &CInterpolationLogDisplay::onSliderChanged);
|
||||||
connect(ui->pb_StartStop, &QPushButton::released, this, &CInterpolationLogDisplay::toggleStartStop);
|
connect(ui->pb_StartStop, &QPushButton::released, this, &CInterpolationLogDisplay::toggleStartStop);
|
||||||
connect(ui->pb_ResetStats, &QPushButton::released, this, &CInterpolationLogDisplay::resetStatistics);
|
connect(ui->pb_ResetStats, &QPushButton::released, this, &CInterpolationLogDisplay::resetStatistics);
|
||||||
connect(ui->pb_ShowInSimulator, &QPushButton::released, this, &CInterpolationLogDisplay::showLogInSimulator);
|
connect(ui->pb_ShowLogInSimulator, &QPushButton::released, this, &CInterpolationLogDisplay::showLogInSimulator);
|
||||||
|
connect(ui->pb_FollowInSimulator, &QPushButton::released, this, &CInterpolationLogDisplay::followInSimulator);
|
||||||
|
connect(ui->pb_RequestElevation, &QPushButton::released, this, &CInterpolationLogDisplay::requestElevationClicked);
|
||||||
connect(ui->pb_GetLastInterpolation, &QPushButton::released, this, &CInterpolationLogDisplay::displayLastInterpolation);
|
connect(ui->pb_GetLastInterpolation, &QPushButton::released, this, &CInterpolationLogDisplay::displayLastInterpolation);
|
||||||
|
connect(ui->pb_InjectElevation, &QPushButton::released, this, &CInterpolationLogDisplay::onInjectElevation);
|
||||||
|
connect(ui->tvp_AircraftSituations, &CAircraftSituationView::requestElevation, this, &CInterpolationLogDisplay::requestElevation);
|
||||||
|
connect(ui->le_InjectElevation, &QLineEdit::returnPressed, this, &CInterpolationLogDisplay::onInjectElevation);
|
||||||
connect(sGui, &CGuiApplication::aboutToShutdown, this, &CInterpolationLogDisplay::onAboutToShutdown);
|
connect(sGui, &CGuiApplication::aboutToShutdown, this, &CInterpolationLogDisplay::onAboutToShutdown);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,6 +219,13 @@ namespace BlackGui
|
|||||||
sGui->getIContextSimulator()->parseCommandLine(cmd, this->identifier());
|
sGui->getIContextSimulator()->parseCommandLine(cmd, this->identifier());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CInterpolationLogDisplay::followInSimulator()
|
||||||
|
{
|
||||||
|
if (m_callsign.isEmpty()) { return; }
|
||||||
|
if (!m_simulatorCommon) { return; }
|
||||||
|
m_simulatorCommon->followAircraft(m_callsign);
|
||||||
|
}
|
||||||
|
|
||||||
bool CInterpolationLogDisplay::start()
|
bool CInterpolationLogDisplay::start()
|
||||||
{
|
{
|
||||||
if (m_updateTimer.isActive()) { return false; }
|
if (m_updateTimer.isActive()) { return false; }
|
||||||
@@ -297,6 +311,22 @@ namespace BlackGui
|
|||||||
ui->led_Elevation->blink();
|
ui->led_Elevation->blink();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CInterpolationLogDisplay::onInjectElevation()
|
||||||
|
{
|
||||||
|
if (!m_simulatorCommon) { return; }
|
||||||
|
const QString elv = ui->le_InjectElevation->text().trimmed();
|
||||||
|
if (elv.isEmpty()) { return; }
|
||||||
|
|
||||||
|
const CAircraftSituationList situations = m_airspaceMonitor->remoteAircraftSituations(m_callsign);
|
||||||
|
if (situations.isEmpty()) { return; }
|
||||||
|
|
||||||
|
CAltitude alt;
|
||||||
|
alt.parseFromString(elv);
|
||||||
|
const CElevationPlane ep(situations.latestAdjustedObject(), alt, CElevationPlane::singlePointRadius());
|
||||||
|
|
||||||
|
m_simulatorCommon->callbackReceivedRequestedElevation(ep, m_callsign);
|
||||||
|
}
|
||||||
|
|
||||||
void CInterpolationLogDisplay::resetStatistics()
|
void CInterpolationLogDisplay::resetStatistics()
|
||||||
{
|
{
|
||||||
if (m_simulatorCommon) { m_simulatorCommon->resetAircraftStatistics(); }
|
if (m_simulatorCommon) { m_simulatorCommon->resetAircraftStatistics(); }
|
||||||
@@ -369,9 +399,24 @@ namespace BlackGui
|
|||||||
void CInterpolationLogDisplay::displayElevationRequestReceive()
|
void CInterpolationLogDisplay::displayElevationRequestReceive()
|
||||||
{
|
{
|
||||||
if (!m_airspaceMonitor) { return; }
|
if (!m_airspaceMonitor) { return; }
|
||||||
static const QString info("%1/%2 hits %3");
|
static const QString info("%1/%2 hits %3 times: %4");
|
||||||
const QString foundMissed = m_airspaceMonitor->getElevationsFoundMissedInfo();
|
const QString foundMissed = m_airspaceMonitor->getElevationsFoundMissedInfo();
|
||||||
ui->le_ElevationReqRec->setText(info.arg(m_elvRequested).arg(m_elvReceived).arg(foundMissed));
|
const QString reqTimes = m_airspaceMonitor->getElevationRequestTimesInfo();
|
||||||
|
ui->le_ElevationReqRec->setText(info.arg(m_elvRequested).arg(m_elvReceived).arg(foundMissed, reqTimes));
|
||||||
|
}
|
||||||
|
|
||||||
|
void CInterpolationLogDisplay::requestElevationClicked()
|
||||||
|
{
|
||||||
|
if (m_callsign.isEmpty()) { return; }
|
||||||
|
const CAircraftSituationList situations = m_airspaceMonitor->remoteAircraftSituations(m_callsign);
|
||||||
|
if (situations.isEmpty()) { return; }
|
||||||
|
this->requestElevation(situations.latestAdjustedObject());
|
||||||
|
}
|
||||||
|
|
||||||
|
void CInterpolationLogDisplay::requestElevation(const CAircraftSituation &situation)
|
||||||
|
{
|
||||||
|
if (!m_simulatorCommon) { return; }
|
||||||
|
m_simulatorCommon->requestElevationBySituation(situation);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CInterpolationLogDisplay::linkWithAirspaceMonitor()
|
void CInterpolationLogDisplay::linkWithAirspaceMonitor()
|
||||||
|
|||||||
@@ -81,6 +81,9 @@ namespace BlackGui
|
|||||||
//! Display log in simulator
|
//! Display log in simulator
|
||||||
void showLogInSimulator();
|
void showLogInSimulator();
|
||||||
|
|
||||||
|
//! Follow aircraft in simulator
|
||||||
|
void followInSimulator();
|
||||||
|
|
||||||
//! Start displaying
|
//! Start displaying
|
||||||
bool start();
|
bool start();
|
||||||
|
|
||||||
@@ -111,6 +114,9 @@ namespace BlackGui
|
|||||||
//! \copydoc BlackCore::CSimulatorCommon::requestedElevation
|
//! \copydoc BlackCore::CSimulatorCommon::requestedElevation
|
||||||
void onElevationRequested(const BlackMisc::Aviation::CCallsign &callsign);
|
void onElevationRequested(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
|
||||||
|
//! Call the callback of requested elevations as it would come from the simulator
|
||||||
|
void onInjectElevation();
|
||||||
|
|
||||||
//! \copydoc BlackCore::CSimulatorCommon::resetAircraftStatistics
|
//! \copydoc BlackCore::CSimulatorCommon::resetAircraftStatistics
|
||||||
void resetStatistics();
|
void resetStatistics();
|
||||||
|
|
||||||
@@ -126,13 +132,19 @@ namespace BlackGui
|
|||||||
//! Display elevation requested/receive
|
//! Display elevation requested/receive
|
||||||
void displayElevationRequestReceive();
|
void displayElevationRequestReceive();
|
||||||
|
|
||||||
|
//! Do request elevation
|
||||||
|
void requestElevationClicked();
|
||||||
|
|
||||||
|
//! Do request elevation
|
||||||
|
void requestElevation(const BlackMisc::Aviation::CAircraftSituation &situation);
|
||||||
|
|
||||||
QScopedPointer<Ui::CInterpolationLogDisplay> ui;
|
QScopedPointer<Ui::CInterpolationLogDisplay> ui;
|
||||||
QTimer m_updateTimer;
|
QTimer m_updateTimer;
|
||||||
QPointer<BlackCore::CSimulatorCommon> m_simulatorCommon; //!< related simulator
|
QPointer<BlackCore::CSimulatorCommon> m_simulatorCommon; //!< related simulator
|
||||||
QPointer<BlackCore::CAirspaceMonitor> m_airspaceMonitor; //!< related airspace monitor
|
QPointer<BlackCore::CAirspaceMonitor> m_airspaceMonitor; //!< related airspace monitor
|
||||||
BlackMisc::Aviation::CCallsign m_callsign; //!< current callsign
|
BlackMisc::Aviation::CCallsign m_callsign; //!< current callsign
|
||||||
int m_elvRequested = 0;
|
int m_elvRequested = 0; //!< counted via signal
|
||||||
int m_elvReceived = 0;
|
int m_elvReceived = 0; //!< counted via signal
|
||||||
|
|
||||||
static const QString &startText();
|
static const QString &startText();
|
||||||
static const QString &stopText();
|
static const QString &stopText();
|
||||||
|
|||||||
@@ -130,7 +130,7 @@
|
|||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QFrame" name="fr_LogStatus">
|
<widget class="QFrame" name="fr_LogStatus">
|
||||||
<layout class="QHBoxLayout" name="hl_LogCallsign" stretch="2,1,4,0,0,1">
|
<layout class="QHBoxLayout" name="hl_LogCallsign" stretch="2,1,4,0,0,0,1">
|
||||||
<property name="leftMargin">
|
<property name="leftMargin">
|
||||||
<number>3</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
@@ -184,9 +184,16 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QPushButton" name="pb_ShowInSimulator">
|
<widget class="QPushButton" name="pb_ShowLogInSimulator">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>show in sim.</string>
|
<string>log in sim.</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pb_FollowInSimulator">
|
||||||
|
<property name="text">
|
||||||
|
<string>follow</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -575,13 +582,51 @@
|
|||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>4</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<item alignment="Qt::AlignRight">
|
<item>
|
||||||
|
<widget class="QGroupBox" name="gb_Interpolation">
|
||||||
|
<property name="title">
|
||||||
|
<string>Interpolation</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="hl_Interpolation">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="le_InjectElevation"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pb_InjectElevation">
|
||||||
|
<property name="text">
|
||||||
|
<string> inject elv. </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pb_RequestElevation">
|
||||||
|
<property name="text">
|
||||||
|
<string> req.elevation </string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
<widget class="QPushButton" name="pb_GetLastInterpolation">
|
<widget class="QPushButton" name="pb_GetLastInterpolation">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string> last interpolation </string>
|
<string> last interpolation </string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="gb_LastSituation">
|
<widget class="QGroupBox" name="gb_LastSituation">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
@@ -720,7 +765,8 @@
|
|||||||
<tabstop>le_UpdateTime</tabstop>
|
<tabstop>le_UpdateTime</tabstop>
|
||||||
<tabstop>hs_UpdateTime</tabstop>
|
<tabstop>hs_UpdateTime</tabstop>
|
||||||
<tabstop>pb_ResetStats</tabstop>
|
<tabstop>pb_ResetStats</tabstop>
|
||||||
<tabstop>pb_ShowInSimulator</tabstop>
|
<tabstop>pb_ShowLogInSimulator</tabstop>
|
||||||
|
<tabstop>pb_FollowInSimulator</tabstop>
|
||||||
<tabstop>pb_StartStop</tabstop>
|
<tabstop>pb_StartStop</tabstop>
|
||||||
<tabstop>tw_LogTabs</tabstop>
|
<tabstop>tw_LogTabs</tabstop>
|
||||||
<tabstop>le_CG</tabstop>
|
<tabstop>le_CG</tabstop>
|
||||||
@@ -737,12 +783,16 @@
|
|||||||
<tabstop>le_Elevation</tabstop>
|
<tabstop>le_Elevation</tabstop>
|
||||||
<tabstop>le_SimulatorSpecific</tabstop>
|
<tabstop>le_SimulatorSpecific</tabstop>
|
||||||
<tabstop>tvp_AircraftSituations</tabstop>
|
<tabstop>tvp_AircraftSituations</tabstop>
|
||||||
<tabstop>tvp_AircraftParts</tabstop>
|
<tabstop>tvp_Changes</tabstop>
|
||||||
|
<tabstop>le_InjectElevation</tabstop>
|
||||||
|
<tabstop>pb_InjectElevation</tabstop>
|
||||||
|
<tabstop>pb_RequestElevation</tabstop>
|
||||||
|
<tabstop>pb_GetLastInterpolation</tabstop>
|
||||||
<tabstop>te_LastInterpolatedSituation</tabstop>
|
<tabstop>te_LastInterpolatedSituation</tabstop>
|
||||||
<tabstop>te_SituationChange</tabstop>
|
|
||||||
<tabstop>te_TextLog</tabstop>
|
<tabstop>te_TextLog</tabstop>
|
||||||
<tabstop>te_LastInterpolatedParts</tabstop>
|
<tabstop>te_LastInterpolatedParts</tabstop>
|
||||||
<tabstop>pb_GetLastInterpolation</tabstop>
|
<tabstop>tvp_AircraftParts</tabstop>
|
||||||
|
<tabstop>te_SituationChange</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
Reference in New Issue
Block a user