Ref T644, audio volume for notification sounds can be set

This commit is contained in:
Klaus Basan
2019-05-01 17:10:17 +02:00
parent e42a205f5e
commit 77fcde6465
9 changed files with 50 additions and 15 deletions

View File

@@ -162,7 +162,8 @@ namespace BlackCore
//! Play notification sound //! Play notification sound
//! \param notification CSoundGenerator::Notification //! \param notification CSoundGenerator::Notification
//! \param considerSettings consider settings (notification on/off), false means settings ignored //! \param considerSettings consider settings (notification on/off), false means settings ignored
virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings) const = 0; //! \param volume 0..100
virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings, int volume = -1) const = 0;
//! Enable audio loopback //! Enable audio loopback
virtual void enableAudioLoopback(bool enable = true) = 0; virtual void enableAudioLoopback(bool enable = true) = 0;

View File

@@ -156,8 +156,9 @@ namespace BlackCore
} }
//! \copydoc IContextAudio::playNotification() //! \copydoc IContextAudio::playNotification()
virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings) const override virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings, int volume = -1) const override
{ {
Q_UNUSED(volume);
Q_UNUSED(notification); Q_UNUSED(notification);
Q_UNUSED(considerSettings); Q_UNUSED(considerSettings);
logEmptyContextWarning(Q_FUNC_INFO); logEmptyContextWarning(Q_FUNC_INFO);

View File

@@ -438,7 +438,7 @@ namespace BlackCore
} }
} }
void CContextAudio::playNotification(CNotificationSounds::NotificationFlag notification, bool considerSettings) const void CContextAudio::playNotification(CNotificationSounds::NotificationFlag notification, bool considerSettings, int volume) const
{ {
Q_ASSERT(m_voice); Q_ASSERT(m_voice);
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << notification; } if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << notification; }
@@ -455,9 +455,12 @@ namespace BlackCore
} }
} }
int volume = 90; if (volume < 0 || volume > 100)
if (considerSettings) { volume = qMax(25, settings.getNotificationVolume()); } {
m_notificationPlayer.play(notification, 100); volume = 90;
if (considerSettings) { volume = qMax(25, settings.getNotificationVolume()); }
}
m_notificationPlayer.play(notification, volume);
} }
void CContextAudio::enableAudioLoopback(bool enable) void CContextAudio::enableAudioLoopback(bool enable)

View File

@@ -94,7 +94,7 @@ namespace BlackCore
virtual void setMute(bool muted) override; virtual void setMute(bool muted) override;
virtual bool isMuted() const override; virtual bool isMuted() const override;
virtual void playSelcalTone(const BlackMisc::Aviation::CSelcal &selcal) const override; virtual void playSelcalTone(const BlackMisc::Aviation::CSelcal &selcal) const override;
virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings) const override; virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings, int volume = -1) const override;
virtual void enableAudioLoopback(bool enable = true) override; virtual void enableAudioLoopback(bool enable = true) override;
virtual bool isAudioLoopbackEnabled() const override; virtual bool isAudioLoopbackEnabled() const override;
virtual BlackMisc::Audio::CVoiceSetup getVoiceSetup() const override; virtual BlackMisc::Audio::CVoiceSetup getVoiceSetup() const override;

View File

@@ -130,9 +130,9 @@ namespace BlackCore
this->m_dBusInterface->callDBus(QLatin1String("playSelcalTone"), selcal); this->m_dBusInterface->callDBus(QLatin1String("playSelcalTone"), selcal);
} }
void CContextAudioProxy::playNotification(CNotificationSounds::NotificationFlag notification, bool considerSettings) const void CContextAudioProxy::playNotification(CNotificationSounds::NotificationFlag notification, bool considerSettings, int volume) const
{ {
this->m_dBusInterface->callDBus(QLatin1String("playNotification"), notification, considerSettings); this->m_dBusInterface->callDBus(QLatin1String("playNotification"), notification, considerSettings, volume);
} }
void CContextAudioProxy::setVoiceOutputVolume(int volume) void CContextAudioProxy::setVoiceOutputVolume(int volume)

View File

@@ -80,7 +80,7 @@ namespace BlackCore
virtual void setMute(bool muted) override; virtual void setMute(bool muted) override;
virtual bool isMuted() const override; virtual bool isMuted() const override;
virtual void playSelcalTone(const BlackMisc::Aviation::CSelcal &selcal) const override; virtual void playSelcalTone(const BlackMisc::Aviation::CSelcal &selcal) const override;
virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings) const override; virtual void playNotification(BlackMisc::Audio::CNotificationSounds::NotificationFlag notification, bool considerSettings, int volume = -1) const override;
virtual void enableAudioLoopback(bool enable = true) override; virtual void enableAudioLoopback(bool enable = true) override;
virtual bool isAudioLoopbackEnabled() const override; virtual bool isAudioLoopbackEnabled() const override;
virtual bool parseCommandLine(const QString &commandLine, const BlackMisc::CIdentifier &originator) override; virtual bool parseCommandLine(const QString &commandLine, const BlackMisc::CIdentifier &originator) override;

View File

