From a2df2e1ebe90a329f7ae0825793de4da53ea0877 Mon Sep 17 00:00:00 2001
From: Aqua-sama
Date: Wed, 15 Feb 2017 16:14:44 +0100
Subject: Tab shortcuts
Config location is displayed in about window
---
src/mainwindow.cpp | 5 +++--
src/settings.cpp | 5 +++++
src/settings.h | 1 +
src/widgets/webviewtabbar.cpp | 37 +++++++++++++++++++++++++++++++++++++
src/widgets/webviewtabbar.h | 2 ++
5 files changed, 48 insertions(+), 2 deletions(-)
(limited to 'src')
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 45d0b55..1f979ca 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -139,8 +139,9 @@ void MainWindow::about()
"yet another Qute browser
"
"Copyright (C) 2017 Xian Nox
"
"This program comes with ABSOLUTELY NO WARRANTY. "
- "This is free software, and you are welcome to redistribute it under the conditions set by the GNU GPLv3.
")
- .arg(qApp->applicationVersion()));
+ "This is free software, and you are welcome to redistribute it under the conditions set by the GNU GPLv3.
"
+ "Configuration lives in: %2
")
+ .arg(qApp->applicationVersion()).arg(Settings::staticFilePath()));
}
void MainWindow::loadProfile(const QString &name)
diff --git a/src/settings.cpp b/src/settings.cpp
index 0d69e23..25cc6c0 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -34,6 +34,11 @@ void Settings::setFilePath(const QString &path)
_path = path;
}
+QString Settings::staticFilePath()
+{
+ return _path;
+}
+
QVariant Settings::value(const QString &key, const QVariant &defaultValue) const
{
QString value = QSettings::value(key, defaultValue).toString();
diff --git a/src/settings.h b/src/settings.h
index f10cec7..01eff6b 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -31,6 +31,7 @@ public:
explicit Settings(QObject *parent = 0);
static void setFilePath(const QString &path);
+ static QString staticFilePath();
QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;
//void setValue(const QString &key, const QVariant &value);
diff --git a/src/widgets/webviewtabbar.cpp b/src/widgets/webviewtabbar.cpp
index c091e56..db44bc9 100644
--- a/src/widgets/webviewtabbar.cpp
+++ b/src/widgets/webviewtabbar.cpp
@@ -19,13 +19,44 @@
******************************************************************************/
#include "webviewtabbar.h"
+#include "settings.h"
+#include
WebViewTabBar::WebViewTabBar(QWidget *parent) :
QTabBar(parent)
{
+ setElideMode(Qt::ElideRight);
setTabsClosable(true);
+ setMovable(true);
connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(handleTabClose(int)));
connect(this, SIGNAL(currentChanged(int)), this, SLOT(handleCurrentChanged(int)));
+ connect(this, SIGNAL(tabMoved(int,int)), this, SLOT(updateVectorArrangement(int,int)));
+
+ Settings settings;
+ if(settings.contains("shortcuts/tabClose")) {
+ QAction *tabCloseAction = new QAction(this);
+ tabCloseAction->setShortcut(QKeySequence::fromString(settings.value("shortcuts/tabClose").toString()));
+ connect(tabCloseAction, &QAction::triggered, [this]() {
+ this->handleTabClose(currentIndex());
+ });
+ addAction(tabCloseAction);
+ }
+ if(settings.contains("shortcuts/tabLeft")) {
+ QAction *tabLeftAction = new QAction(this);
+ tabLeftAction->setShortcut(QKeySequence::fromString(settings.value("shortcuts/tabLeft").toString()));
+ connect(tabLeftAction, &QAction::triggered, [this]() {
+ this->setCurrentIndex(currentIndex()-1);
+ });
+ addAction(tabLeftAction);
+ }
+ if(settings.contains("shortcuts/tabRight")) {
+ QAction *tabRightAction = new QAction(this);
+ tabRightAction->setShortcut(QKeySequence::fromString(settings.value("shortcuts/tabRight").toString()));
+ connect(tabRightAction, &QAction::triggered, [this]() {
+ this->setCurrentIndex(currentIndex()+1);
+ });
+ addAction(tabRightAction);
+ }
}
WebViewTabBar::~WebViewTabBar()
@@ -83,6 +114,7 @@ void WebViewTabBar::handleCurrentChanged(int index)
void WebViewTabBar::handleTabClose(int index)
{
+ qDebug("removing tab %i", index);
removeTab(index);
m_views.at(index)->deleteLater();
m_views.remove(index);
@@ -93,3 +125,8 @@ void WebViewTabBar::updateTabText(WebView *view, const QString &text)
int index = m_views.indexOf(view);
setTabText(index, text);
}
+
+void WebViewTabBar::updateVectorArrangement(int from, int to)
+{
+ m_views.move(from, to);
+}
diff --git a/src/widgets/webviewtabbar.h b/src/widgets/webviewtabbar.h
index 260100b..9029bf5 100644
--- a/src/widgets/webviewtabbar.h
+++ b/src/widgets/webviewtabbar.h
@@ -48,8 +48,10 @@ private slots:
void handleTabClose(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;
};
--
cgit v1.2.1