]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Merge remote-tracking branch 'origin/KDE/4.9'
[dolphin.git] / src / dolphinviewcontainer.cpp
index 607cb33a7c9e85e44185499b581753f250f97f8f..6e99437d9aef61fd0fd72338e9d5c27c65b64a57 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();
 
@@ -104,12 +111,14 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     connect(m_view, SIGNAL(redirection(KUrl,KUrl)),             this, SLOT(redirect(KUrl,KUrl)));
     connect(m_view, SIGNAL(directoryLoadingStarted()),          this, SLOT(slotDirectoryLoadingStarted()));
     connect(m_view, SIGNAL(directoryLoadingCompleted()),        this, SLOT(slotDirectoryLoadingCompleted()));
+    connect(m_view, SIGNAL(directoryLoadingCanceled()),         this, SLOT(slotDirectoryLoadingCanceled()));
     connect(m_view, SIGNAL(itemCountChanged()),                 this, SLOT(delayedStatusBarUpdate()));
     connect(m_view, SIGNAL(directoryLoadingProgress(int)),      this, SLOT(updateDirectoryLoadingProgress(int)));
     connect(m_view, SIGNAL(directorySortingProgress(int)),      this, SLOT(updateDirectorySortingProgress(int)));
     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 +165,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 +188,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 +362,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 +452,22 @@ void DolphinViewContainer::slotDirectoryLoadingCompleted()
     }
 }
 
+void DolphinViewContainer::slotDirectoryLoadingCanceled()
+{
+    if (!m_statusBar->progressText().isEmpty()) {
+        m_statusBar->setProgressText(QString());
+        m_statusBar->setProgress(100);
+    }
+
+    showErrorMessage("Directory loading has been canceled.");
+}
+
+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