mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 08:36:52 +08:00
Ref T703, utility functions for "relayed messages" (i.e. copilot/pilot)
This commit is contained in:
committed by
Mat Sutcliffe
parent
25532497d6
commit
0a372edef6
@@ -49,6 +49,12 @@ namespace BlackMisc
|
||||
return m_message % u' ' % m_frequency.toQString(i18n);
|
||||
}
|
||||
|
||||
const QString &CTextMessage::swiftRelayMessage()
|
||||
{
|
||||
static const QString s("swift relayed: ");
|
||||
return s;
|
||||
}
|
||||
|
||||
bool CTextMessage::isPrivateMessage() const
|
||||
{
|
||||
return !m_senderCallsign.isEmpty() && !m_recipientCallsign.isEmpty();
|
||||
@@ -68,6 +74,34 @@ namespace BlackMisc
|
||||
}
|
||||
}
|
||||
|
||||
bool CTextMessage::isRelayedMessage() const
|
||||
{
|
||||
return m_relayedMessage || this->getMessage().startsWith(CTextMessage::swiftRelayMessage());
|
||||
}
|
||||
|
||||
void CTextMessage::makeRelayedMessage(const CCallsign &partnerCallsign)
|
||||
{
|
||||
if (this->getMessage().startsWith(CTextMessage::swiftRelayMessage())) { return; }
|
||||
this->markAsRelayedMessage();
|
||||
this->setRecipientCallsign(partnerCallsign);
|
||||
m_recipientCallsign.setTypeHint(CCallsign::Aircraft);
|
||||
const QString sender = this->getSenderCallsign().asString();
|
||||
const QString newMessage = CTextMessage::swiftRelayMessage() % sender % u";" % this->getMessage();
|
||||
m_message = newMessage;
|
||||
}
|
||||
|
||||
bool CTextMessage::relayedMessageToPrivateMessage()
|
||||
{
|
||||
if (!this->isRelayedMessage()) { return false; }
|
||||
const int index = m_message.indexOf(';');
|
||||
if (index < CTextMessage::swiftRelayMessage().length()) { return false; }
|
||||
if (m_message.length() <= index + 1) { return false; } // no next line
|
||||
const QString originalSender = m_message.left(index).remove(CTextMessage::swiftRelayMessage()).trimmed();
|
||||
this->setSenderCallsign(CCallsign(originalSender, CCallsign::Aircraft));
|
||||
m_message = m_message.mid(index + 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CTextMessage::canBeAppended(const CTextMessage &textMessage) const
|
||||
{
|
||||
if (textMessage.isEmpty()) { return false; }
|
||||
|
||||
Reference in New Issue
Block a user