swift
textmessage.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #include "core/fsd/textmessage.h"
5 
6 #include "misc/logmessage.h"
7 
8 namespace swift::core::fsd
9 {
10  TextMessage::TextMessage() : MessageBase() {}
11 
12  TextMessage::TextMessage(const QString &sender, const QString &receiver, const QString &message)
13  : MessageBase(sender, receiver), m_message(message)
14  {
15  if (receiver.startsWith('@'))
16  {
17  m_type = RadioMessage;
18  const QStringList frequencyStrings = receiver.split('&');
19  if (!frequencyStrings.isEmpty())
20  {
21  for (QString frequencyString : frequencyStrings)
22  {
23  frequencyString.remove(0, 1);
24  int frequency = frequencyString.toInt() + 100000;
25  m_frequencies.push_back(frequency);
26  }
27  }
28  }
29  }
30 
31  QStringList TextMessage::toTokens() const
32  {
33  QStringList tokens;
34  tokens.push_back(m_sender);
35  tokens.push_back(m_receiver);
36  tokens.push_back(m_message);
37  return tokens;
38  }
39 
40  TextMessage TextMessage::fromTokens(const QStringList &tokens)
41  {
42  if (tokens.size() < 3)
43  {
44  swift::misc::CLogMessage(static_cast<TextMessage *>(nullptr)).warning(u"Wrong number of arguments.");
45  return {};
46  };
47 
48  QStringList messageTokens = tokens.mid(2);
49  return TextMessage(tokens[0], tokens[1], messageTokens.join(":"));
50  }
51 } // namespace swift::core::fsd
FSD message base class.
Definition: messagebase.h:58
QString m_receiver
message receiver
Definition: messagebase.h:89
QString m_sender
message sender
Definition: messagebase.h:88
QString receiver() const
Get message receiver.
Definition: messagebase.h:79
Text, radio or private message.
Definition: textmessage.h:19
static TextMessage fromTokens(const QStringList &tokens)
Construct from tokens.
Definition: textmessage.cpp:40
QString m_message
message text
Definition: textmessage.h:40
QStringList toTokens() const
Message converted to tokens.
Definition: textmessage.cpp:31
QVector< int > m_frequencies
frequencies in case of radio message.
Definition: textmessage.h:42
Class for emitting a log message.
Definition: logmessage.h:27
Derived & warning(const char16_t(&format)[N])
Set the severity to warning, providing a format string.