mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-19 20:25:29 +08:00
refs #335, improved cockpit
* support for squawk ident * enable for runtime * LEDs showing right state when connected to voice room
This commit is contained in:
committed by
Roland Winklmeier
parent
3351791016
commit
858e8895d8
@@ -11,7 +11,10 @@
|
|||||||
#include "ui_cockpitcomcomponent.h"
|
#include "ui_cockpitcomcomponent.h"
|
||||||
#include "../stylesheetutility.h"
|
#include "../stylesheetutility.h"
|
||||||
#include "blackcore/context_network.h"
|
#include "blackcore/context_network.h"
|
||||||
|
#include "blackcore/context_ownaircraft.h"
|
||||||
|
#include "blackcore/context_audio.h"
|
||||||
#include "blackmisc/avaircraft.h"
|
#include "blackmisc/avaircraft.h"
|
||||||
|
#include "blackmisc/voiceroomlist.h"
|
||||||
#include "blackmisc/logmessage.h"
|
#include "blackmisc/logmessage.h"
|
||||||
|
|
||||||
#include <QDoubleSpinBox>
|
#include <QDoubleSpinBox>
|
||||||
@@ -19,6 +22,7 @@
|
|||||||
|
|
||||||
using namespace BlackGui;
|
using namespace BlackGui;
|
||||||
using namespace BlackCore;
|
using namespace BlackCore;
|
||||||
|
using namespace BlackMisc::Audio;
|
||||||
using namespace BlackMisc::Aviation;
|
using namespace BlackMisc::Aviation;
|
||||||
using namespace BlackMisc::PhysicalQuantities;
|
using namespace BlackMisc::PhysicalQuantities;
|
||||||
|
|
||||||
@@ -28,16 +32,22 @@ namespace BlackGui
|
|||||||
{
|
{
|
||||||
CCockpitComComponent::CCockpitComComponent(QWidget *parent) :
|
CCockpitComComponent::CCockpitComComponent(QWidget *parent) :
|
||||||
QFrame(parent),
|
QFrame(parent),
|
||||||
CEnableForDockWidgetInfoArea(),
|
|
||||||
ui(new Ui::CCockpitMainComponent)
|
ui(new Ui::CCockpitMainComponent)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->initLeds();
|
this->initLeds();
|
||||||
|
QObject::connect(this->ui->cbp_ComPanelTransponderMode, &CTransponderModeSelector::transponderModeChanged, this, &CCockpitComComponent::transponderModeChanged);
|
||||||
|
QObject::connect(this->ui->cbp_ComPanelTransponderMode, &CTransponderModeSelector::transponderStateIdentEnded, this, &CCockpitComComponent::transponderStateIdentEnded);
|
||||||
}
|
}
|
||||||
|
|
||||||
CCockpitComComponent::~CCockpitComComponent()
|
CCockpitComComponent::~CCockpitComComponent()
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
void CCockpitComComponent::setSelectedTransponderModeStateIdent()
|
||||||
|
{
|
||||||
|
this->ui->cbp_ComPanelTransponderMode->setSelectedTransponderModeStateIdent();
|
||||||
|
}
|
||||||
|
|
||||||
void CCockpitComComponent::paintEvent(QPaintEvent *event)
|
void CCockpitComComponent::paintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
Q_UNUSED(event);
|
Q_UNUSED(event);
|
||||||
@@ -62,12 +72,16 @@ namespace BlackGui
|
|||||||
connect(this->ui->ds_ComPanelCom2Active, &QDoubleSpinBox::editingFinished, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
connect(this->ui->ds_ComPanelCom2Active, &QDoubleSpinBox::editingFinished, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
||||||
connect(this->ui->ds_ComPanelCom1Standby, &QDoubleSpinBox::editingFinished, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
connect(this->ui->ds_ComPanelCom1Standby, &QDoubleSpinBox::editingFinished, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
||||||
connect(this->ui->ds_ComPanelCom2Standby, &QDoubleSpinBox::editingFinished, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
connect(this->ui->ds_ComPanelCom2Standby, &QDoubleSpinBox::editingFinished, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
||||||
connect(this->ui->ds_ComPanelTransponder, &QDoubleSpinBox::editingFinished, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
connect(this->ui->sbp_ComPanelTransponder, &QDoubleSpinBox::editingFinished, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
||||||
connect(this->ui->cbp_ComPanelTransponderMode, &CTransponderModeSelector::valueChanged, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
connect(this->ui->cbp_ComPanelTransponderMode, &CTransponderModeSelector::transponderModeChanged, this, &CCockpitComComponent::ps_guiChangedCockpitValues);
|
||||||
|
|
||||||
// hook up with changes from own aircraft context
|
// hook up with changes from own aircraft context
|
||||||
Q_ASSERT(this->getIContextOwnAircraft());
|
Q_ASSERT(this->getIContextOwnAircraft());
|
||||||
this->connect(this->getIContextOwnAircraft(), &IContextOwnAircraft::changedAircraftCockpit, this, &CCockpitComComponent::ps_updateCockpitFromContext);
|
this->connect(this->getIContextOwnAircraft(), &IContextOwnAircraft::changedAircraftCockpit, this, &CCockpitComComponent::ps_updateCockpitFromContext);
|
||||||
|
|
||||||
|
// hook up with audio context
|
||||||
|
Q_ASSERT(this->getIContextAudio());
|
||||||
|
this->connect(this->getIContextAudio(), &IContextAudio::changedVoiceRooms, this, &CCockpitComComponent::ps_onChangedVoiceRoomStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCockpitComComponent::ps_guiChangedCockpitValues()
|
void CCockpitComComponent::ps_guiChangedCockpitValues()
|
||||||
@@ -111,12 +125,12 @@ namespace BlackGui
|
|||||||
const CTransponder transponder = ownAircraft.getTransponder();
|
const CTransponder transponder = ownAircraft.getTransponder();
|
||||||
|
|
||||||
// update the frequencies
|
// update the frequencies
|
||||||
this->updateComFrequencyDisplaysFromComSystems(com1, com2);
|
this->updateFrequencyDisplaysFromComSystems(com1, com2);
|
||||||
|
|
||||||
// update transponder
|
// update transponder
|
||||||
qint32 tc = transponder.getTransponderCode();
|
qint32 tc = transponder.getTransponderCode();
|
||||||
if (tc != static_cast<qint32>(this->ui->ds_ComPanelTransponder->value()))
|
if (tc != static_cast<qint32>(this->ui->sbp_ComPanelTransponder->value()))
|
||||||
this->ui->ds_ComPanelTransponder->setValue(tc);
|
this->ui->sbp_ComPanelTransponder->setValue(tc);
|
||||||
|
|
||||||
this->ui->cbp_ComPanelTransponderMode->setSelectedTransponderMode(transponder.getTransponderMode());
|
this->ui->cbp_ComPanelTransponderMode->setSelectedTransponderMode(transponder.getTransponderMode());
|
||||||
|
|
||||||
@@ -190,7 +204,7 @@ namespace BlackGui
|
|||||||
//
|
//
|
||||||
// Transponder
|
// Transponder
|
||||||
//
|
//
|
||||||
QString transponderCode = QString::number(qRound(this->ui->ds_ComPanelTransponder->value()));
|
QString transponderCode = QString::number(this->ui->sbp_ComPanelTransponder->value());
|
||||||
if (CTransponder::isValidTransponderCode(transponderCode))
|
if (CTransponder::isValidTransponderCode(transponderCode))
|
||||||
{
|
{
|
||||||
transponder.setTransponderCode(transponderCode);
|
transponder.setTransponderCode(transponderCode);
|
||||||
@@ -198,7 +212,7 @@ namespace BlackGui
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
CLogMessage().validationWarning("Wrong transponder code, reset");
|
CLogMessage().validationWarning("Wrong transponder code, reset");
|
||||||
this->ui->ds_ComPanelTransponder->setValue(transponder.getTransponderCode());
|
this->ui->sbp_ComPanelTransponder->setValue(transponder.getTransponderCode());
|
||||||
}
|
}
|
||||||
transponder.setTransponderMode(this->ui->cbp_ComPanelTransponderMode->getSelectedTransponderMode());
|
transponder.setTransponderMode(this->ui->cbp_ComPanelTransponderMode->getSelectedTransponderMode());
|
||||||
|
|
||||||
@@ -209,7 +223,7 @@ namespace BlackGui
|
|||||||
com1.setFrequencyStandbyMHz(this->ui->ds_ComPanelCom1Standby->value());
|
com1.setFrequencyStandbyMHz(this->ui->ds_ComPanelCom1Standby->value());
|
||||||
com2.setFrequencyActiveMHz(this->ui->ds_ComPanelCom2Active->value());
|
com2.setFrequencyActiveMHz(this->ui->ds_ComPanelCom2Active->value());
|
||||||
com2.setFrequencyStandbyMHz(this->ui->ds_ComPanelCom2Standby->value());
|
com2.setFrequencyStandbyMHz(this->ui->ds_ComPanelCom2Standby->value());
|
||||||
this->updateComFrequencyDisplaysFromComSystems(com1, com2); // back annotation after rounding
|
this->updateFrequencyDisplaysFromComSystems(com1, com2); // back annotation after rounding
|
||||||
|
|
||||||
ownAircraft.setCom1System(com1);
|
ownAircraft.setCom1System(com1);
|
||||||
ownAircraft.setCom2System(com2);
|
ownAircraft.setCom2System(com2);
|
||||||
@@ -229,7 +243,7 @@ namespace BlackGui
|
|||||||
return this->getIContextOwnAircraft()->updateOwnCockpit(ownAircraft.getCom1System(), ownAircraft.getCom2System(), ownAircraft.getTransponder(), CCockpitComComponent::cockpitOriginator());
|
return this->getIContextOwnAircraft()->updateOwnCockpit(ownAircraft.getCom1System(), ownAircraft.getCom2System(), ownAircraft.getTransponder(), CCockpitComComponent::cockpitOriginator());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCockpitComComponent::updateComFrequencyDisplaysFromComSystems(const CComSystem &com1, const CComSystem &com2)
|
void CCockpitComComponent::updateFrequencyDisplaysFromComSystems(const CComSystem &com1, const CComSystem &com2)
|
||||||
{
|
{
|
||||||
double freq = com1.getFrequencyActive().valueRounded(CFrequencyUnit::MHz(), 3);
|
double freq = com1.getFrequencyActive().valueRounded(CFrequencyUnit::MHz(), 3);
|
||||||
if (freq != this->ui->ds_ComPanelCom1Active->value())
|
if (freq != this->ui->ds_ComPanelCom1Active->value())
|
||||||
@@ -256,6 +270,16 @@ namespace BlackGui
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CCockpitComComponent::ps_onChangedVoiceRoomStatus(const CVoiceRoomList &selectedVoiceRooms, bool connected)
|
||||||
|
{
|
||||||
|
Q_ASSERT(selectedVoiceRooms.size() == 2);
|
||||||
|
CVoiceRoom room1 = selectedVoiceRooms[0];
|
||||||
|
CVoiceRoom room2 = selectedVoiceRooms[1];
|
||||||
|
this->ui->led_ComPanelCom1->setOn(room1.isConnected());
|
||||||
|
this->ui->led_ComPanelCom2->setOn(room2.isConnected());
|
||||||
|
Q_UNUSED(connected);
|
||||||
|
}
|
||||||
|
|
||||||
const QString CCockpitComComponent::cockpitOriginator()
|
const QString CCockpitComComponent::cockpitOriginator()
|
||||||
{
|
{
|
||||||
// string is generated once, the timestamp allows to use multiple
|
// string is generated once, the timestamp allows to use multiple
|
||||||
|
|||||||
@@ -12,6 +12,9 @@
|
|||||||
|
|
||||||
#include "enablefordockwidgetinfoarea.h"
|
#include "enablefordockwidgetinfoarea.h"
|
||||||
#include "enableforruntime.h"
|
#include "enableforruntime.h"
|
||||||
|
#include "blackmisc/avaircraft.h"
|
||||||
|
#include "blackmisc/aviotransponder.h"
|
||||||
|
#include "blackmisc/voiceroomlist.h"
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
|
|
||||||
@@ -36,6 +39,17 @@ namespace BlackGui
|
|||||||
//! Destructor
|
//! Destructor
|
||||||
~CCockpitComComponent();
|
~CCockpitComComponent();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
//! \copydoc BlackGui::CTransponderModeSelector::transponderModeChanged
|
||||||
|
void transponderModeChanged(BlackMisc::Aviation::CTransponder::TransponderMode newMode);
|
||||||
|
|
||||||
|
//! \copydoc BlackGui::CTransponderModeSelector::transponderStateIdentEnded
|
||||||
|
void transponderStateIdentEnded();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
//!\ Set to ident
|
||||||
|
void setSelectedTransponderModeStateIdent();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! \copydoc QWidget::paintEvent
|
//! \copydoc QWidget::paintEvent
|
||||||
virtual void paintEvent(QPaintEvent *event) override;
|
virtual void paintEvent(QPaintEvent *event) override;
|
||||||
@@ -53,6 +67,9 @@ namespace BlackGui
|
|||||||
//! Cockpit values have been changed in GUI
|
//! Cockpit values have been changed in GUI
|
||||||
void ps_testSelcal();
|
void ps_testSelcal();
|
||||||
|
|
||||||
|
//! Update voice room related information
|
||||||
|
void ps_onChangedVoiceRoomStatus(const BlackMisc::Audio::CVoiceRoomList &selectedVoiceRooms, bool connected);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! Init LEDs
|
//! Init LEDs
|
||||||
void initLeds();
|
void initLeds();
|
||||||
@@ -70,7 +87,7 @@ namespace BlackGui
|
|||||||
bool updateOwnCockpitInContext(const BlackMisc::Aviation::CAircraft &ownAircraft);
|
bool updateOwnCockpitInContext(const BlackMisc::Aviation::CAircraft &ownAircraft);
|
||||||
|
|
||||||
//! COM frequencies displayed
|
//! COM frequencies displayed
|
||||||
void updateComFrequencyDisplaysFromComSystems(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2);
|
void updateFrequencyDisplaysFromComSystems(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2);
|
||||||
|
|
||||||
//! Identifies sender of cockpit updates
|
//! Identifies sender of cockpit updates
|
||||||
// TODO: Check if to be migrated to COriginator
|
// TODO: Check if to be migrated to COriginator
|
||||||
|
|||||||
@@ -513,7 +513,7 @@
|
|||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDoubleSpinBox" name="ds_ComPanelTransponder">
|
<widget class="BlackGui::CTransponderCodeSpinBox" name="sbp_ComPanelTransponder">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@@ -526,14 +526,11 @@
|
|||||||
<height>18</height>
|
<height>18</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="decimals">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<double>7777.000000000000000</double>
|
<number>7777</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="value">
|
<property name="value">
|
||||||
<double>7000.000000000000000</double>
|
<number>7000</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -646,6 +643,11 @@
|
|||||||
<header>blackgui/led.h</header>
|
<header>blackgui/led.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>BlackGui::CTransponderCodeSpinBox</class>
|
||||||
|
<extends>QSpinBox</extends>
|
||||||
|
<header>blackgui/transpondercodespinbox.h</header>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../blackmisc/blackmisc.qrc"/>
|
<include location="../../blackmisc/blackmisc.qrc"/>
|
||||||
|
|||||||
@@ -45,6 +45,11 @@ namespace BlackGui
|
|||||||
return this->ui->wip_CockpitComPanelShowHideBar->isShown();
|
return this->ui->wip_CockpitComPanelShowHideBar->isShown();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CCockpitComponent::setSelectedTransponderModeStateIdent()
|
||||||
|
{
|
||||||
|
this->ui->comp_CockpitComComponent->setSelectedTransponderModeStateIdent();
|
||||||
|
}
|
||||||
|
|
||||||
void CCockpitComponent::ps_onToggleShowHideDetails(bool show)
|
void CCockpitComponent::ps_onToggleShowHideDetails(bool show)
|
||||||
{
|
{
|
||||||
Q_ASSERT(this->isParentDockWidgetFloating()); // show hide should not be visible if docked
|
Q_ASSERT(this->isParentDockWidgetFloating()); // show hide should not be visible if docked
|
||||||
|
|||||||
@@ -40,6 +40,10 @@ namespace BlackGui
|
|||||||
//! Is the info area shown?
|
//! Is the info area shown?
|
||||||
bool isInfoAreaShown() const;
|
bool isInfoAreaShown() const;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
//! \copydoc BlackGui::CTransponderModeSelector::setSelectedTransponderModeStateIdent
|
||||||
|
void setSelectedTransponderModeStateIdent();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
//! Show or hide cockpit details
|
//! Show or hide cockpit details
|
||||||
void ps_onToggleShowHideDetails(bool show);
|
void ps_onToggleShowHideDetails(bool show);
|
||||||
|
|||||||
Reference in New Issue
Block a user