@@ -104,6 +104,8 @@ namespace BlackGui
Q_ASSERT(c); Q_ASSERT(c);
c = connect(ui->pb_SoundDir, &QPushButton::released, this, &CAudioSetupComponent::selectNotificationSoundsDir, Qt::QueuedConnection); c = connect(ui->pb_SoundDir, &QPushButton::released, this, &CAudioSetupComponent::selectNotificationSoundsDir, Qt::QueuedConnection);
Q_ASSERT(c); Q_ASSERT(c);
c = connect(ui->sb_NotificationValueVolume, qOverload<int>(&QSpinBox::valueChanged), this, &CAudioSetupComponent::onVolumeChanged);
Q_ASSERT(c);
} }
Q_UNUSED(c); Q_UNUSED(c);
} }
@@ -135,6 +137,7 @@ namespace BlackGui
ui->cb_SetupAudioNoTransmission->setChecked(as.isNotificationFlagSet(CNotificationSounds::NotificationNoAudioTransmission)); ui->cb_SetupAudioNoTransmission->setChecked(as.isNotificationFlagSet(CNotificationSounds::NotificationNoAudioTransmission));
ui->le_SoundDir->setText(as.getNotificationSoundDirectory()); ui->le_SoundDir->setText(as.getNotificationSoundDirectory());
ui->sb_NotificationValueVolume->setValue(as.getNotificationVolume());
} }
void CAudioSetupComponent::initAudioDeviceLists() void CAudioSetupComponent::initAudioDeviceLists()
@@ -149,6 +152,15 @@ namespace BlackGui
return sGui && sGui->getIContextAudio() && !sGui->getIContextAudio()->isEmptyObject(); return sGui && sGui->getIContextAudio() && !sGui->getIContextAudio()->isEmptyObject();
} }
void CAudioSetupComponent::onVolumeChanged(int volume)
{
volume = qMax(25, qMin(100, volume));
CSettings as(m_audioSettings.getThreadLocal());
if (as.getNotificationVolume() == volume) { return; }
as.setNotificationVolume(volume);
m_audioSettings.set(as);
}
CNotificationSounds::NotificationFlag CAudioSetupComponent::checkBoxToFlag(const QCheckBox *cb) const CNotificationSounds::NotificationFlag CAudioSetupComponent::checkBoxToFlag(const QCheckBox *cb) const
{ {
if (!cb) { return CNotificationSounds::NoNotifications; } if (!cb) { return CNotificationSounds::NoNotifications; }
@@ -252,7 +264,7 @@ namespace BlackGui
if (checked && this->hasAudio() && sender) if (checked && this->hasAudio() && sender)
{ {
const CNotificationSounds::NotificationFlag f = this->checkBoxToFlag(sender); const CNotificationSounds::NotificationFlag f = this->checkBoxToFlag(sender);
sGui->getIContextAudio()->playNotification(f, false); sGui->getIContextAudio()->playNotification(f, false, as.getNotificationVolume());
} }
} }

View File

@@ -76,6 +76,9 @@ namespace BlackGui
//! Audio is optional, check if available //! Audio is optional, check if available
bool hasAudio() const; bool hasAudio() const;
//! Volume has been changed
void onVolumeChanged(int volume);
//! CheckBox to flag //! CheckBox to flag
BlackMisc::Audio::CNotificationSounds::NotificationFlag checkBoxToFlag(const QCheckBox *cb) const; BlackMisc::Audio::CNotificationSounds::NotificationFlag checkBoxToFlag(const QCheckBox *cb) const;

View File

@@ -108,14 +108,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="4" column="0">
<widget class="QLabel" name="lbl_SoundDirectory"> <widget class="QLabel" name="lbl_SoundDirectory">
<property name="text"> <property name="text">
<string>Dir.:</string> <string>Dir.:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="4" column="1">
<widget class="QWidget" name="wi_SoundDir" native="true"> <widget class="QWidget" name="wi_SoundDir" native="true">
<layout class="QHBoxLayout" name="hl_SoundDir" stretch="0,0,0"> <layout class="QHBoxLayout" name="hl_SoundDir" stretch="0,0,0">
<property name="leftMargin"> <property name="leftMargin">
@@ -154,7 +154,7 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="5" column="0">
<widget class="QLabel" name="lbl_Notifications"> <widget class="QLabel" name="lbl_Notifications">
<property name="toolTip"> <property name="toolTip">
<string>Notifications</string> <string>Notifications</string>
@@ -164,6 +164,22 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1">
<widget class="QSpinBox" name="sb_NotificationValueVolume">
<property name="suffix">
<string> volume 25-100 (notifications)</string>
</property>
<property name="minimum">
<number>25</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>90</number>
</property>
</widget>
</item>
<item row="6" column="1"> <item row="6" column="1">
<widget class="QCheckBox" name="cb_SetupAudioNotificationTextMessagePrivate"> <widget class="QCheckBox" name="cb_SetupAudioNotificationTextMessagePrivate">
<property name="text"> <property name="text">
@@ -245,7 +261,6 @@
<tabstop>le_SoundDir</tabstop> <tabstop>le_SoundDir</tabstop>
<tabstop>pb_SoundReset</tabstop> <tabstop>pb_SoundReset</tabstop>
<tabstop>pb_SoundDir</tabstop> <tabstop>pb_SoundDir</tabstop>
<tabstop>cb_SetupAudioNotificationTextMessagePrivate</tabstop>
<tabstop>cb_SetupAudioNotificationTextMessageSupervisor</tabstop> <tabstop>cb_SetupAudioNotificationTextMessageSupervisor</tabstop>
<tabstop>cb_SetupAudioNotificationTextCallsignMentioned</tabstop> <tabstop>cb_SetupAudioNotificationTextCallsignMentioned</tabstop>
<tabstop>cb_SetupAudioNotificationVoiceRoomJoined</tabstop> <tabstop>cb_SetupAudioNotificationVoiceRoomJoined</tabstop>