mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-24 18:04:14 +08:00
refs #220, improved voice room handling by providing join/left flag and connection handling
This commit is contained in:
@@ -55,7 +55,8 @@ namespace BlackCore
|
|||||||
void audioTestCompleted();
|
void audioTestCompleted();
|
||||||
|
|
||||||
//! Voice rooms changed
|
//! Voice rooms changed
|
||||||
void changedVoiceRooms(const BlackMisc::Audio::CVoiceRoomList &voiceRooms);
|
//! \details the flag indicates, whether a room got connected or disconnected
|
||||||
|
void changedVoiceRooms(const BlackMisc::Audio::CVoiceRoomList &voiceRooms, bool connected);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
//! Get voice rooms for COM1, COM2:
|
//! Get voice rooms for COM1, COM2:
|
||||||
|
|||||||
@@ -372,12 +372,24 @@ namespace BlackCore
|
|||||||
switch (newStatus)
|
switch (newStatus)
|
||||||
{
|
{
|
||||||
case IVoice::Connected:
|
case IVoice::Connected:
|
||||||
emit this->changedVoiceRooms(this->m_voice->getComVoiceRooms());
|
emit this->changedVoiceRooms(this->m_voice->getComVoiceRooms(), true);
|
||||||
break;
|
break;
|
||||||
case IVoice::Disconnecting:
|
case IVoice::Disconnecting:
|
||||||
emit this->changedVoiceRooms(this->m_voice->getComVoiceRooms());
|
break;
|
||||||
|
case IVoice::Connecting:
|
||||||
|
break;
|
||||||
|
case IVoice::ConnectingFailed:
|
||||||
|
case IVoice::DisconnectedError:
|
||||||
|
{
|
||||||
|
const QString e = QString("Voice room %1 error").arg(comUnit);
|
||||||
|
qWarning(e.toUtf8().constData());
|
||||||
|
|
||||||
|
// no break here!
|
||||||
|
}
|
||||||
|
case IVoice::Disconnected:
|
||||||
// good chance to update aircraft
|
// good chance to update aircraft
|
||||||
if (this->getIContextOwnAircraft()) m_voice->setMyAircraftCallsign(this->getIContextOwnAircraft()->getOwnAircraft().getCallsign());
|
if (this->getIContextOwnAircraft()) m_voice->setMyAircraftCallsign(this->getIContextOwnAircraft()->getOwnAircraft().getCallsign());
|
||||||
|
emit this->changedVoiceRooms(this->m_voice->getComVoiceRooms(), false);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace BlackCore
|
|||||||
"audioTestCompleted", this, SIGNAL(audioTestCompleted()));
|
"audioTestCompleted", this, SIGNAL(audioTestCompleted()));
|
||||||
Q_ASSERT(s);
|
Q_ASSERT(s);
|
||||||
s = connection.connect(serviceName, IContextAudio::ObjectPath(), IContextAudio::InterfaceName(),
|
s = connection.connect(serviceName, IContextAudio::ObjectPath(), IContextAudio::InterfaceName(),
|
||||||
"changedVoiceRooms", this, SIGNAL(changedVoiceRooms(BlackMisc::Audio::CVoiceRoomList)));
|
"changedVoiceRooms", this, SIGNAL(changedVoiceRooms(BlackMisc::Audio::CVoiceRoomList, bool)));
|
||||||
Q_ASSERT(s);
|
Q_ASSERT(s);
|
||||||
Q_UNUSED(s);
|
Q_UNUSED(s);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ using namespace BlackMisc::Geo;
|
|||||||
using namespace BlackMisc::Settings;
|
using namespace BlackMisc::Settings;
|
||||||
using namespace BlackMisc::Math;
|
using namespace BlackMisc::Math;
|
||||||
using namespace BlackMisc::Audio;
|
using namespace BlackMisc::Audio;
|
||||||
|
using namespace BlackSound;
|
||||||
|
|
||||||
namespace BlackGui
|
namespace BlackGui
|
||||||
{
|
{
|
||||||
@@ -70,7 +71,7 @@ namespace BlackGui
|
|||||||
// Audio is optional
|
// Audio is optional
|
||||||
if (this->getIContextAudio())
|
if (this->getIContextAudio())
|
||||||
{
|
{
|
||||||
this->connect(this->getIContextAudio(), &IContextAudio::changedVoiceRooms, this, &CCockpitV1Component::updateAudioVoiceRoomsFromObject);
|
this->connect(this->getIContextAudio(), &IContextAudio::changedVoiceRooms, this, &CCockpitV1Component::updateAudioVoiceRoomsFromObjects);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,25 +248,6 @@ namespace BlackGui
|
|||||||
this->ui->ds_CockpitCom2Standby->setValue(freq);
|
this->ui->ds_CockpitCom2Standby->setValue(freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCockpitV1Component::updateCockpitFromObject(const CAircraft &ownAircraft)
|
|
||||||
{
|
|
||||||
// update GUI elements
|
|
||||||
// avoid unnecessary change events as far as possible
|
|
||||||
const CComSystem com1 = ownAircraft.getCom1System(); // aircraft just updated or set from context
|
|
||||||
const CComSystem com2 = ownAircraft.getCom2System();
|
|
||||||
const CTransponder transponder = ownAircraft.getTransponder();
|
|
||||||
|
|
||||||
// update the frequencies
|
|
||||||
this->updateComFrequencyDisplaysFromObjects(com1, com2);
|
|
||||||
|
|
||||||
// update transponder
|
|
||||||
qint32 tc = transponder.getTransponderCode();
|
|
||||||
if (tc != static_cast<qint32>(this->ui->ds_CockpitTransponder->value()))
|
|
||||||
this->ui->ds_CockpitTransponder->setValue(tc);
|
|
||||||
|
|
||||||
this->ui->cbp_CockpitTransponderMode->setSelectedTransponderMode(transponder.getTransponderMode());
|
|
||||||
}
|
|
||||||
|
|
||||||
void CCockpitV1Component::updateCockpitFromContext(const CAircraft &ownAircraft, const QString &originator)
|
void CCockpitV1Component::updateCockpitFromContext(const CAircraft &ownAircraft, const QString &originator)
|
||||||
{
|
{
|
||||||
if (originator == CCockpitV1Component::cockpitOriginator()) return; // comes from myself
|
if (originator == CCockpitV1Component::cockpitOriginator()) return; // comes from myself
|
||||||
@@ -330,12 +312,15 @@ namespace BlackGui
|
|||||||
this->getIContextOwnAircraft()->setAudioVoiceRoomOverrideUrls(room1, room2);
|
this->getIContextOwnAircraft()->setAudioVoiceRoomOverrideUrls(room1, room2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCockpitV1Component::updateAudioVoiceRoomsFromObject(const CVoiceRoomList &selectedVoiceRooms)
|
void CCockpitV1Component::updateAudioVoiceRoomsFromObjects(const CVoiceRoomList &selectedVoiceRooms, bool connected)
|
||||||
{
|
{
|
||||||
Q_ASSERT(selectedVoiceRooms.size() == 2);
|
Q_ASSERT(selectedVoiceRooms.size() == 2);
|
||||||
CVoiceRoom room1 = selectedVoiceRooms[0];
|
CVoiceRoom room1 = selectedVoiceRooms[0];
|
||||||
CVoiceRoom room2 = selectedVoiceRooms[1];
|
CVoiceRoom room2 = selectedVoiceRooms[1];
|
||||||
|
|
||||||
|
// KB_REMOVE
|
||||||
|
qDebug() << "selected rooms" << room1.isConnected() << room1.getVoiceRoomUrl() << room2.isConnected() << room2.getVoiceRoomUrl();
|
||||||
|
|
||||||
// remark
|
// remark
|
||||||
// isAudioPlaying() is not set, as this is only a temporary value when really "something is playing"
|
// isAudioPlaying() is not set, as this is only a temporary value when really "something is playing"
|
||||||
|
|
||||||
@@ -363,7 +348,19 @@ namespace BlackGui
|
|||||||
this->ui->le_CockpitVoiceRoomCom2->setStyleSheet("");
|
this->ui->le_CockpitVoiceRoomCom2->setStyleSheet("");
|
||||||
this->ui->tvp_CockpitVoiceRoom2->clear();
|
this->ui->tvp_CockpitVoiceRoom2->clear();
|
||||||
}
|
}
|
||||||
if (changedUrl1 || changedUrl2) this->updateVoiceRoomMembers();
|
if (changedUrl1 || changedUrl2)
|
||||||
|
{
|
||||||
|
this->updateVoiceRoomMembers();
|
||||||
|
|
||||||
|
// notify
|
||||||
|
if (this->getIContextAudio())
|
||||||
|
{
|
||||||
|
CNotificationSounds::Notification sound = connected ?
|
||||||
|
CNotificationSounds::NotificationVoiceRoomJoined :
|
||||||
|
CNotificationSounds::NotificationVoiceRoomLeft;
|
||||||
|
this->getIContextAudio()->playNotification(static_cast<uint>(sound), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCockpitV1Component::updateVoiceRoomMembers()
|
void CCockpitV1Component::updateVoiceRoomMembers()
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ namespace BlackGui
|
|||||||
void cockpitValuesChanged();
|
void cockpitValuesChanged();
|
||||||
|
|
||||||
//! Update voice rooms from list
|
//! Update voice rooms from list
|
||||||
void updateAudioVoiceRoomsFromObject(const BlackMisc::Audio::CVoiceRoomList &selectedVoiceRooms);
|
void updateAudioVoiceRoomsFromObjects(const BlackMisc::Audio::CVoiceRoomList &selectedVoiceRooms, bool connected);
|
||||||
|
|
||||||
//! Update the voice room members
|
//! Update the voice room members
|
||||||
void updateVoiceRoomMembers();
|
void updateVoiceRoomMembers();
|
||||||
@@ -85,9 +85,6 @@ namespace BlackGui
|
|||||||
//! Own aircraft object
|
//! Own aircraft object
|
||||||
BlackMisc::Aviation::CAircraft getOwnAircraft() const;
|
BlackMisc::Aviation::CAircraft getOwnAircraft() const;
|
||||||
|
|
||||||
//! Cockpit from aircraft object
|
|
||||||
void updateCockpitFromObject(const BlackMisc::Aviation::CAircraft &ownAircraft);
|
|
||||||
|
|
||||||
//! COM frequencies displays
|
//! COM frequencies displays
|
||||||
void updateComFrequencyDisplaysFromObjects(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2);
|
void updateComFrequencyDisplaysFromObjects(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user