]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
let Dolphin use the new tab-close-buttons
[dolphin.git] / src / dolphinview.cpp
index fdb4880bb7f3c6c4c600f7e03eba6bc34adec99e..d87571c7e79e2e173694fee1ba1851c2f7f29a75 100644 (file)
@@ -57,6 +57,7 @@
 #include "dolphin_generalsettings.h"
 #include "iconmanager.h"
 #include "renamedialog.h"
+#include "tooltipmanager.h"
 #include "viewproperties.h"
 
 DolphinView::DolphinView(QWidget* parent,
@@ -69,6 +70,7 @@ DolphinView::DolphinView(QWidget* parent,
     m_showPreview(false),
     m_loadingDirectory(false),
     m_storedCategorizedSorting(false),
+    m_isContextMenuOpen(false),
     m_mode(DolphinView::IconsView),
     m_topLayout(0),
     m_controller(0),
@@ -80,7 +82,8 @@ DolphinView::DolphinView(QWidget* parent,
     m_dolphinModel(dolphinModel),
     m_dirLister(dirLister),
     m_proxyModel(proxyModel),
-    m_iconManager(0)
+    m_iconManager(0),
+    m_toolTipManager(0)
 {
     setFocusPolicy(Qt::StrongFocus);
     m_topLayout = new QVBoxLayout(this);
@@ -111,6 +114,8 @@ DolphinView::DolphinView(QWidget* parent,
             this, SLOT(updateAdditionalInfo(const KFileItemDelegate::InformationList&)));
     connect(m_controller, SIGNAL(itemTriggered(const KFileItem&)),
             this, SLOT(triggerItem(const KFileItem&)));
+    connect(m_controller, SIGNAL(tabRequested(const KUrl&)),
+            this, SIGNAL(tabRequested(const KUrl&)));
     connect(m_controller, SIGNAL(activated()),
             this, SLOT(activate()));
     connect(m_controller, SIGNAL(itemEntered(const KFileItem&)),
@@ -607,17 +612,14 @@ void DolphinView::copySelectedItems()
 
 void DolphinView::paste()
 {
-    QClipboard* clipboard = QApplication::clipboard();
-    const QMimeData* mimeData = clipboard->mimeData();
+    pasteToUrl(url());
+}
 
-    const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
-    if (KonqMimeData::decodeIsCutSelection(mimeData)) {
-        KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, url());
-        emit doingOperation(KonqFileUndoManager::MOVE);
-        clipboard->clear();
-    } else {
-        KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, url());
-        emit doingOperation(KonqFileUndoManager::COPY);
+void DolphinView::pasteIntoFolder()
+{
+    const KFileItemList items = selectedItems();
+    if ((items.count() == 1) && items.first().isDir()) {
+        pasteToUrl(items.first().url());
     }
 }
 
@@ -746,10 +748,14 @@ void DolphinView::triggerItem(const KFileItem& item)
         return;
     }
 
-    if (item.isNull()) {
+    // TODO: the m_isContextMenuOpen check is a workaround for Qt-issue xxxxxx
+    if (item.isNull() || m_isContextMenuOpen) {
         return;
     }
 
+    if (m_toolTipManager != 0) {
+        m_toolTipManager->hideTip();
+    }
     emit itemTriggered(item); // caught by DolphinViewContainer or DolphinPart
 }
 
@@ -767,7 +773,13 @@ void DolphinView::openContextMenu(const QPoint& pos)
         item = fileItem(index);
     }
 
+    if (m_toolTipManager != 0) {
+        m_toolTipManager->hideTip();
+    }
+
+    m_isContextMenuOpen = true; // TODO: workaround for Qt-issue xxxxxx
     emit requestContextMenu(item, url());
+    m_isContextMenuOpen = false;
 }
 
 void DolphinView::dropUrls(const KUrl::List& urls,
@@ -1083,6 +1095,10 @@ void DolphinView::createView()
     m_iconManager = new IconManager(view, m_proxyModel);
     m_iconManager->setShowPreview(m_showPreview);
 
+    if (DolphinSettings::instance().generalSettings()->showToolTips()) {
+        m_toolTipManager = new ToolTipManager(view, m_proxyModel);
+    }
+
     m_topLayout->insertWidget(1, view);
 
     connect(view->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
@@ -1106,6 +1122,7 @@ void DolphinView::deleteView()
         m_columnView = 0;
         m_fileItemDelegate = 0;
         m_iconManager = 0;
+        m_toolTipManager = 0;
     }
 }
 
@@ -1138,4 +1155,20 @@ bool DolphinView::isCutItem(const KFileItem& item) const
     return false;
 }
 
+void DolphinView::pasteToUrl(const KUrl& url)
+{
+    QClipboard* clipboard = QApplication::clipboard();
+    const QMimeData* mimeData = clipboard->mimeData();
+
+    const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
+    if (KonqMimeData::decodeIsCutSelection(mimeData)) {
+        KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, url);
+        emit doingOperation(KonqFileUndoManager::MOVE);
+        clipboard->clear();
+    } else {
+        KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, url);
+        emit doingOperation(KonqFileUndoManager::COPY);
+    }
+}
+
 #include "dolphinview.moc"