#ifndef RIBBON_H #define RIBBON_H #include #include #include #include #include #include #include #include #include #include #include "etabwidget.h" class Ribbon: public QToolBar { Q_OBJECT public: explicit Ribbon(QMainWindow * parent = 0); ~Ribbon(); void init(); void retranslate(); void setIconSize(const QSize & size); void setTabIconSize(const QSize & size); void setButtonStyle(const Qt::ToolButtonStyle & style) {foreach (QToolButton * i, buttons) i->setToolButtonStyle(style);} void setAutoSwitchEnabled(bool yes) {delay_e = yes;} void setAutoSwitchDelay(float delay_s) {delay = delay_s * 1000;} void setCurrentTab(int tab_) {if (tab_ < 0 || tab_ >= tab->count()) return; tab->setCurrentIndex(tab_);} int currentTab() const {return tab->currentIndex();} QTabWidget * tabWidget() const {return tab;} private: bool eventFilter(QObject * o, QEvent * e); void timerEvent(QTimerEvent * e); void _resize(); void _setIconsSize(); int hovered, delay; bool delay_e; QList buttons; QMap hovers; ETabWidget * tab; QScrollArea * scroll_area; QMainWindow * parent; private slots: void tabHovered(int tab) {if (!delay_e) return; hovers.clear(); hovered = tab; hovers.insert(startTimer(delay), tab);} public slots: void setVisible(bool yes); void setHidden(bool yes) {setVisible(!yes);} void show() {setVisible(true);} void hide() {setVisible(false);} signals: void currentTabChanged(int); }; #endif // RIBBON_H