]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphintabwidget.cpp
Merge remote-tracking branch 'origin/master' into frameworks
[dolphin.git] / src / dolphintabwidget.cpp
index 4bb70b4eab62a75151b1f07a9b509113583cd9f6..42a8aff09e63c8a7d4f644cb06b7d12297b7e488 100644 (file)
@@ -27,7 +27,7 @@
 
 #include <QApplication>
 #include <KConfigGroup>
-#include <KIcon>
+#include <kio/global.h>
 #include <KRun>
 
 DolphinTabWidget::DolphinTabWidget(QWidget* parent) :
@@ -72,7 +72,7 @@ void DolphinTabWidget::saveProperties(KConfigGroup& group) const
 
     for (int i = 0; i < tabCount; ++i) {
         const DolphinTabPage* tabPage = tabPageAt(i);
-        group.writeEntry("Tab " % QString::number(i), tabPage->saveState());
+        group.writeEntry("Tab Data " % QString::number(i), tabPage->saveState());
     }
 }
 
@@ -83,8 +83,15 @@ void DolphinTabWidget::readProperties(const KConfigGroup& group)
         if (i >= count()) {
             openNewActivatedTab();
         }
-        const QByteArray state = group.readEntry("Tab " % QString::number(i), QByteArray());
-        tabPageAt(i)->restoreState(state);
+        if (group.hasKey("Tab Data " % QString::number(i))) {
+            // Tab state created with Dolphin > 4.14.x
+            const QByteArray state = group.readEntry("Tab Data " % QString::number(i), QByteArray());
+            tabPageAt(i)->restoreState(state);
+        } else {
+            // Tab state created with Dolphin <= 4.14.x
+            const QByteArray state = group.readEntry("Tab " % QString::number(i), QByteArray());
+            tabPageAt(i)->restoreStateV1(state);
+        }
     }
 
     const int index = group.readEntry("Active Tab Index", 0);
@@ -139,7 +146,7 @@ void DolphinTabWidget::openNewTab(const KUrl& primaryUrl, const KUrl& secondaryU
             this, SIGNAL(activeViewChanged(DolphinViewContainer*)));
     connect(tabPage, SIGNAL(activeViewUrlChanged(KUrl)),
             this, SLOT(tabUrlChanged(KUrl)));
-    addTab(tabPage, KIcon(KMimeType::iconNameForUrl(primaryUrl)), tabName(primaryUrl));
+    addTab(tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(primaryUrl));
 
     if (focusWidget) {
         // The DolphinViewContainer grabbed the keyboard focus. As the tab is opened
@@ -213,12 +220,7 @@ void DolphinTabWidget::closeTab(const int index)
     }
 
     DolphinTabPage* tabPage = tabPageAt(index);
-    if (tabPage->splitViewEnabled()) {
-        emit rememberClosedTab(tabPage->primaryViewContainer()->url(),
-                               tabPage->secondaryViewContainer()->url());
-    } else {
-        emit rememberClosedTab(tabPage->primaryViewContainer()->url(), KUrl());
-    }
+    emit rememberClosedTab(tabPage->activeViewContainer()->url(), tabPage->saveState());
 
     removeTab(index);
     tabPage->deleteLater();
@@ -249,6 +251,12 @@ void DolphinTabWidget::slotPlacesPanelVisibilityChanged(bool visible)
     }
 }
 
+void DolphinTabWidget::restoreClosedTab(const QByteArray& state)
+{
+    openNewActivatedTab();
+    currentTabPage()->restoreState(state);
+}
+
 void DolphinTabWidget::detachTab(int index)
 {
     Q_ASSERT(index >= 0);
@@ -293,13 +301,21 @@ void DolphinTabWidget::tabUrlChanged(const KUrl& url)
     const int index = indexOf(qobject_cast<QWidget*>(sender()));
     if (index >= 0) {
         tabBar()->setTabText(index, tabName(url));
-        tabBar()->setTabIcon(index, KIcon(KMimeType::iconNameForUrl(url)));
+        tabBar()->setTabIcon(index, QIcon::fromTheme(KIO::iconNameForUrl(url)));
+
+        // Emit the currentUrlChanged signal if the url of the current tab has been changed.
+        if (index == currentIndex()) {
+            emit currentUrlChanged(url);
+        }
     }
 }
 
 void DolphinTabWidget::currentTabChanged(int index)
 {
-    emit activeViewChanged(tabPageAt(index)->activeViewContainer());
+    DolphinViewContainer* viewContainer = tabPageAt(index)->activeViewContainer();
+    emit activeViewChanged(viewContainer);
+    emit currentUrlChanged(viewContainer->url());
+    viewContainer->view()->setFocus();
 }
 
 void DolphinTabWidget::tabInserted(int index)