mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-05 17:35:34 +08:00
Handle users joining and leaving properly in audio context and gui
Before this change signals when users were joining or leaving the voice room were not properly handled. A new signal in audio context is emitted now and gui will rebuild the user list when it is emitted.
This commit is contained in:
committed by
Klaus Basan
parent
a50e45e451
commit
0760a67138
@@ -84,6 +84,9 @@ namespace BlackCore
|
||||
//! \details the flag indicates, whether a room got connected or disconnected
|
||||
void changedVoiceRooms(const BlackMisc::Audio::CVoiceRoomList &voiceRooms, bool connected);
|
||||
|
||||
//! Voice room members changed
|
||||
void changedVoiceRoomMembers();
|
||||
|
||||
//! Audio volume changed
|
||||
//! \sa setVoiceOutputVolume
|
||||
void changedAudioVolume(int volume);
|
||||
|
||||
@@ -49,9 +49,13 @@ namespace BlackCore
|
||||
m_channel1 = m_voice->createVoiceChannel();
|
||||
m_channel1->setMyAircraftCallsign(ownCallsign);
|
||||
connect(m_channel1.data(), &IVoiceChannel::connectionStatusChanged, this, &CContextAudio::ps_connectionStatusChanged);
|
||||
connect(m_channel1.data(), &IVoiceChannel::userJoinedRoom, this, &CContextAudio::ps_userJoinedRoom);
|
||||
connect(m_channel1.data(), &IVoiceChannel::userLeftRoom, this, &CContextAudio::ps_userLeftRoom);
|
||||
m_channel2 = m_voice->createVoiceChannel();
|
||||
m_channel2->setMyAircraftCallsign(ownCallsign);
|
||||
connect(m_channel2.data(), &IVoiceChannel::connectionStatusChanged, this, &CContextAudio::ps_connectionStatusChanged);
|
||||
connect(m_channel1.data(), &IVoiceChannel::userJoinedRoom, this, &CContextAudio::ps_userJoinedRoom);
|
||||
connect(m_channel1.data(), &IVoiceChannel::userLeftRoom, this, &CContextAudio::ps_userLeftRoom);
|
||||
|
||||
m_voiceInputDevice = m_voice->createInputDevice();
|
||||
m_voiceOutputDevice = m_voice->createOutputDevice();
|
||||
@@ -546,6 +550,16 @@ namespace BlackCore
|
||||
}
|
||||
}
|
||||
|
||||
void CContextAudio::ps_userJoinedRoom(const CCallsign & /**callsign**/)
|
||||
{
|
||||
emit this->changedVoiceRoomMembers();
|
||||
}
|
||||
|
||||
void CContextAudio::ps_userLeftRoom(const CCallsign & /**callsign**/)
|
||||
{
|
||||
emit this->changedVoiceRoomMembers();
|
||||
}
|
||||
|
||||
QSharedPointer<IVoiceChannel> CContextAudio::getVoiceChannelBy(const CVoiceRoom &voiceRoom)
|
||||
{
|
||||
QSharedPointer<IVoiceChannel> voiceChannel;
|
||||
|
||||
@@ -139,6 +139,12 @@ namespace BlackCore
|
||||
|
||||
void ps_setVoiceTransmission(bool enable);
|
||||
|
||||
//! User joined the room
|
||||
void ps_userJoinedRoom(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
|
||||
//! User left the room
|
||||
void ps_userLeftRoom(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
|
||||
private:
|
||||
const int MinUnmuteVolume = 20; //!< minimum volume when unmuted
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ namespace BlackGui
|
||||
void CVoiceRoomsComponent::runtimeHasBeenSet()
|
||||
{
|
||||
this->connect(this->getIContextAudio(), &IContextAudio::changedVoiceRooms, this, &CVoiceRoomsComponent::ps_updateAudioVoiceRoomsFromContext);
|
||||
this->connect(this->getIContextAudio(), &IContextAudio::changedVoiceRoomMembers, this, &CVoiceRoomsComponent::ps_updateVoiceRoomMembers);
|
||||
}
|
||||
|
||||
void CVoiceRoomsComponent::ps_onVoiceRoomOverrideChanged(bool checked)
|
||||
@@ -102,7 +103,7 @@ namespace BlackGui
|
||||
}
|
||||
if (changedUrl1 || changedUrl2)
|
||||
{
|
||||
this->updateVoiceRoomMembers();
|
||||
this->ps_updateVoiceRoomMembers();
|
||||
|
||||
// notify
|
||||
if (this->getIContextAudio())
|
||||
@@ -115,7 +116,7 @@ namespace BlackGui
|
||||
}
|
||||
}
|
||||
|
||||
void CVoiceRoomsComponent::updateVoiceRoomMembers()
|
||||
void CVoiceRoomsComponent::ps_updateVoiceRoomMembers()
|
||||
{
|
||||
if (!this->getIContextAudio()) { return; }
|
||||
if (!this->ui->le_CockpitVoiceRoomCom1->text().trimmed().isEmpty())
|
||||
|
||||
@@ -51,13 +51,13 @@ namespace BlackGui
|
||||
//! Set the voice room url fields (checkboxes, line edits)
|
||||
void ps_updateAudioVoiceRoomsFromContext(const BlackMisc::Audio::CVoiceRoomList &selectedVoiceRooms, bool connected);
|
||||
|
||||
//! Update voice room views
|
||||
void ps_updateVoiceRoomMembers();
|
||||
|
||||
private:
|
||||
//! Set the URL fields
|
||||
void setVoiceRoomUrlFieldsReadOnlyState();
|
||||
|
||||
//! Update voice room views
|
||||
void updateVoiceRoomMembers();
|
||||
|
||||
QScopedPointer<Ui::CVoiceRoomsComponent> ui;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user