]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Port Dolphin to Baloo
[dolphin.git] / src / dolphinviewcontainer.cpp
index 71dc5fd7b50808731992cf1f0d7a3679497ea863..768fd5ef90915cee7505bb4629d69524e198858f 100644 (file)
@@ -68,7 +68,9 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     m_statusBar(0),
     m_statusBarTimer(0),
     m_statusBarTimestamp(),
-    m_autoGrabFocus(true)
+    m_autoGrabFocus(true),
+    m_dropDestination(),
+    m_dropEvent(0)
 #ifdef KActivities_FOUND
     , m_activityResourceInstance(0)
 #endif
@@ -96,6 +98,7 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
 
     m_searchBox = new DolphinSearchBox(this);
     m_searchBox->hide();
+    connect(m_searchBox, SIGNAL(activated()), this, SLOT(activate()));
     connect(m_searchBox, SIGNAL(closeRequest()), this, SLOT(closeSearchBox()));
     connect(m_searchBox, SIGNAL(searchRequest()), this, SLOT(startSearching()));
     connect(m_searchBox, SIGNAL(returnPressed(QString)), this, SLOT(requestFocus()));
@@ -193,6 +196,7 @@ KUrl DolphinViewContainer::url() const
 
 void DolphinViewContainer::setActive(bool active)
 {
+    m_searchBox->setActive(active);
     m_urlNavigator->setActive(active);
     m_view->setActive(active);
 
@@ -451,7 +455,7 @@ void DolphinViewContainer::slotDirectoryLoadingCompleted()
     }
 
     if (isSearchUrl(url()) && m_view->itemsCount() == 0) {
-        // The dir lister has been completed on a Nepomuk-URI and no items have been found. Instead
+        // The dir lister has been completed on a Baloo-URI and no items have been found. Instead
         // of showing the default status bar information ("0 items") a more helpful information is given:
         m_statusBar->setText(i18nc("@info:status", "No items found."));
     } else {
@@ -504,8 +508,7 @@ void DolphinViewContainer::showItemInfo(const KFileItem& item)
     if (item.isNull()) {
         m_statusBar->resetToDefaultText();
     } else {
-        const QString text = item.isDir() ? item.text() : item.getStatusBarInfo();
-        m_statusBar->setText(text);
+        m_statusBar->setText(item.getStatusBarInfo());
     }
 }
 
@@ -597,11 +600,37 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const KUrl& url)
 
 void DolphinViewContainer::dropUrls(const KUrl& destination, QDropEvent* event)
 {
+    m_dropDestination = destination;
+
+    const QMimeData* mimeData = event->mimeData();
+    QMimeData* mimeDataCopy = new QMimeData;
+    foreach (const QString& format, mimeData->formats()) {
+        mimeDataCopy->setData(format, mimeData->data(format));
+    }
+
+    m_dropEvent.reset(new QDropEvent(event->pos(),
+                                     event->possibleActions(),
+                                     mimeDataCopy,
+                                     event->mouseButtons(),
+                                     event->keyboardModifiers()));
+
+    QTimer::singleShot(0, this, SLOT(dropUrlsDelayed()));
+}
+
+void DolphinViewContainer::dropUrlsDelayed()
+{
+    if (m_dropEvent.isNull()) {
+        return;
+    }
+
     QString error;
-    DragAndDropHelper::dropUrls(KFileItem(), destination, event, error);
+    DragAndDropHelper::dropUrls(KFileItem(), m_dropDestination, m_dropEvent.data(), error);
     if (!error.isEmpty()) {
         showMessage(error, Error);
     }
+
+    delete m_dropEvent->mimeData();
+    m_dropEvent.reset();
 }
 
 void DolphinViewContainer::redirect(const KUrl& oldUrl, const KUrl& newUrl)
@@ -679,7 +708,7 @@ void DolphinViewContainer::showErrorMessage(const QString& msg)
 bool DolphinViewContainer::isSearchUrl(const KUrl& url) const
 {
     const QString protocol = url.protocol();
-    return protocol.contains("search") || (protocol == QLatin1String("nepomuk"));
+    return protocol.contains("search");
 }
 
 void DolphinViewContainer::saveViewState()