X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/2d4d2ce9a14902ee5a2b236f8510596fc2f86b99..40cc5f665d:/src/dolphintabwidget.h diff --git a/src/dolphintabwidget.h b/src/dolphintabwidget.h index 4a1b9d99c..28c51024c 100644 --- a/src/dolphintabwidget.h +++ b/src/dolphintabwidget.h @@ -21,19 +21,6 @@ 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 - }; /** * @param navigatorsWidget The navigatorsWidget which is always going to be connected @@ -41,6 +28,15 @@ public: */ explicit DolphinTabWidget(DolphinNavigatorsWidgetAction *navigatorsWidget, QWidget *parent); + /** + * Where a newly opened tab should be placed. + */ + enum class NewTabPosition { + FollowSetting, ///< Honor openNewTabAfterLastTab setting + AfterCurrent, ///< After the current tab + AtEnd, ///< At the end of the tab bar + }; + /** * @return Tab page at the current index (can be 0 if tabs count is smaller than 1) */ @@ -73,12 +69,18 @@ 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; -signals: + /** + * @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 * tab or by activating another view when split view is enabled in the current @@ -103,7 +105,7 @@ signals: */ void currentUrlChanged(const QUrl& url); -public slots: +public Q_SLOTS: /** * Opens a new view with the current URL that is part of a tab and activates * the tab. @@ -118,18 +120,17 @@ public slots: /** * Opens a new tab in the background showing the URL \a primaryUrl and the - * optional URL \a secondaryUrl. \a tabPlacement controls where the new tab - * is placed. + * optional URL \a secondaryUrl. */ - void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl(), - DolphinTabWidget::TabPlacement tabPlacement = AfterLastTab); + void openNewTab(const QUrl &primaryUrl, const QUrl &secondaryUrl = QUrl(), NewTabPosition position = NewTabPosition::FollowSetting); /** - * 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& dirs, bool splitView); + void openDirectories(const QList& dirs, bool splitView, bool skipChildUrls = false); /** * Opens the directories which contain the files \p files and selects all files. @@ -182,7 +183,7 @@ public slots: /** Moves all selected items to the inactive view. */ void moveToInactiveSplitView(); -private slots: +private Q_SLOTS: /** * Opens the tab with the index \a index in a new Dolphin instance and closes * this tab. @@ -220,15 +221,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 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 indexByUrl(const QUrl& url, ChildUrlBehavior childUrlBehavior = ReturnIndexForOpenedUrlOnly) const; private: QPointer m_lastViewedTab;