Chatterino
ChannelChatters.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "common/Channel.hpp"
4 #include "common/ChatterSet.hpp"
6 #include "lrucache/lrucache.hpp"
7 #include "util/QStringHash.hpp"
8 
9 #include <QRgb>
10 
11 namespace chatterino {
12 
14 {
15 public:
16  ChannelChatters(Channel &channel);
17  virtual ~ChannelChatters() = default; // add vtable
18 
20 
21  void addRecentChatter(const QString &user);
22  void addJoinedUser(const QString &user);
23  void addPartedUser(const QString &user);
24  const QColor getUserColor(const QString &user);
25  void setUserColor(const QString &user, const QColor &color);
26  void updateOnlineChatters(const std::unordered_set<QString> &usernames);
27 
28  // colorsSize returns the amount of colors stored in `chatterColors_`
29  // NOTE: This function is only meant to be used in tests and benchmarks
30  size_t colorsSize() const;
31 
32  static constexpr int maxChatterColorCount = 5000;
33 
34 private:
35  Channel &channel_;
36 
37  // maps 2 char prefix to set of names
38  UniqueAccess<ChatterSet> chatters_;
40 
41  // combines multiple joins/parts into one message
42  UniqueAccess<QStringList> joinedUsers_;
43  bool joinedUsersMergeQueued_ = false;
44  UniqueAccess<QStringList> partedUsers_;
45  bool partedUsersMergeQueued_ = false;
46 
47  QObject lifetimeGuard_;
48 };
49 
50 } // namespace chatterino
Definition: UniqueAccess.hpp:10
Definition: Application.cpp:48
void setUserColor(const QString &user, const QColor &color)
Definition: ChannelChatters.cpp:104
void addJoinedUser(const QString &user)
Definition: ChannelChatters.cpp:26
void addRecentChatter(const QString &user)
Definition: ChannelChatters.cpp:20
static constexpr int maxChatterColorCount
Definition: ChannelChatters.hpp:32
size_t colorsSize() const
Definition: ChannelChatters.cpp:83
SharedAccessGuard< const ChatterSet > accessChatters() const
Definition: ChannelChatters.cpp:15
Definition: UniqueAccess.hpp:53
const QColor getUserColor(const QString &user)
Definition: ChannelChatters.cpp:89
Definition: Channel.hpp:30
void addPartedUser(const QString &user)
Definition: ChannelChatters.cpp:51
virtual ~ChannelChatters()=default
Definition: ChannelChatters.hpp:13
ChannelChatters(Channel &channel)
Definition: ChannelChatters.cpp:9
void updateOnlineChatters(const std::unordered_set< QString > &usernames)
Definition: ChannelChatters.cpp:76