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