]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Add helper methods to tab widget for view containers
authorFelix Ernst <fe.a.ernst@gmail.com>
Fri, 26 Aug 2022 10:29:35 +0000 (12:29 +0200)
committerFelix Ernst <fe.a.ernst@gmail.com>
Tue, 11 Oct 2022 13:26:31 +0000 (15:26 +0200)
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.

src/dolphintabwidget.cpp
src/dolphintabwidget.h

index 5a900701297d9158d44f94f3842b1316be535d07..04653f33c84c72441f44a3caa2075b203c936c58 100644 (file)
@@ -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();
index 8342d719d12978152646e83a5ac4b280f4375658..24d9e228b4ff9dafcf172af60cc3f4f616c5ed4f 100644 (file)
@@ -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.