aboutsummaryrefslogtreecommitdiff
path: root/src/subwindow
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-12-15 15:48:28 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-12-15 15:48:28 +0100
commit4066c1f093b572b949f9b1f5b0dc1c1a646b7552 (patch)
treed1b220e65ac6e8c527c107dc7386a38afb930374 /src/subwindow
parentAdd SaveSessionDialog (diff)
downloadsmolbote-4066c1f093b572b949f9b1f5b0dc1c1a646b7552.tar.xz
Move tab actions to Subwindow menu
Diffstat (limited to 'src/subwindow')
-rw-r--r--src/subwindow/subwindow.cpp55
-rw-r--r--src/subwindow/subwindow.h15
-rw-r--r--src/subwindow/tabwidget.cpp4
3 files changed, 45 insertions, 29 deletions
diff --git a/src/subwindow/subwindow.cpp b/src/subwindow/subwindow.cpp
index 4beba49..a83cf14 100644
--- a/src/subwindow/subwindow.cpp
+++ b/src/subwindow/subwindow.cpp
@@ -61,34 +61,6 @@ SubWindow::SubWindow(const Configuration *config, QWidget *parent, Qt::WindowFla
menu->insertSeparator(firstAction);
}
- // general actions
- auto *closeTab_shortcut = new QShortcut(QKeySequence(config->value<QString>("subwindow.shortcuts.close").value()), this);
- connect(closeTab_shortcut, &QShortcut::activated, this, [=]() {
- tabWidget->deleteTab(tabWidget->currentIndex());
- });
-
- auto *leftTab_shortcut = new QShortcut(QKeySequence(config->value<QString>("subwindow.shortcuts.left").value()), this);
- connect(leftTab_shortcut, &QShortcut::activated, this, [=]() {
- tabWidget->setCurrentIndex(qMax(0, tabWidget->currentIndex() - 1));
- });
-
- auto *moveTabLeft_shortcut = new QShortcut(QKeySequence(config->value<QString>("subwindow.shortcuts.moveLeft").value()), this);
- connect(moveTabLeft_shortcut, &QShortcut::activated, this, [=]() {
- auto idx = tabWidget->currentIndex();
- tabWidget->tabBar()->moveTab(idx, idx - 1);
- });
-
- auto *rightTab_shortcut = new QShortcut(QKeySequence(config->value<QString>("subwindow.shortcuts.right").value()), this);
- connect(rightTab_shortcut, &QShortcut::activated, this, [=]() {
- tabWidget->setCurrentIndex(qMin(tabWidget->currentIndex() + 1, tabWidget->count() - 1));
- });
-
- auto *moveTabRight_shortcut = new QShortcut(QKeySequence(config->value<QString>("subwindow.shortcuts.moveRight").value()), this);
- connect(moveTabRight_shortcut, &QShortcut::activated, this, [=]() {
- auto idx = tabWidget->currentIndex();
- tabWidget->tabBar()->moveTab(idx, idx + 1);
- });
-
auto *fullScreen_shortcut = new QShortcut(QKeySequence(config->value<QString>("subwindow.shortcuts.fullscreen").value()), this);
connect(fullScreen_shortcut, &QShortcut::activated, this, [=]() {
auto *w = this->window();
@@ -130,6 +102,11 @@ SubWindow::~SubWindow()
delete tabWidget;
}
+int SubWindow::currentTabIndex() const
+{
+ return tabWidget->currentIndex();
+}
+
WebView *SubWindow::currentView()
{
return qobject_cast<WebView *>(tabWidget->currentWidget());
@@ -164,6 +141,16 @@ WebProfile *SubWindow::profile() const
return m_profile;
}
+void SubWindow::setTabData(TabData &data, int index)
+{
+ tabWidget->tabBar()->setTabData(index, QVariant::fromValue<TabData>(data));
+}
+
+SubWindow::TabData SubWindow::tabData(int index) const
+{
+ return tabWidget->tabBar()->tabData(index).value<TabData>();
+}
+
int SubWindow::addTab(const QUrl &url, WebProfile *profile)
{
Q_CHECK_PTR(m_profile);
@@ -179,12 +166,22 @@ int SubWindow::addTab(const QUrl &url, WebProfile *profile)
return tabWidget->addTab(view);
}
+void SubWindow::closeTab(int index)
+{
+ tabWidget->deleteTab(index);
+}
+
void SubWindow::setCurrentTab(int index)
{
- if(index > 0)
+ if(index >= 0)
tabWidget->setCurrentIndex(index);
}
+void SubWindow::moveTab(int from, int to)
+{
+ tabWidget->tabBar()->moveTab(from, to);
+}
+
int SubWindow::restoreLastTab()
{
return tabWidget->restoreLastTab();
diff --git a/src/subwindow/subwindow.h b/src/subwindow/subwindow.h
index 1fc0097..eb7973f 100644
--- a/src/subwindow/subwindow.h
+++ b/src/subwindow/subwindow.h
@@ -22,9 +22,16 @@ class SubWindow : public QMdiSubWindow
Q_OBJECT
public:
+ struct TabData
+ {
+ bool closeLocked = false;
+ bool refreshLocked = false;
+ };
+
explicit SubWindow(const Configuration *config, QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
~SubWindow() override;
+ int currentTabIndex() const;
WebView *currentView();
WebView *view(int index) const;
int tabCount() const;
@@ -32,13 +39,19 @@ public:
void setProfile(WebProfile *profile);
WebProfile *profile() const;
+ void setTabData(TabData &data, int index);
+ TabData tabData(int index) const;
+
signals:
void currentViewChanged(WebView *view);
void showStatusMessage(const QString &message, int timeout = 0);
public slots:
int addTab(const QUrl &url = QUrl(), WebProfile *profile = nullptr);
+ void closeTab(int index);
+
void setCurrentTab(int index);
+ void moveTab(int from, int to);
int restoreLastTab();
void restoreTabMenu(QMenu *menu);
@@ -51,4 +64,6 @@ private:
QMetaObject::Connection linkHoveredConnection;
};
+Q_DECLARE_METATYPE(SubWindow::TabData)
+
#endif // SMOLBOTE_SUBWINDOW_H
diff --git a/src/subwindow/tabwidget.cpp b/src/subwindow/tabwidget.cpp
index c635aee..58e9b03 100644
--- a/src/subwindow/tabwidget.cpp
+++ b/src/subwindow/tabwidget.cpp
@@ -15,6 +15,7 @@
#include <QTabBar>
#include "webprofile.h"
#include <QWebEngineHistory>
+#include "subwindow.h"
inline WebView *createViewFromInfo(TabWidget::TabInformation &tab, QWidget *parent)
{
@@ -93,6 +94,9 @@ int TabWidget::addTab(WebView *view)
this->setTabIcon(idx, icon);
});
+ SubWindow::TabData data;
+ tabBar()->setTabData(idx, QVariant::fromValue<SubWindow::TabData>(data));
+
return idx;
}