Chatterino
SplitOverlay.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QGridLayout>
4 #include <QPushButton>
5 
6 #include "pajlada/signals/signalholder.hpp"
7 #include "widgets/BaseWidget.hpp"
8 
9 namespace chatterino {
10 
11 class Split;
12 
13 class SplitOverlay : public BaseWidget
14 {
15 public:
16  explicit SplitOverlay(Split *parent = nullptr);
17 
18 protected:
19  // bool event(QEvent *event) override;
20  void paintEvent(QPaintEvent *event) override;
21  void resizeEvent(QResizeEvent *event) override;
22  void mouseMoveEvent(QMouseEvent *event) override;
23 
24 private:
25  // fourtf: !!! preserve the order of left, up, right and down
26  enum HoveredElement {
27  None,
28  SplitMove,
29  SplitLeft,
30  SplitUp,
31  SplitRight,
32  SplitDown
33  };
34 
35  class ButtonEventFilter : public QObject
36  {
37  SplitOverlay *parent;
38  HoveredElement hoveredElement;
39 
40  public:
41  ButtonEventFilter(SplitOverlay *parent, HoveredElement hoveredElement);
42 
43  protected:
44  bool eventFilter(QObject *watched, QEvent *event) override;
45  };
46 
47  HoveredElement hoveredElement_ = None;
48  Split *split_;
49  QGridLayout *layout_;
50  QPushButton *left_;
51  QPushButton *up_;
52  QPushButton *right_;
53  QPushButton *down_;
54 
55  pajlada::Signals::SignalHolder signalHolder_;
56 
57  friend class ButtonEventFilter;
58 };
59 
60 } // namespace chatterino
friend class ButtonEventFilter
Definition: SplitOverlay.hpp:57
Definition: Application.cpp:48
void mouseMoveEvent(QMouseEvent *event) override
Definition: SplitOverlay.cpp:157
void paintEvent(QPaintEvent *event) override
Definition: SplitOverlay.cpp:94
Definition: Split.hpp:36
void resizeEvent(QResizeEvent *event) override
Definition: SplitOverlay.cpp:145
Definition: SplitOverlay.hpp:13
Definition: SettingsDialogTab.hpp:16
Definition: BaseWidget.hpp:14
SplitOverlay(Split *parent=nullptr)
Definition: SplitOverlay.cpp:19