mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 19:35:33 +08:00
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:
committed by
Mat Sutcliffe
parent
90b893c62a
commit
427c23c5e4
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user