aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/webviewtabbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/webviewtabbar.cpp')
-rw-r--r--src/widgets/webviewtabbar.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/widgets/webviewtabbar.cpp b/src/widgets/webviewtabbar.cpp
new file mode 100644
index 0000000..59e5c69
--- /dev/null
+++ b/src/widgets/webviewtabbar.cpp
@@ -0,0 +1,50 @@
+#include "webviewtabbar.h"
+
+WebViewTabBar::WebViewTabBar(QWidget *parent) :
+ QTabBar(parent)
+{
+ setTabsClosable(true);
+ connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(handleTabClose(int)));
+ connect(this, SIGNAL(currentChanged(int)), this, SLOT(handleCurrentChanged(int)));
+}
+
+WebViewTabBar::~WebViewTabBar()
+{
+ // cleanup
+ qDeleteAll(m_views);
+ m_views.clear();
+}
+
+int WebViewTabBar::addTab(QWebEngineView *view)
+{
+ m_views.append(view);
+ //connect(view, SIGNAL(titleChanged()), this, SLOT(updateTabText()));
+ connect(view, &QWebEngineView::titleChanged, [this, view](const QString &title) {
+ int index = m_views.indexOf(view);
+ setTabText(index, title);
+ });
+ return QTabBar::addTab("New Tab");
+}
+
+QWebEngineView *WebViewTabBar::currentView()
+{
+ return m_views.at(currentIndex());
+}
+
+void WebViewTabBar::handleCurrentChanged(int index)
+{
+ emit(currentTabChanged(m_views.at(index)));
+}
+
+void WebViewTabBar::handleTabClose(int index)
+{
+ removeTab(index);
+ m_views.at(index)->deleteLater();
+ m_views.remove(index);
+}
+
+void WebViewTabBar::updateTabText(QWebEngineView *view, const QString &text)
+{
+ int index = m_views.indexOf(view);
+ setTabText(index, text);
+}