Ref T494, play notification for callsign mentioned

* added audio settings in text message component
* play sound for callsign mentioned in text body
This commit is contained in:
Klaus Basan
2018-12-31 10:57:31 +01:00
committed by Mat Sutcliffe
parent 90b893c62a
commit 427c23c5e4
2 changed files with 18 additions and 6 deletions

View File

@@ -104,7 +104,7 @@ namespace BlackGui
QTimer::singleShot(2000, this, [ = ] QTimer::singleShot(2000, this, [ = ]
{ {
// init decoupled when sub components are fully init // init decoupled when sub components are fully init
if (!myself) { return; } if (!myself || !sGui || sGui->isShuttingDown()) { return; }
this->onSettingsChanged(); this->onSettingsChanged();
this->onChangedAircraftCockpit(); this->onChangedAircraftCockpit();
}); });
@@ -155,15 +155,18 @@ namespace BlackGui
bool CTextMessageComponent::isCloseableTab(const QWidget *tabWidget) const bool CTextMessageComponent::isCloseableTab(const QWidget *tabWidget) const
{ {
if (!tabWidget) { return false; } if (!tabWidget) { return false; }
return (tabWidget != ui->tb_TextMessagesAll && tabWidget != ui->tb_TextMessagesCOM1 && return (tabWidget != ui->tb_TextMessagesAll && tabWidget != ui->tb_TextMessagesCOM1 &&
tabWidget != ui->tb_TextMessagesCOM2 && tabWidget != ui->tb_TextMessagesUnicom); tabWidget != ui->tb_TextMessagesCOM2 && tabWidget != ui->tb_TextMessagesUnicom);
} }
void CTextMessageComponent::displayTextMessage(const CTextMessageList &messages) void CTextMessageComponent::displayTextMessage(const CTextMessageList &messages)
{ {
if (messages.isEmpty()) { return; } if (messages.isEmpty()) { return; }
if (!sGui || sGui->isShuttingDown()) { return; }
const CSimulatedAircraft ownAircraft(this->getOwnAircraft()); const CSimulatedAircraft ownAircraft(this->getOwnAircraft());
const CTextMessageSettings msgSettings(m_messageSettings.getThreadLocal()); const CTextMessageSettings msgSettings(m_messageSettings.getThreadLocal());
const bool playNotification = sGui && sGui->getIContextAudio();
const bool audioCsMentioned = playNotification && m_audioSettings.get().textCallsignMentioned();
for (const CTextMessage &message : messages) for (const CTextMessage &message : messages)
{ {
@@ -173,7 +176,7 @@ namespace BlackGui
if (!m_usedAsOverlayWidget && message.isSelcalMessage() && ownAircraft.isSelcalSelected(message.getSelcalCode())) if (!m_usedAsOverlayWidget && message.isSelcalMessage() && ownAircraft.isSelcalSelected(message.getSelcalCode()))
{ {
// this is SELCAL for me // this is SELCAL for me
if (sGui && sGui->getIContextAudio()) if (playNotification)
{ {
sGui->getIContextAudio()->playSelcalTone(message.getSelcalCode()); sGui->getIContextAudio()->playSelcalTone(message.getSelcalCode());
} }
@@ -206,6 +209,12 @@ namespace BlackGui
ui->tep_TextMessagesCOM2->insertTextMessage(message); ui->tep_TextMessagesCOM2->insertTextMessage(message);
relevantForMe = true; relevantForMe = true;
} }
// callsign mentioned notification
if (relevantForMe && audioCsMentioned && ownAircraft.hasCallsign() && message.mentionsCallsign(ownAircraft.getCallsign()))
{
sGui->getIContextAudio()->playNotification(CNotificationSounds::NotificationTextCallsignMentioned, false);
}
} }
else if (message.isPrivateMessage() && !message.isServerMessage()) else if (message.isPrivateMessage() && !message.isServerMessage())
{ {
@@ -219,7 +228,7 @@ namespace BlackGui
{ {
ui->tvp_TextMessagesAll->insert(message); ui->tvp_TextMessagesAll->insert(message);
} }
if (!relevantForMe) { return; } if (!relevantForMe) { continue; }
// overlay message if this channel is not selected // overlay message if this channel is not selected
if (!message.wasSent() && !message.isSendToUnicom() && !message.isServerMessage()) if (!message.wasSent() && !message.isSendToUnicom() && !message.isServerMessage())
@@ -408,7 +417,7 @@ namespace BlackGui
connect(closeButton, &QPushButton::released, this, &CTextMessageComponent::closeTextMessageTab); connect(closeButton, &QPushButton::released, this, &CTextMessageComponent::closeTextMessageTab);
connect(closeButtonInTab, &QPushButton::released, this, &CTextMessageComponent::closeTextMessageTab); connect(closeButtonInTab, &QPushButton::released, this, &CTextMessageComponent::closeTextMessageTab);
if (sGui && sGui->getIContextNetwork()) if (sGui && !sGui->isShuttingDown() && sGui->getIContextNetwork())
{ {
const QString realName = sGui->getIContextNetwork()->getUserForCallsign(CCallsign(tabName)).getRealName(); const QString realName = sGui->getIContextNetwork()->getUserForCallsign(CCallsign(tabName)).getRealName();
if (!realName.isEmpty()) { ui->tw_TextMessages->setTabToolTip(index, realName); } if (!realName.isEmpty()) { ui->tw_TextMessages->setTabToolTip(index, realName); }
@@ -430,7 +439,7 @@ namespace BlackGui
textEdit->insertTextMessage(textMessage); textEdit->insertTextMessage(textMessage);
// sound // sound
if (!m_usedAsOverlayWidget && sGui && !sGui->isShuttingDown() && sGui->getIContextAudio()) if (!m_usedAsOverlayWidget && sGui && !sGui->isShuttingDown() && sGui->getIContextAudio() && m_audioSettings.get().textMessagePrivate())
{ {
sGui->getIContextAudio()->playNotification(CNotificationSounds::NotificationTextMessagePrivate, true); sGui->getIContextAudio()->playNotification(CNotificationSounds::NotificationTextMessagePrivate, true);
} }

View File

@@ -16,6 +16,7 @@
#include "blackgui/settings/textmessagesettings.h" #include "blackgui/settings/textmessagesettings.h"
#include "blackgui/components/enablefordockwidgetinfoarea.h" #include "blackgui/components/enablefordockwidgetinfoarea.h"
#include "blackgui/blackguiexport.h" #include "blackgui/blackguiexport.h"
#include "blackmisc/audio/audiosettings.h"
#include "blackmisc/aviation/atcstation.h" #include "blackmisc/aviation/atcstation.h"
#include "blackmisc/simulation/simulatedaircraft.h" #include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/identifier.h" #include "blackmisc/identifier.h"
@@ -106,6 +107,7 @@ namespace BlackGui
QScopedPointer<Ui::CTextMessageComponent> ui; QScopedPointer<Ui::CTextMessageComponent> ui;
BlackMisc::CIdentifier m_identifier { "TextMessageComponent", this }; BlackMisc::CIdentifier m_identifier { "TextMessageComponent", this };
BlackMisc::CSetting<Settings::TextMessageSettings> m_messageSettings { this, &CTextMessageComponent::onSettingsChanged }; BlackMisc::CSetting<Settings::TextMessageSettings> m_messageSettings { this, &CTextMessageComponent::onSettingsChanged };
BlackMisc::CSetting<BlackMisc::Audio::TSettings> m_audioSettings { this };
bool m_usedAsOverlayWidget = false; //!< disables dockwidget parts if used as overlay widget bool m_usedAsOverlayWidget = false; //!< disables dockwidget parts if used as overlay widget
//! Enum to widget //! Enum to widget
@@ -207,4 +209,5 @@ namespace BlackGui
}; };
} // ns } // ns
} // ns } // ns
#endif // guard #endif // guard