aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/widgets/tabbar.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow/widgets/tabbar.h')
-rw-r--r--src/mainwindow/widgets/tabbar.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/mainwindow/widgets/tabbar.h b/src/mainwindow/widgets/tabbar.h
new file mode 100644
index 0000000..f4b7414
--- /dev/null
+++ b/src/mainwindow/widgets/tabbar.h
@@ -0,0 +1,56 @@
+/*
+ * 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 <QTabBar>
+
+class MainWindow;
+class WebView;
+class WebEngineProfile;
+class QMenu;
+class TabBar : public QTabBar
+{
+ Q_OBJECT
+
+public:
+ explicit TabBar(const QHash<QString, QString> &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<WebView *> m_views;
+
+ QMenu *tabContextMenu;
+
+ QAction *newTab_action;
+ QAction *closeTab_action;
+ QAction *leftTab_action;
+ QAction *rightTab_action;
+};
+
+#endif // SMOLBOTE_TABBAR_H