Chatterino
SharedMessageBuilder.hpp
Go to the documentation of this file.
2 
3 #include "common/Aliases.hpp"
4 #include "common/Outcome.hpp"
7 
8 #include <IrcMessage>
9 #include <QColor>
10 #include <QUrl>
11 
12 namespace chatterino {
13 
15 {
16 public:
17  SharedMessageBuilder() = delete;
18 
19  explicit SharedMessageBuilder(Channel *_channel,
20  const Communi::IrcPrivateMessage *_ircMessage,
21  const MessageParseArgs &_args);
22 
23  explicit SharedMessageBuilder(Channel *_channel,
24  const Communi::IrcMessage *_ircMessage,
25  const MessageParseArgs &_args,
26  QString content, bool isAction);
27 
28  QString userName;
29 
30  [[nodiscard]] virtual bool isIgnored() const;
31 
32  // triggerHighlights triggers any alerts or sounds parsed by parseHighlights
33  virtual void triggerHighlights();
34  virtual MessagePtr build() = 0;
35 
36  static std::pair<QString, QString> slashKeyValue(const QString &kvStr);
37 
38  // Parses "badges" tag which contains a comma separated list of key-value elements
39  static std::vector<Badge> parseBadgeTag(const QVariantMap &tags);
40 
41  static QString stylizeUsername(const QString &username,
42  const Message &message);
43 
44 protected:
45  virtual void parse();
46 
47  virtual void parseUsernameColor();
48 
49  virtual void parseUsername();
50 
51  virtual Outcome tryAppendEmote(const EmoteName &name)
52  {
53  return Failure;
54  }
55 
56  // parseHighlights only updates the visual state of the message, but leaves the playing of alerts and sounds to the triggerHighlights function
57  virtual void parseHighlights();
58 
59  void appendChannelName();
60 
62  const Communi::IrcMessage *ircMessage;
64  const QVariantMap tags;
66 
67  const bool action_{};
68 
69  QColor usernameColor_ = {153, 153, 153};
70 
71  bool highlightAlert_ = false;
72  bool highlightSound_ = false;
73 
75 };
76 
77 } // namespace chatterino
virtual void parseUsernameColor()
Definition: SharedMessageBuilder.cpp:126
QString userName
Definition: SharedMessageBuilder.hpp:28
QUrl highlightSoundUrl_
Definition: SharedMessageBuilder.hpp:74
bool highlightAlert_
Definition: SharedMessageBuilder.hpp:71
Channel * channel
Definition: SharedMessageBuilder.hpp:61
Definition: Application.cpp:48
virtual Outcome tryAppendEmote(const EmoteName &name)
Definition: SharedMessageBuilder.hpp:51
MessageParseArgs args
Definition: SharedMessageBuilder.hpp:63
virtual void parseUsername()
Definition: SharedMessageBuilder.cpp:134
virtual void parse()
Definition: SharedMessageBuilder.cpp:65
const FailureTag Failure
Definition: Outcome.hpp:12
static std::vector< Badge > parseBadgeTag(const QVariantMap &tags)
Definition: SharedMessageBuilder.cpp:93
virtual void triggerHighlights()
Definition: SharedMessageBuilder.cpp:208
QColor usernameColor_
Definition: SharedMessageBuilder.hpp:69
virtual MessagePtr build()=0
Definition: Channel.hpp:30
const bool action_
Definition: SharedMessageBuilder.hpp:67
virtual bool isIgnored() const
Definition: SharedMessageBuilder.cpp:119
Definition: MessageBuilder.hpp:53
bool highlightSound_
Definition: SharedMessageBuilder.hpp:72
const Communi::IrcMessage * ircMessage
Definition: SharedMessageBuilder.hpp:62
static std::pair< QString, QString > slashKeyValue(const QString &kvStr)
Definition: SharedMessageBuilder.cpp:82
static QString stylizeUsername(const QString &username, const Message &message)
Definition: SharedMessageBuilder.cpp:249
Definition: SharedMessageBuilder.hpp:14
std::shared_ptr< const Message > MessagePtr
Definition: Channel.hpp:18
Definition: Message.hpp:54
QString name
Definition: Credentials.cpp:94
const QVariantMap tags
Definition: SharedMessageBuilder.hpp:64
Definition: MessageBuilder.hpp:43
void appendChannelName()
Definition: SharedMessageBuilder.cpp:185
QString originalMessage_
Definition: SharedMessageBuilder.hpp:65
Message & message()
Definition: MessageBuilder.cpp:647
Definition: Outcome.hpp:14
virtual void parseHighlights()
Definition: SharedMessageBuilder.cpp:142