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
This commit is contained in:
Nathaniel Graham 2018-04-07 22:35:38 -06:00
parent 3a028d9db0
commit b12a7b0f24
2 changed files with 29 additions and 5 deletions

View file

@ -34,7 +34,7 @@
DolphinTabWidget::DolphinTabWidget(QWidget* parent) : DolphinTabWidget::DolphinTabWidget(QWidget* parent) :
QTabWidget(parent), QTabWidget(parent),
m_placesSelectorVisible(true), m_placesSelectorVisible(true),
m_previousTab(0) m_lastViewedTab(0)
{ {
connect(this, &DolphinTabWidget::tabCloseRequested, connect(this, &DolphinTabWidget::tabCloseRequested,
this, static_cast<void (DolphinTabWidget::*)(int)>(&DolphinTabWidget::closeTab)); this, static_cast<void (DolphinTabWidget::*)(int)>(&DolphinTabWidget::closeTab));
@ -61,6 +61,18 @@ DolphinTabPage* DolphinTabWidget::currentTabPage() const
return tabPageAt(currentIndex()); 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 DolphinTabPage* DolphinTabWidget::tabPageAt(const int index) const
{ {
return static_cast<DolphinTabPage*>(widget(index)); return static_cast<DolphinTabPage*>(widget(index));
@ -305,8 +317,8 @@ void DolphinTabWidget::tabUrlChanged(const QUrl& url)
void DolphinTabWidget::currentTabChanged(int index) void DolphinTabWidget::currentTabChanged(int index)
{ {
// previous tab deactivation // last-viewed tab deactivation
if (DolphinTabPage* tabPage = tabPageAt(m_previousTab)) { if (DolphinTabPage* tabPage = tabPageAt(m_lastViewedTab)) {
tabPage->setActive(false); tabPage->setActive(false);
} }
DolphinTabPage* tabPage = tabPageAt(index); DolphinTabPage* tabPage = tabPageAt(index);
@ -314,7 +326,7 @@ void DolphinTabWidget::currentTabChanged(int index)
emit activeViewChanged(viewContainer); emit activeViewChanged(viewContainer);
emit currentUrlChanged(viewContainer->url()); emit currentUrlChanged(viewContainer->url());
tabPage->setActive(true); tabPage->setActive(true);
m_previousTab = index; m_lastViewedTab = index;
} }
void DolphinTabWidget::tabInserted(int index) void DolphinTabWidget::tabInserted(int index)

View file

@ -39,6 +39,18 @@ public:
*/ */
DolphinTabPage* currentTabPage() const; 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) * @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 */ /** Caches the (negated) places panel visibility */
bool m_placesSelectorVisible; bool m_placesSelectorVisible;
int m_previousTab; int m_lastViewedTab;
}; };
#endif #endif