]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphintabwidget.h
Merge branch 'Applications/19.08'
[dolphin.git] / src / dolphintabwidget.h
index 0cb662966a76a4a07b45da950edb811a6ee54f22..4351a40a837ded13f4e41347dd611f54be93d81f 100644 (file)
@@ -32,6 +32,19 @@ class DolphinTabWidget : public QTabWidget
     Q_OBJECT
 
 public:
+    /**
+     * @brief Controls where tabs are placed
+     */
+    enum TabPlacement {
+        /**
+          * The new tab is placed after the current tab
+          */
+        AfterCurrentTab,
+        /**
+          * The new tab is placed after the last tab
+          */
+        AfterLastTab
+    };
     explicit DolphinTabWidget(QWidget* parent);
 
     /**
@@ -65,6 +78,12 @@ public:
      */
     void refreshViews();
 
+    /**
+     * @return Whether any of the tab pages contains @p url in their primary
+     * or secondary view.
+     */
+    bool isUrlOpen(const QUrl& url) const;
+
 signals:
     /**
      * Is emitted when the active view has been changed, by changing the current
@@ -105,9 +124,11 @@ public slots:
 
     /**
      * Opens a new tab in the background showing the URL \a primaryUrl and the
-     * optional URL \a secondaryUrl.
+     * optional URL \a secondaryUrl. \a tabPlacement controls where the new tab
+     * is placed.
      */
-    void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl());
+    void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl(),
+                    DolphinTabWidget::TabPlacement tabPlacement = AfterLastTab);
 
     /**
      * Opens each directory in \p dirs in a separate tab. If \a splitView is set,
@@ -196,6 +217,16 @@ private:
      */
     QString tabName(DolphinTabPage* tabPage) const;
 
+    /**
+     * @param url The URL that we would like
+     * @return a QPair with first containing the index of the tab with the
+     * desired URL or -1 if not found. Second says true if URL is in primary
+     * view container, false otherwise. False means the URL is in the secondary
+     * view container, unless first == -1. In that case the value of second
+     * is meaningless.
+     */
+    QPair<int, bool> indexByUrl(const QUrl& url) const;
+
 private:
     /** Caches the (negated) places panel visibility */
     bool m_placesSelectorVisible;