]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphintabwidget.h
do not open excessive tab
[dolphin.git] / src / dolphintabwidget.h
index e0146d7c71bb5d25671a7d63c2c2da9c311359bb..7905912dacbdf5b5fa0f0ef40fbfc1e34959aadb 100644 (file)
@@ -60,11 +60,17 @@ public:
     void refreshViews();
 
     /**
-     * @return Whether any of the tab pages contains @p url in their primary
-     * or secondary view.
+     * @return Whether any of the tab pages has @p url opened
+     * in their primary or secondary view.
      */
     bool isUrlOpen(const QUrl& url) const;
 
+    /**
+     * @return Whether any of the tab pages has @p url or it's parent opened
+     * in their primary or secondary view.
+     */
+    bool isUrlOrParentOpen(const QUrl& url) const;
+
 Q_SIGNALS:
     /**
      * Is emitted when the active view has been changed, by changing the current
@@ -110,11 +116,12 @@ public Q_SLOTS:
     void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl());
 
     /**
-     * Opens each directory in \p dirs in a separate tab. If \a splitView is set,
-     * 2 directories are collected within one tab.
+     * Opens each directory in \p dirs in a separate tab unless it is already open.
+     * If \a splitView is set, 2 directories are collected within one tab.
+     * If \a skipChildUrls is set, do not open a directory if it's parent is already open.
      * \pre \a dirs must contain at least one url.
      */
-    void openDirectories(const QList<QUrl>& dirs, bool splitView);
+    void openDirectories(const QList<QUrl>& dirs, bool splitView, bool skipChildUrls = false);
 
     /**
      * Opens the directories which contain the files \p files and selects all files.
@@ -205,15 +212,21 @@ private:
      */
     QString tabName(DolphinTabPage* tabPage) const;
 
+    enum ChildUrlBehavior {
+        ReturnIndexForOpenedUrlOnly,
+        ReturnIndexForOpenedParentAlso
+    };
+
     /**
      * @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;
+     * @param childUrlBehavior Whether a tab with opened parent of the URL can be returned too
+     * @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, ChildUrlBehavior childUrlBehavior = ReturnIndexForOpenedUrlOnly) const;
 
 private:
     QPointer<DolphinTabPage> m_lastViewedTab;