30#ifndef FANCYTABWIDGET_H
31#define FANCYTABWIDGET_H
40#include <QPropertyAnimation>
60 void drawControl(ControlElement element,
const QStyleOption* option,
61 QPainter* painter,
const QWidget* widget)
const override;
62 void polish(QWidget* widget)
override;
63 void polish(QApplication* app)
override;
64 void polish(QPalette &palette)
override;
67 bool eventFilter(QObject* o, QEvent* e)
override;
74 Q_PROPERTY(
float fader READ fader WRITE setFader)
77 float fader() {
return m_fader; }
78 void setFader(
float value);
80 QSize sizeHint()
const override;
89 void enterEvent(QEnterEvent *event)
override;
90 void leaveEvent(QEvent*)
override;
93 QPropertyAnimation animator;
106 void paintEvent(QPaintEvent* event)
override;
107 void paintTab(QPainter* painter,
int tabIndex)
const;
108 void mousePressEvent(QMouseEvent*)
override;
109 bool validIndex(
int index)
const {
return index >= 0 && index < m_tabs.count(); }
111 QSize sizeHint()
const override;
112 QSize minimumSizeHint()
const override;
114 void addTab(
const QIcon &icon,
const QString &label);
115 void addSpacer(
int size = 40);
117 FancyTab* tab = m_tabs.takeAt(index);
120 void setCurrentIndex(
int index);
123 void setTabToolTip(
int index,
const QString &toolTip);
124 QString tabToolTip(
int index)
const;
126 QIcon
tabIcon(
int index)
const {
return m_tabs.at(index)->icon; }
127 QString
tabText(
int index)
const {
return m_tabs.at(index)->text; }
128 int count()
const {
return m_tabs.count(); }
129 QRect tabRect(
int index)
const;
135 void emitCurrentIndex();
138 static const int m_rounding;
139 static const int m_textPadding;
141 QList<FancyTab*> m_tabs;
142 QTimer m_triggerTimer;
143 QSize tabSizeHint(
bool minimum =
false)
const;
151 Q_PROPERTY(QPixmap bgPixmap READ bgPixmap WRITE SetBackgroundPixmap)
160 Mode_LargeSidebar = 1,
161 Mode_SmallSidebar = 2,
163 Mode_IconOnlyTabs = 4,
164 Mode_PlainSidebar = 5,
168 Item(
const QIcon &icon,
const QString &label)
169 : type_(Type_Tab), tab_label_(label), tab_icon_(icon), spacer_size_(0) {}
170 Item(
int size) : type_(Type_Spacer), spacer_size_(size) {}
183 void AddTab(QWidget* tab,
const QIcon &icon,
const QString &label);
184 void AddSpacer(
int size = 40);
185 void SetBackgroundPixmap(
const QPixmap &pixmap);
187 void AddBottomWidget(QWidget* widget);
189 int current_index()
const;
194 void SetCurrentIndex(
int index);
203 void paintEvent(QPaintEvent* event)
override;
204 void contextMenuEvent(QContextMenuEvent* e)
override;
207 void ShowWidget(
int index);
210 void MakeTabBar(QTabBar::Shape shape,
bool text,
bool icons,
bool fancy);
211 void AddMenuItem(QSignalMapper* mapper, QActionGroup* group,
212 const QString &text,
Mode mode);
218 QStackedLayout* stack_;
219 QPixmap background_pixmap_;
220 QWidget* side_widget_;
221 QVBoxLayout* side_layout_;
222 QVBoxLayout* top_layout_;
224 bool use_background_;
QIcon tabIcon(int index) const
bool validIndex(int index) const
QString tabText(int index) const
void removeTab(int index)
int value(const QColor &c)