Chatterino
NotebookTab.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "common/Common.hpp"
4 #include "widgets/BaseWidget.hpp"
5 #include "widgets/Notebook.hpp"
7 
8 #include <QMenu>
9 #include <QPropertyAnimation>
10 #include <pajlada/settings/setting.hpp>
11 #include <pajlada/signals/signalholder.hpp>
12 
13 namespace chatterino {
14 
15 #define NOTEBOOK_TAB_HEIGHT 28
16 
17 // class Notebook;
18 class Notebook;
19 class SplitContainer;
20 
21 class NotebookTab : public Button
22 {
23  Q_OBJECT
24 
25 public:
26  explicit NotebookTab(Notebook *notebook);
27 
28  void updateSize();
29 
30  QWidget *page;
31 
32  void setCustomTitle(const QString &title);
33  void resetCustomTitle();
34  bool hasCustomTitle() const;
35  const QString &getCustomTitle() const;
36  void setDefaultTitle(const QString &title);
37  const QString &getDefaultTitle() const;
38  const QString &getTitle() const;
39 
40  bool isSelected() const;
41  void setSelected(bool value);
42 
43  void setInLastRow(bool value);
44  void setTabLocation(NotebookTabLocation location);
45 
46  void setLive(bool isLive);
48  void setHighlightsEnabled(const bool &newVal);
49  bool hasHighlightsEnabled() const;
50 
51  void moveAnimated(QPoint pos, bool animated = true);
52 
53  QRect getDesiredRect() const;
54  void hideTabXChanged();
55 
56  void growWidth(int width);
57  int normalTabWidth();
58 
59 protected:
60  virtual void themeChangedEvent() override;
61 
62  virtual void paintEvent(QPaintEvent *) override;
63 
64  virtual void mousePressEvent(QMouseEvent *event) override;
65  virtual void mouseReleaseEvent(QMouseEvent *event) override;
66  virtual void mouseDoubleClickEvent(QMouseEvent *event) override;
67  virtual void enterEvent(QEvent *) override;
68  virtual void leaveEvent(QEvent *) override;
69 
70  virtual void dragEnterEvent(QDragEnterEvent *event) override;
71 
72  virtual void mouseMoveEvent(QMouseEvent *event) override;
73  virtual void wheelEvent(QWheelEvent *event) override;
74 
75 private:
76  void showRenameDialog();
77 
78  bool hasXButton();
79  bool shouldDrawXButton();
80  QRect getXRect();
81  void titleUpdated();
82 
83  QPropertyAnimation positionChangedAnimation_;
84  bool positionChangedAnimationRunning_ = false;
85  QPoint positionAnimationDesiredPoint_;
86 
87  Notebook *notebook_;
88 
89  QString customTitle_;
90  QString defaultTitle_;
91 
92  bool selected_{};
93  bool mouseOver_{};
94  bool mouseDown_{};
95  bool mouseOverX_{};
96  bool mouseDownX_{};
97  bool isInLastRow_{};
98  int mouseWheelDelta_ = 0;
100 
101  HighlightState highlightState_ = HighlightState::None;
102  bool highlightEnabled_ = true;
103  QAction *highlightNewMessagesAction_;
104 
105  bool isLive_{};
106 
107  int growWidth_ = 0;
108 
109  QMenu menu_;
110 
111  pajlada::Signals::SignalHolder managedConnections_;
112 };
113 
114 } // namespace chatterino
virtual void mouseReleaseEvent(QMouseEvent *event) override
Definition: NotebookTab.cpp:627
virtual void enterEvent(QEvent *) override
Definition: NotebookTab.cpp:676
const QString & getDefaultTitle() const
Definition: NotebookTab.cpp:277
virtual void leaveEvent(QEvent *) override
Definition: NotebookTab.cpp:685
void growWidth(int width)
Definition: NotebookTab.cpp:180
void setTabLocation(NotebookTabLocation location)
Definition: NotebookTab.cpp:320
void updateSize()
Definition: NotebookTab.cpp:222
Definition: Application.cpp:48
QRect getDesiredRect() const
Definition: NotebookTab.cpp:364
void setInLastRow(bool value)
Definition: NotebookTab.cpp:311
QWidget * page
Definition: NotebookTab.hpp:30
void setHighlightState(HighlightState style)
Definition: NotebookTab.cpp:338
bool hasCustomTitle() const
Definition: NotebookTab.cpp:259
HighlightState
Definition: Common.hpp:16
const QString & getTitle() const
Definition: NotebookTab.cpp:282
Definition: NotebookTab.hpp:21
NotebookTab(Notebook *notebook)
Definition: NotebookTab.cpp:62
virtual void wheelEvent(QWheelEvent *event) override
Definition: NotebookTab.cpp:743
void setCustomTitle(const QString &title)
Definition: NotebookTab.cpp:245
bool hasHighlightsEnabled() const
Definition: NotebookTab.cpp:359
void setHighlightsEnabled(const bool &newVal)
Definition: NotebookTab.cpp:353
Definition: Button.hpp:16
virtual void mouseMoveEvent(QMouseEvent *event) override
Definition: NotebookTab.cpp:709
virtual void mouseDoubleClickEvent(QMouseEvent *event) override
Definition: NotebookTab.cpp:667
void hideTabXChanged()
Definition: NotebookTab.cpp:369
NotebookTabLocation
Definition: Notebook.hpp:20
virtual void dragEnterEvent(QDragEnterEvent *event) override
Definition: NotebookTab.cpp:695
void setDefaultTitle(const QString &title)
Definition: NotebookTab.cpp:264
virtual void paintEvent(QPaintEvent *) override
Definition: NotebookTab.cpp:402
const QString & getCustomTitle() const
Definition: NotebookTab.cpp:240
Definition: Notebook.hpp:22
virtual void themeChangedEvent() override
Definition: NotebookTab.cpp:172
void resetCustomTitle()
Definition: NotebookTab.cpp:254
virtual void mousePressEvent(QMouseEvent *event) override
Definition: NotebookTab.cpp:602
Definition: Notebook.hpp:20
bool isSelected() const
Definition: NotebookTab.cpp:297
void setLive(bool isLive)
Definition: NotebookTab.cpp:329
void setSelected(bool value)
Definition: NotebookTab.cpp:302
int normalTabWidth()
Definition: NotebookTab.cpp:193
void moveAnimated(QPoint pos, bool animated=true)
Definition: NotebookTab.cpp:375