diff options
| author | Felix Ernst <[email protected]> | 2022-08-26 12:29:35 +0200 |
|---|---|---|
| committer | Felix Ernst <[email protected]> | 2022-10-11 15:26:31 +0200 |
| commit | 37a98417cd64008b63b95b80ecbedc84d487bd25 (patch) | |
| tree | 014f4d28ef87d57872f0f37d90a39264298cfed3 /src | |
| parent | 4d81aabd1ee78c2fca61452ef3a866cfad0c88a5 (diff) | |
Add helper methods to tab widget for view containers
This commit introduces the private getter
DolphinTabWidget::viewContainerAt(ViewIndex)
and another private method
DolphinTabWidget::activateViewContainerAt(ViewIndex).
Both methods return nullptr if there is no valid
DolphinViewContainer at the specified ViewIndex.
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphintabwidget.cpp | 38 | ||||
| -rw-r--r-- | src/dolphintabwidget.h | 15 |
2 files changed, 38 insertions, 15 deletions
diff --git a/src/dolphintabwidget.cpp b/src/dolphintabwidget.cpp index 5a9007012..04653f33c 100644 --- a/src/dolphintabwidget.cpp +++ b/src/dolphintabwidget.cpp @@ -210,13 +210,7 @@ void DolphinTabWidget::openDirectories(const QList<QUrl>& dirs, bool splitView) // activate it instead of opening a new tab if (alreadyOpenDirectory.has_value()) { somethingWasAlreadyOpen = true; - activateTab(alreadyOpenDirectory->tabIndex); - const auto tabPage = tabPageAt(alreadyOpenDirectory->tabIndex); - if (alreadyOpenDirectory->isInPrimaryView) { - tabPage->primaryViewContainer()->setActive(true); - } else { - tabPage->secondaryViewContainer()->setActive(true); - } + activateViewContainerAt(alreadyOpenDirectory.value()); } else if (splitView && (it != dirs.constEnd())) { const QUrl& secondaryUrl = *(it++); if (somethingWasAlreadyOpen) { @@ -252,14 +246,8 @@ void DolphinTabWidget::openFiles(const QList<QUrl>& files, bool splitView) // We also make sure the view will be activated. auto viewIndex = viewShowingItem(file); if (viewIndex.has_value()) { - activateTab(viewIndex->tabIndex); - if (viewIndex->isInPrimaryView) { - tabPageAt(viewIndex->tabIndex)->primaryViewContainer()->view()->clearSelection(); - tabPageAt(viewIndex->tabIndex)->primaryViewContainer()->setActive(true); - } else { - tabPageAt(viewIndex->tabIndex)->secondaryViewContainer()->view()->clearSelection(); - tabPageAt(viewIndex->tabIndex)->secondaryViewContainer()->setActive(true); - } + viewContainerAt(viewIndex.value())->view()->clearSelection(); + activateViewContainerAt(viewIndex.value()); dirsThatWereAlreadyOpen.append(dir); } else { dirsThatNeedToBeOpened.append(dir); @@ -514,6 +502,26 @@ QString DolphinTabWidget::tabName(DolphinTabPage* tabPage) const return name.replace('&', QLatin1String("&&")); } +DolphinViewContainer *DolphinTabWidget::viewContainerAt(DolphinTabWidget::ViewIndex viewIndex) const +{ + const auto tabPage = tabPageAt(viewIndex.tabIndex); + if (!tabPage) { + return nullptr; + } + return viewIndex.isInPrimaryView ? tabPage->primaryViewContainer() : tabPage->secondaryViewContainer(); +} + +DolphinViewContainer *DolphinTabWidget::activateViewContainerAt(DolphinTabWidget::ViewIndex viewIndex) +{ + activateTab(viewIndex.tabIndex); + auto viewContainer = viewContainerAt(viewIndex); + if (!viewContainer) { + return nullptr; + } + viewContainer->setActive(true); + return viewContainer; +} + const std::optional<const DolphinTabWidget::ViewIndex> DolphinTabWidget::viewOpenAtDirectory(const QUrl& directory) const { int i = currentIndex(); diff --git a/src/dolphintabwidget.h b/src/dolphintabwidget.h index 8342d719d..24d9e228b 100644 --- a/src/dolphintabwidget.h +++ b/src/dolphintabwidget.h @@ -226,6 +226,21 @@ private: const int tabIndex; const bool isInPrimaryView; }; + + /** + * Getter for a view container. + * @param viewIndex specifies the tab and the view within that tab. + * @return the view container specified in @p viewIndex or nullptr if it doesn't exist. + */ + DolphinViewContainer *viewContainerAt(ViewIndex viewIndex) const; + + /** + * Makes the view container specified in @p viewIndex become the active view container within this tab widget. + * @param viewIndex Specifies the tab to activate and the view container within the tab to activate. + * @return the freshly activated view container or nullptr if there is no view container at @p viewIndex. + */ + DolphinViewContainer *activateViewContainerAt(ViewIndex viewIndex); + /** * Get the position of the view within this widget that is open at @p directory. * @param directory The URL of the directory we want to find. |
