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);
/**
*/
DolphinTabPage* currentTabPage() const;
+ /**
+ * @return the next tab page. If the current active tab is the last tab,
+ * it returns the first tab. If there is only one tab, returns nullptr
+ */
+ DolphinTabPage* nextTabPage() const;
+
+ /**
+ * @return the previous tab page. If the current active tab is the first tab,
+ * it returns the last tab. If there is only one tab, returns nullptr
+ */
+ DolphinTabPage* prevTabPage() const;
+
/**
* @return Tab page at the given \a index (can be 0 if the index is out-of-range)
*/
*/
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
/**
* 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,
*/
void closeTab(const int index);
+ /**
+ * Activates the tab with the index \a index.
+ */
+ void activateTab(const int index);
+
+ /**
+ * Activates the last tab in the tab bar.
+ */
+ void activateLastTab();
+
/**
* Activates the next tab in the tab bar.
* If the current active tab is the last tab, it activates the first tab.
*/
void restoreClosedTab(const QByteArray& state);
+ /** Copies all selected items to the inactive view. */
+ void copyToInactiveSplitView();
+
+ /** Moves all selected items to the inactive view. */
+ void moveToInactiveSplitView();
+
private slots:
/**
* Opens the tab with the index \a index in a new Dolphin instance and closes
void currentTabChanged(int index);
protected:
- virtual void tabInserted(int index) Q_DECL_OVERRIDE;
- virtual void tabRemoved(int index) Q_DECL_OVERRIDE;
+ void tabInserted(int index) override;
+ void tabRemoved(int index) override;
private:
/**
- * Returns the name of the tab for the URL \a url.
+ * @param tabPage The tab page to get the name of
+ * @return The name of the tab page
+ */
+ 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.
*/
- QString tabName(const QUrl& url) const;
+ QPair<int, bool> indexByUrl(const QUrl& url) const;
private:
/** Caches the (negated) places panel visibility */
bool m_placesSelectorVisible;
- int m_previousTab;
+ int m_lastViewedTab;
};
#endif