/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/smolbote.hg * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_TABBAR_H #define SMOLBOTE_TABBAR_H #include class MainWindow; class WebView; class WebEngineProfile; class QMenu; class TabBar : public QTabBar { Q_OBJECT public: explicit TabBar(const QHash &config, MainWindow *parent = nullptr); ~TabBar() override; void setProfile(WebEngineProfile *profile); WebView *currentView(); signals: void currentTabChanged(WebView *view); public slots: int addTab(WebView *view); void removeTab(int index); protected: void contextMenuEvent(QContextMenuEvent *event) override; QSize tabSizeHint(int index) const override; private slots: void handleCurrentChanged(int index); void updateVectorArrangement(int from, int to); private: // store all views in a vector since tabs can only store a QVariant, and that can't easily take a pointer QVector m_views; QMenu *tabContextMenu; QAction *newTab_action; QAction *closeTab_action; QAction *leftTab_action; QAction *rightTab_action; }; #endif // SMOLBOTE_TABBAR_H