From b12a7b0f24d5960b0fbf26d7ccc37605c5b03c34 Mon Sep 17 00:00:00 2001 From: Nathaniel Graham Date: Sat, 7 Apr 2018 22:35:38 -0600 Subject: [PATCH] Add more tab access functions Summary: These new functions to access the next and previous tabs are not used by anything yet, but it is envisioned that they would be useful for a variety of purposes--such as the "open path in new tab" feature from D11703 Test Plan: Dolphin still compiled and runs; new code is not actually used anywhere Reviewers: #dolphin, elvisangelaccio Reviewed By: #dolphin, elvisangelaccio Differential Revision: https://phabricator.kde.org/D12039 --- src/dolphintabwidget.cpp | 20 ++++++++++++++++---- src/dolphintabwidget.h | 14 +++++++++++++- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index 0271ed568..a5c2f8c98 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -34,7 +34,7 @@ DolphinTabWidget::DolphinTabWidget(QWidget* parent) : QTabWidget(parent), m_placesSelectorVisible(true), - m_previousTab(0) + m_lastViewedTab(0) { connect(this, &DolphinTabWidget::tabCloseRequested, this, static_cast(&DolphinTabWidget::closeTab)); @@ -61,6 +61,18 @@ DolphinTabPage* DolphinTabWidget::currentTabPage() const return tabPageAt(currentIndex()); } +DolphinTabPage* DolphinTabWidget::nextTabPage() const +{ + const int index = currentIndex() + 1; + return tabPageAt(index < count() ? index : 0); +} + +DolphinTabPage* DolphinTabWidget::prevTabPage() const +{ + const int index = currentIndex() - 1; + return tabPageAt(index >= 0 ? index : (count() - 1)); +} + DolphinTabPage* DolphinTabWidget::tabPageAt(const int index) const { return static_cast(widget(index)); @@ -305,8 +317,8 @@ void DolphinTabWidget::tabUrlChanged(const QUrl& url) void DolphinTabWidget::currentTabChanged(int index) { - // previous tab deactivation - if (DolphinTabPage* tabPage = tabPageAt(m_previousTab)) { + // last-viewed tab deactivation + if (DolphinTabPage* tabPage = tabPageAt(m_lastViewedTab)) { tabPage->setActive(false); } DolphinTabPage* tabPage = tabPageAt(index); @@ -314,7 +326,7 @@ void DolphinTabWidget::currentTabChanged(int index) emit activeViewChanged(viewContainer); emit currentUrlChanged(viewContainer->url()); tabPage->setActive(true); - m_previousTab = index; + m_lastViewedTab = index; } void DolphinTabWidget::tabInserted(int index) diff --git a/src/dolphintabwidget.h b/src/dolphintabwidget.h index ba2fd4867..b4493f7ed 100644 --- a/src/dolphintabwidget.h +++ b/src/dolphintabwidget.h @@ -39,6 +39,18 @@ public: */ DolphinTabPage* currentTabPage() const; + /** + * @return the next tab page. If the current active tab is the last tab, + * it returns the first tab. If there is only one tab, returns nullptr + */ + DolphinTabPage* nextTabPage() const; + + /** + * @return the previous tab page. If the current active tab is the first tab, + * it returns the last tab. If there is only one tab, returns nullptr + */ + DolphinTabPage* prevTabPage() const; + /** * @return Tab page at the given \a index (can be 0 if the index is out-of-range) */ @@ -187,7 +199,7 @@ private: /** Caches the (negated) places panel visibility */ bool m_placesSelectorVisible; - int m_previousTab; + int m_lastViewedTab; }; #endif -- 2.47.3