]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphintabwidget.cpp
DolphinTrash: port away from deprecated KIO API
[dolphin.git] / src / dolphintabwidget.cpp
index 5a900701297d9158d44f94f3842b1316be535d07..13619a5f9984530aa791c192ff286d7e7ae0f569 100644 (file)
@@ -204,19 +204,13 @@ void DolphinTabWidget::openDirectories(const QList<QUrl>& dirs, bool splitView)
     QList<QUrl>::const_iterator it = dirs.constBegin();
     while (it != dirs.constEnd()) {
         const QUrl& primaryUrl = *(it++);
-        const std::optional<ViewIndex> alreadyOpenDirectory = viewOpenAtDirectory(primaryUrl);
+        const std::optional<ViewIndex> viewIndexAtDirectory = viewOpenAtDirectory(primaryUrl);
 
         // When the user asks for a URL that's already open,
         // activate it instead of opening a new tab
-        if (alreadyOpenDirectory.has_value()) {
+        if (viewIndexAtDirectory.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(viewIndexAtDirectory.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();