]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
SVN_SILENT: Minor coding style and format cleanups. No change of behavior has been...
[dolphin.git] / src / dolphinviewcontainer.cpp
index 53b1c75293d05b103eef6d7787261cc4d1fc64b0..b9134d91c7875befde3c006c1725b4c510f920d6 100644 (file)
@@ -28,6 +28,7 @@
 #include <QtCore/QTimer>
 #include <QtGui/QScrollBar>
 
+#include <kdesktopfile.h>
 #include <kfileitemdelegate.h>
 #include <kfileplacesmodel.h>
 #include <kglobalsettings.h>
 #include <kurlnavigator.h>
 #include <krun.h>
 
+#include "dolphin_generalsettings.h"
 #include "dolphinmodel.h"
 #include "dolphincolumnview.h"
-#include "dolphincontroller.h"
+#include "dolphinviewcontroller.h"
 #include "dolphinmainwindow.h"
 #include "dolphindirlister.h"
 #include "dolphinsortfilterproxymodel.h"
 #include "dolphiniconsview.h"
 #include "draganddrophelper.h"
 #include "filterbar.h"
+#include "settings/dolphinsettings.h"
 #include "statusbar/dolphinstatusbar.h"
+#include "viewmodecontroller.h"
 #include "viewproperties.h"
-#include "settings/dolphinsettings.h"
-#include "dolphin_generalsettings.h"
 
 DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     QWidget(parent),
@@ -85,8 +87,6 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
             this, SLOT(dropUrls(const KUrl&, QDropEvent*)));
     connect(m_urlNavigator, SIGNAL(activated()),
             this, SLOT(activate()));
-    //connect(m_urlNavigator, SIGNAL(tabRequested(const KUrl&)),
-    //        this,
     connect(m_urlNavigator->editor(), SIGNAL(completionModeChanged(KGlobalSettings::Completion)),
             this, SLOT(saveUrlCompletionMode(KGlobalSettings::Completion)));
 
@@ -309,7 +309,6 @@ void DolphinViewContainer::slotDirListerCompleted()
     } else {
         updateStatusBar();
     }
-    QMetaObject::invokeMethod(this, "restoreViewState", Qt::QueuedConnection);
 
     // Enable the 'File'->'Create New...' menu only if the directory
     // supports writing.
@@ -371,13 +370,6 @@ void DolphinViewContainer::setNameFilter(const QString& nameFilter)
     delayedStatusBarUpdate();
 }
 
-void DolphinViewContainer::restoreViewState()
-{
-    QByteArray locationState = m_urlNavigator->locationState();
-    QDataStream stream(&locationState, QIODevice::ReadOnly);
-    m_view->restoreState(stream);
-}
-
 void DolphinViewContainer::activate()
 {
     setActive(true);
@@ -460,12 +452,11 @@ void DolphinViewContainer::saveUrlCompletionMode(KGlobalSettings::Completion com
 
 void DolphinViewContainer::slotHistoryChanged()
 {
-    const int index = m_urlNavigator->historyIndex();
-    if (index > 0) {       
-        // The "Go Forward" action is enabled. Try to mark
-        // the previous directory as active item:
-        const KUrl url = m_urlNavigator->locationUrl(index - 1);
-        m_view->activateItem(url);
+    QByteArray locationState = m_urlNavigator->locationState();
+
+    if (!locationState.isEmpty()) {
+        QDataStream stream(&locationState, QIODevice::ReadOnly);
+        m_view->restoreState(stream);
     }
 }
 
@@ -494,6 +485,16 @@ void DolphinViewContainer::slotItemTriggered(const KFileItem& item)
         }
     }
 
+    if (item.mimetype() == "application/x-desktop") {
+        // redirect to the url in Type=Link desktop files
+        KDesktopFile desktopFile(url.toLocalFile());
+        if (desktopFile.hasLinkType()) {
+            url = desktopFile.readUrl();
+            m_view->setUrl(url);
+            return;
+        }
+    }
+
     item.run();
 }