Ref T268, improvements in log display

* can request elevation
* more detailed statistics
This commit is contained in:
Klaus Basan
2018-07-09 22:25:33 +02:00
parent 621396e66d
commit 89c5a474b0
3 changed files with 123 additions and 16 deletions

View File

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

View File

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

View File

@@ -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,11 +582,49 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>4</number> <number>4</number>
</property> </property>
<item alignment="Qt::AlignRight"> <item>
<widget class="QPushButton" name="pb_GetLastInterpolation"> <widget class="QGroupBox" name="gb_Interpolation">
<property name="text"> <property name="title">
<string> last interpolation </string> <string>Interpolation</string>
</property> </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">
<property name="text">
<string> last interpolation </string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
<item> <item>
@@ -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/>