/******************************************************************************* ** ** smolbote: yet another qute browser ** Copyright (C) 2017 Xian Nox ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . ** ******************************************************************************/ #ifndef WEBVIEWTABBAR_H #define WEBVIEWTABBAR_H #include #include "webengine/webview.h" #include "webengine/webengineprofile.h" #include class Configuration; class WebViewTabBar : public QTabBar { Q_OBJECT public: explicit WebViewTabBar(const std::shared_ptr &config, WebEngineProfile *profile = nullptr, QWidget *parent = 0); ~WebViewTabBar(); void setProfile(WebEngineProfile *profile); WebEngineProfile *profile(); WebView *currentView(); signals: void currentTabChanged(WebView *view); public slots: int addTab(const QUrl &url); 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; WebEngineProfile *m_profile = nullptr; }; #endif // WEBVIEWTABBAR_H