]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphintabwidget.h
Open externally called files/directories in new tabs
[dolphin.git] / src / dolphintabwidget.h
index 50ebd602ab85342d405cf8540b0dbd0d701a6e9b..3e8301725c71e83c69fca4ab62d570aae87d5f51 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);
 
     /**
@@ -39,6 +52,18 @@ public:
      */
     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)
      */
@@ -53,6 +78,12 @@ public:
      */
     void refreshViews();
 
+    /**
+     * @param url The URL that we would like
+     * @return index of the tab with the desired URL. returns -1 if not found
+     */
+    int getIndexByUrl(const QUrl& url) const;
+
 signals:
     /**
      * Is emitted when the active view has been changed, by changing the current
@@ -93,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,
@@ -174,20 +207,21 @@ private slots:
     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(const QUrl& url) const;
+    QString tabName(DolphinTabPage* tabPage) const;
 
 private:
     /** Caches the (negated) places panel visibility */
     bool m_placesSelectorVisible;
 
-    int m_previousTab;
+    int m_lastViewedTab;
 };
 
 #endif