Preparation for 2 COM keys and increase/decrease volume hotkeys

Ref T672, Ref T642
This commit is contained in:
Klaus Basan
2019-05-29 00:23:04 +02:00
parent cf7aa7767a
commit bd1590ac91
6 changed files with 120 additions and 12 deletions

View File

@@ -290,6 +290,8 @@ namespace BlackCore
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << volume; }
bool wasMuted = isMuted();
volume = qMin(CSettings::MaxAudioVolume, volume);
bool changedVoiceOutput = m_voiceOutputDevice->getOutputVolume() != volume;
if (changedVoiceOutput)
{
@@ -588,9 +590,11 @@ namespace BlackCore
return false;
}
void CContextAudio::setVoiceTransmission(bool enable)
void CContextAudio::setVoiceTransmission(bool enable, COM com)
{
// FIXME: Use the 'active' channel instead of hardcoded COM1
// FIXME: Use com
Q_UNUSED(com);
if (!m_voiceChannelMapping.contains(CComSystem::Com1)) { return; }
QSharedPointer<IVoiceChannel> voiceChannelCom1 = m_voiceChannelMapping.value(CComSystem::Com1);
IAudioMixer::OutputPort mixerOutputPort = m_voiceChannelOutputPortMapping.value(voiceChannelCom1);
@@ -606,6 +610,21 @@ namespace BlackCore
}
}
void CContextAudio::setVoiceTransmissionCom1(bool enabled)
{
this->setVoiceTransmission(enabled, COM1);
}
void CContextAudio::setVoiceTransmissionCom2(bool enabled)
{
this->setVoiceTransmission(enabled, COM2);
}
void CContextAudio::setVoiceTransmissionComActive(bool enabled)
{
this->setVoiceTransmission(enabled, COMActive);
}
void CContextAudio::onConnectionStatusChanged(BlackCore::IVoiceChannel::ConnectionStatus oldStatus,
BlackCore::IVoiceChannel::ConnectionStatus newStatus)
{
@@ -677,6 +696,20 @@ namespace BlackCore
this->setVoiceOutputVolume(s.getAudioVolume());
}
void CContextAudio::audioIncreaseVolume(bool enabled)
{
if (!enabled) { return; }
const int v = qRound(this->getVoiceOutputVolume() * 1.2);
this->setVoiceOutputVolume(v);
}
void CContextAudio::audioDecreaseVolume(bool enabled)
{
if (!enabled) { return; }
const int v = qRound(this->getVoiceOutputVolume() / 1.2);
this->setVoiceOutputVolume(v);
}
QSharedPointer<IVoiceChannel> CContextAudio::getVoiceChannelBy(const CVoiceRoom &voiceRoom)
{
QSharedPointer<IVoiceChannel> voiceChannel;

View File

@@ -46,7 +46,7 @@
namespace BlackMisc
{
class CDBusServer;
namespace Audio { class CAudioDeviceInfo; }
namespace Audio { class CAudioDeviceInfo; }
namespace Aviation { class CCallsign; }
}
@@ -121,6 +121,15 @@ namespace BlackCore
CContextAudio *registerWithDBus(BlackMisc::CDBusServer *server);
private:
// Voice COM channel
enum COM
{
COM1,
COM2,
COMActive,
COMUnspecified
};
void initVoiceChannels();
void initInputDevice();
void initOutputDevice();
@@ -131,8 +140,12 @@ namespace BlackCore
//! \sa IContextAudio::changedVoiceRooms
void onConnectionStatusChanged(IVoiceChannel::ConnectionStatus oldStatus, IVoiceChannel::ConnectionStatus newStatus);
//! Enable/disable voice transmission
void setVoiceTransmission(bool enable);
//! Enable/disable voice transmission @{
void setVoiceTransmission(bool enable, COM com);
void setVoiceTransmissionCom1(bool enabled);
void setVoiceTransmissionCom2(bool enabled);
void setVoiceTransmissionComActive(bool enabled);
//! @}
//! User joined the room
void onUserJoinedRoom(const BlackMisc::Aviation::CCallsign &callsign);
@@ -149,20 +162,29 @@ namespace BlackCore
//! Changed audio settings
void onChangedAudioSettings();
//! Audio increase/decrease @{
void audioIncreaseVolume(bool enabled);
void audioDecreaseVolume(bool enabled);
//! @}
//! Voice channel by room
QSharedPointer<IVoiceChannel> getVoiceChannelBy(const BlackMisc::Audio::CVoiceRoom &voiceRoom);
CActionBind m_actionPtt { BlackMisc::Input::pttHotkeyAction(), BlackMisc::Input::pttHotkeyIcon(), this, &CContextAudio::setVoiceTransmission };
CActionBind m_actionPtt { BlackMisc::Input::pttHotkeyAction(), BlackMisc::Input::pttHotkeyIcon(), this, &CContextAudio::setVoiceTransmissionComActive };
CActionBind m_actionPttCom1 { BlackMisc::Input::pttCom1HotkeyAction(), BlackMisc::Input::pttHotkeyIcon(), this, &CContextAudio::setVoiceTransmissionCom1 };
CActionBind m_actionPttCom2 { BlackMisc::Input::pttCom2HotkeyAction(), BlackMisc::Input::pttHotkeyIcon(), this, &CContextAudio::setVoiceTransmissionCom2 };
CActionBind m_actionAudioVolumeIncrease { BlackMisc::Input::audioVolumeIncreaseHotkeyAction(), BlackMisc::Input::audioVolumeIncreaseHotkeyIcon(), this, &CContextAudio::audioIncreaseVolume };
CActionBind m_actionAudioVolumeDecrease { BlackMisc::Input::audioVolumeDecreaseHotkeyAction(), BlackMisc::Input::audioVolumeDecreaseHotkeyIcon(), this, &CContextAudio::audioDecreaseVolume };
std::unique_ptr<IVoice> m_voice; //!< underlying voice lib
std::unique_ptr<IAudioMixer> m_audioMixer;
const int MinUnmuteVolume = 20; //!< minimum volume when unmuted
int m_outVolumeBeforeMute = 90;
static constexpr int MinUnmuteVolume = 20; //!< minimum volume when unmuted
#ifdef Q_OS_MAC
#ifdef Q_OS_MAC
BlackMisc::CMacOSMicrophoneAccess m_micAccess;
void delayedInitMicrophone();
#endif
#endif
// For easy access.
QSharedPointer<IVoiceChannel> m_channel1;