Chatterino
CompletionModel.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QAbstractListModel>
4 
5 #include <chrono>
6 #include <mutex>
7 #include <set>
8 
9 namespace chatterino {
10 
11 class Channel;
12 
13 class CompletionModel : public QAbstractListModel
14 {
15  struct TaggedString {
16  enum Type {
17  Username,
18 
19  // emotes
20  EmoteStart,
21  FFZGlobalEmote,
22  FFZChannelEmote,
23  BTTVGlobalEmote,
24  BTTVChannelEmote,
25  SeventvGlobalEmote,
26  SeventvChannelEmote,
27  TwitchGlobalEmote,
28  TwitchLocalEmote,
29  TwitchSubscriberEmote,
30  Emoji,
31  EmoteEnd,
32  // end emotes
33 
34  CustomCommand,
35  ChatterinoCommand,
36  TwitchCommand,
37  };
38 
39  TaggedString(const QString &string, Type type);
40 
41  bool isEmote() const;
42  bool operator<(const TaggedString &that) const;
43 
44  QString string;
45  Type type;
46  };
47 
48 public:
49  CompletionModel(Channel &channel);
50 
51  virtual int columnCount(const QModelIndex &) const override;
52  virtual QVariant data(const QModelIndex &index, int) const override;
53  virtual int rowCount(const QModelIndex &) const override;
54 
55  void refresh(const QString &prefix, bool isFirstWord = false);
56 
57  static bool compareStrings(const QString &a, const QString &b);
58 
59 private:
60  std::set<TaggedString> items_;
61  mutable std::mutex itemsMutex_;
62  Channel &channel_;
63 };
64 
65 } // namespace chatterino
Definition: Settings.hpp:58
virtual QVariant data(const QModelIndex &index, int) const override
Definition: CompletionModel.cpp:60
virtual int rowCount(const QModelIndex &) const override
Definition: CompletionModel.cpp:69
static bool compareStrings(const QString &a, const QString &b)
Definition: CompletionModel.cpp:242
Definition: Application.cpp:48
Definition: Channel.hpp:30
void refresh(const QString &prefix, bool isFirstWord=false)
Definition: CompletionModel.cpp:76
virtual int columnCount(const QModelIndex &) const override
Definition: CompletionModel.cpp:55
Definition: CompletionModel.hpp:13
CompletionModel(Channel &channel)
Definition: CompletionModel.cpp:50