/* * 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: git://neueland.iserlohn-fortress.net/smolbote.git * * SPDX-License-Identifier: GPL-3.0 */ #ifndef WEBVIEWTABBAR_H #define WEBVIEWTABBAR_H #include "webengine/webengineprofile.h" #include "webengine/webview.h" #include #include class Configuration; class MainWindow; class MainWindowTabBar : public QTabBar { Q_OBJECT public: explicit MainWindowTabBar(const std::shared_ptr &config, MainWindow *parent = nullptr); ~MainWindowTabBar(); 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); QSize tabSizeHint(int index) const; private slots: void handleCurrentChanged(int index); void updateTabText(WebView *view, const QString &text); 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; MainWindow *m_parent; }; WebView *createWebView(const QUrl &url, WebEngineProfile *profile, MainWindow *parent); #endif // WEBVIEWTABBAR_H