]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Changed the behaviour when middle clicking folders in places- and folders-dockwidget...
[dolphin.git] / src / dolphinviewcontainer.cpp
index 4d3f1983bc1dcdf6068ad35df6f1c18db769cddb..8a566cffd601ab8bec16f534bcfef186b39d73e6 100644 (file)
 #include <KUrlNavigator>
 #include <KRun>
 
+#ifdef KActivities_FOUND
+#include <KActivities/ResourceInstance>
+#endif
+
 #include "dolphin_generalsettings.h"
 #include "filterbar/filterbar.h"
 #include "search/dolphinsearchbox.h"
@@ -64,6 +68,9 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     m_statusBarTimer(0),
     m_statusBarTimestamp(),
     m_autoGrabFocus(true)
+#ifdef KActivities_FOUND
+    , m_activityResourceInstance(0)
+#endif
 {
     hide();
 
@@ -110,6 +117,7 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     connect(m_view, SIGNAL(selectionChanged(KFileItemList)),    this, SLOT(delayedStatusBarUpdate()));
     connect(m_view, SIGNAL(urlAboutToBeChanged(KUrl)),          this, SLOT(slotViewUrlAboutToBeChanged(KUrl)));
     connect(m_view, SIGNAL(errorMessage(QString)),              this, SLOT(showErrorMessage(QString)));
+    connect(m_view, SIGNAL(urlIsFileError(KUrl)),               this, SLOT(slotUrlIsFileError(KUrl)));
 
     connect(m_urlNavigator, SIGNAL(urlAboutToBeChanged(KUrl)),
             this, SLOT(slotUrlNavigatorLocationAboutToBeChanged(KUrl)));
@@ -156,6 +164,14 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     m_topLayout->addWidget(m_statusBar);
 
     setSearchModeEnabled(isSearchUrl(url));
+
+    // Initialize kactivities resource instance
+
+    #ifdef KActivities_FOUND
+    m_activityResourceInstance = new KActivities::ResourceInstance(
+            window()->winId(), url);
+    m_activityResourceInstance->setParent(this);
+    #endif
 }
 
 DolphinViewContainer::~DolphinViewContainer()
@@ -171,6 +187,14 @@ void DolphinViewContainer::setActive(bool active)
 {
     m_urlNavigator->setActive(active);
     m_view->setActive(active);
+
+    #ifdef KActivities_FOUND
+    if (active) {
+        m_activityResourceInstance->notifyFocusedIn();
+    } else {
+        m_activityResourceInstance->notifyFocusedOut();
+    }
+    #endif
 }
 
 bool DolphinViewContainer::isActive() const
@@ -337,6 +361,10 @@ void DolphinViewContainer::setUrl(const KUrl& newUrl)
     if (newUrl != m_urlNavigator->locationUrl()) {
         m_urlNavigator->setLocationUrl(newUrl);
     }
+
+    #ifdef KActivities_FOUND
+    m_activityResourceInstance->setUri(newUrl);
+    #endif
 }
 
 void DolphinViewContainer::setFilterBarVisible(bool visible)
@@ -423,6 +451,12 @@ void DolphinViewContainer::slotDirectoryLoadingCompleted()
     }
 }
 
+void DolphinViewContainer::slotUrlIsFileError(const KUrl& url)
+{
+    const KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
+    slotItemActivated(item);
+}
+
 void DolphinViewContainer::slotItemActivated(const KFileItem& item)
 {
     // It is possible to activate items on inactive views by
@@ -532,7 +566,7 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const KUrl& url)
     } else if (KProtocolManager::isSourceProtocol(url)) {
         QString app = "konqueror";
         if (url.protocol().startsWith(QLatin1String("http"))) {
-            showMessage(i18nc("@info:status",
+            showMessage(i18nc("@info:status", // krazy:exclude=qmethods
                               "Dolphin does not support web pages, the web browser has been launched"),
                         Information);