Chatterino
WindowDescriptors.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QJsonObject>
4 #include <QList>
5 #include <QRect>
6 #include <QString>
7 #include <QUuid>
8 
9 #include <optional>
10 #include <variant>
11 
12 namespace chatterino {
13 
28 // from widgets/Window.hpp
29 enum class WindowType;
30 
32  // Twitch or mentions or watching or whispers or IRC
33  QString type_;
34 
35  // Twitch Channel name or IRC channel name
36  QString channelName_;
37 
38  // IRC server
39  int server_{-1};
40 
41  // Whether "Moderation Mode" (the sword icon) is enabled in this split or not
42  bool moderationMode_{false};
43 
44  QList<QUuid> filters_;
45 
46  static void loadFromJSON(SplitDescriptor &descriptor,
47  const QJsonObject &root, const QJsonObject &data);
48 };
49 
51  qreal flexH_ = 1;
52  qreal flexV_ = 1;
53 };
54 
56 
57 using NodeDescriptor =
58  std::variant<ContainerNodeDescriptor, SplitNodeDescriptor>;
59 
61  qreal flexH_ = 1;
62  qreal flexV_ = 1;
63 
64  bool vertical_ = false;
65 
66  std::vector<NodeDescriptor> items_;
67 };
68 
69 struct TabDescriptor {
70  static TabDescriptor loadFromJSON(const QJsonObject &root);
71 
72  QString customTitle_;
73  bool selected_{false};
74  bool highlightsEnabled_{true};
75 
76  std::optional<NodeDescriptor> rootNode_;
77 };
78 
80  enum class State {
81  None,
82  Minimized,
83  Maximized,
84  };
85 
87  State state_ = State::None;
88 
89  QRect geometry_;
90 
91  std::vector<TabDescriptor> tabs_;
92 };
93 
95 {
96 public:
97  static WindowLayout loadFromFile(const QString &path);
98 
99  // A complete window layout has a single emote popup position that is shared among all windows
101 
102  std::vector<WindowDescriptor> windows_;
103 };
104 
105 } // namespace chatterino
QPoint emotePopupPos_
Definition: WindowDescriptors.hpp:100
QString channelName_
Definition: WindowDescriptors.hpp:36
Definition: WindowDescriptors.hpp:60
WindowType
Definition: Window.hpp:17
std::vector< WindowDescriptor > windows_
Definition: WindowDescriptors.hpp:102
QString customTitle_
Definition: WindowDescriptors.hpp:72
Definition: Application.cpp:48
QString type_
Definition: WindowDescriptors.hpp:33
static void loadFromJSON(SplitDescriptor &descriptor, const QJsonObject &root, const QJsonObject &data)
Definition: WindowDescriptors.cpp:95
std::variant< ContainerNodeDescriptor, SplitNodeDescriptor > NodeDescriptor
Definition: WindowDescriptors.hpp:58
std::optional< NodeDescriptor > rootNode_
Definition: WindowDescriptors.hpp:76
Definition: WindowDescriptors.hpp:79
QList< QUuid > filters_
Definition: WindowDescriptors.hpp:44
Definition: WindowDescriptors.hpp:69
std::vector< NodeDescriptor > items_
Definition: WindowDescriptors.hpp:66
Definition: WindowDescriptors.hpp:31
WindowType type_
Definition: WindowDescriptors.hpp:86
Definition: WindowDescriptors.hpp:50
bool moderationMode_
Definition: WindowDescriptors.hpp:42
std::vector< TabDescriptor > tabs_
Definition: WindowDescriptors.hpp:91
State
Definition: WindowDescriptors.hpp:80
Definition: WindowDescriptors.hpp:94
QRect geometry_
Definition: WindowDescriptors.hpp:89
int server_
Definition: WindowDescriptors.hpp:39