]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
SVN_SILENT: assure that the position of the methods in the cpp file matchs with the...
[dolphin.git] / src / dolphinview.cpp
index 4b221a0e34acb9d25af110350c0f4acc1cede5b4..20d3db4ae6b3db4350c8366278bd2a84f640f182 100644 (file)
@@ -39,6 +39,7 @@
 #include <kio/previewjob.h>
 #include <kjob.h>
 #include <kmenu.h>
+#include <kmessagebox.h>
 #include <kmimetyperesolver.h>
 #include <konq_operations.h>
 #include <konqmimedata.h>
@@ -86,9 +87,6 @@ DolphinView::DolphinView(QWidget* parent,
     m_topLayout->setSpacing(0);
     m_topLayout->setMargin(0);
 
-    connect(m_dirLister, SIGNAL(completed()),
-            this, SLOT(updateCutItems()));
-
     m_controller = new DolphinController(this);
     m_controller->setUrl(url);
 
@@ -216,69 +214,16 @@ DolphinView::Mode DolphinView::mode() const
     return m_mode;
 }
 
-void DolphinView::setShowPreview(bool show)
-{
-    if (m_showPreview == show) {
-        return;
-    }
-
-    const KUrl viewPropsUrl = viewPropertiesUrl();
-    ViewProperties props(viewPropsUrl);
-    props.setShowPreview(show);
-
-    m_showPreview = show;
-    m_iconManager->setShowPreview(show);
-    emit showPreviewChanged();
-
-    loadDirectory(viewPropsUrl, true);
-}
-
 bool DolphinView::showPreview() const
 {
     return m_showPreview;
 }
 
-void DolphinView::setShowHiddenFiles(bool show)
-{
-    if (m_dirLister->showingDotFiles() == show) {
-        return;
-    }
-
-    const KUrl viewPropsUrl = viewPropertiesUrl();
-    ViewProperties props(viewPropsUrl);
-    props.setShowHiddenFiles(show);
-
-    m_dirLister->setShowingDotFiles(show);
-    emit showHiddenFilesChanged();
-
-    loadDirectory(viewPropsUrl, true);
-}
-
 bool DolphinView::showHiddenFiles() const
 {
     return m_dirLister->showingDotFiles();
 }
 
-void DolphinView::setCategorizedSorting(bool categorized)
-{
-    if (categorized == categorizedSorting()) {
-        return;
-    }
-
-    // setCategorizedSorting(true) may only get invoked
-    // if the view supports categorized sorting
-    Q_ASSERT(!categorized || supportsCategorizedSorting());
-
-    ViewProperties props(viewPropertiesUrl());
-    props.setCategorizedSorting(categorized);
-    props.save();
-
-    m_storedCategorizedSorting = categorized;
-    m_proxyModel->setCategorizedModel(categorized);
-
-    emit categorizedSortingChanged();
-}
-
 bool DolphinView::categorizedSorting() const
 {
     // If all view modes would support categorized sorting, returning
@@ -400,13 +345,13 @@ QPoint DolphinView::contentsPosition() const
 void DolphinView::zoomIn()
 {
     m_controller->triggerZoomIn();
-    reload();
+    m_iconManager->updatePreviews();
 }
 
 void DolphinView::zoomOut()
 {
     m_controller->triggerZoomOut();
-    reload();
+    m_iconManager->updatePreviews();
 }
 
 bool DolphinView::isZoomInPossible() const
@@ -455,7 +400,7 @@ void DolphinView::setAdditionalInfo(KFileItemDelegate::InformationList info)
     if (itemView() != m_detailsView) {
         // the details view requires no reloading of the directory, as it maps
         // the file item delegate info to its columns internally
-        loadDirectory(viewPropsUrl, true);
+        loadDirectory(viewPropsUrl);
     }
 }
 
@@ -540,15 +485,24 @@ void DolphinView::mouseReleaseEvent(QMouseEvent* event)
 
 void DolphinView::wheelEvent(QWheelEvent* event)
 {
-    if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) {
-        int d = event->delta();
-        if (d > 0 && isZoomInPossible()) {
+    if (event->modifiers() & Qt::ControlModifier) {
+        const int delta = event->delta();
+        if ((delta > 0) && isZoomInPossible()) {
             zoomIn();
-        } else if (d < 0 && isZoomOutPossible()) {
+        } else if ((delta < 0) && isZoomOutPossible()) {
             zoomOut();
         }
-       event->accept();
+        event->accept();
+    }
+}
+
+bool DolphinView::eventFilter(QObject* watched, QEvent* event)
+{
+    if ((watched == itemView()) && (event->type() == QEvent::FocusIn)) {
+        m_controller->requestActivation();
     }
+
+    return QWidget::eventFilter(watched, event);
 }
 
 void DolphinView::activate()
@@ -859,18 +813,12 @@ void DolphinView::emitContentsMoved()
 
 void DolphinView::showHoverInformation(const KFileItem& item)
 {
-    if (hasSelection() || !m_active) {
-        return;
-    }
-
     emit requestItemInfo(item);
 }
 
 void DolphinView::clearHoverInformation()
 {
-    if (m_active) {
-        emit requestItemInfo(KFileItem());
-    }
+    emit requestItemInfo(KFileItem());
 }
 
 void DolphinView::createView()
@@ -900,6 +848,9 @@ void DolphinView::createView()
     }
 
     Q_ASSERT(view != 0);
+    view->installEventFilter(this);
+
+    m_controller->setItemView(view);
 
     m_fileItemDelegate = new KFileItemDelegate(view);
     view->setItemDelegate(m_fileItemDelegate);
@@ -1013,14 +964,19 @@ void DolphinView::renameSelectedItems()
                 }
             }
         }
+    } else if (DolphinSettings::instance().generalSettings()->renameInline()) {
+        Q_ASSERT(items.count() == 1);
+
+        if (isColumnViewActive()) {
+            m_columnView->editItem(items.first());
+        } else {
+            const QModelIndex dirIndex = m_dolphinModel->indexForItem(items.first());
+            const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
+            itemView()->edit(proxyIndex);
+        }
     } else {
-        // Only one item has been selected for renaming. Use the custom
-        // renaming mechanism from the views.
         Q_ASSERT(items.count() == 1);
 
-        // TODO: Think about using KFileItemDelegate as soon as it supports editing.
-        // Currently the RenameDialog is used, but I'm not sure whether inline renaming
-        // is a benefit for the user at all -> let's wait for some input first...
         RenameDialog dialog(this, items);
         if (dialog.exec() == QDialog::Rejected) {
             return;
@@ -1093,34 +1049,69 @@ void DolphinView::paste()
     const QMimeData* mimeData = clipboard->mimeData();
 
     const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData);
-
-    // per default the pasting is done into the current Url of the view
-    KUrl destUrl(url());
-
-    // check whether the pasting should be done into a selected directory
-    const KUrl::List selectedUrls = this->selectedUrls();
-    if (selectedUrls.count() == 1) {
-        const KFileItem fileItem(S_IFDIR,
-                                 KFileItem::Unknown,
-                                 selectedUrls.first(),
-                                 true);
-        if (fileItem.isDir()) {
-            // only one item is selected which is a directory, hence paste
-            // into this directory
-            destUrl = selectedUrls.first();
-        }
-    }
-
     if (KonqMimeData::decodeIsCutSelection(mimeData)) {
-        KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, destUrl);
+        KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, url());
         emit doingOperation(KonqFileUndoManager::MOVE);
         clipboard->clear();
     } else {
-        KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, destUrl);
+        KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, url());
         emit doingOperation(KonqFileUndoManager::COPY);
     }
 }
 
+void DolphinView::setShowPreview(bool show)
+{
+    if (m_showPreview == show) {
+        return;
+    }
+
+    const KUrl viewPropsUrl = viewPropertiesUrl();
+    ViewProperties props(viewPropsUrl);
+    props.setShowPreview(show);
+
+    m_showPreview = show;
+    m_iconManager->setShowPreview(show);
+    emit showPreviewChanged();
+
+    loadDirectory(viewPropsUrl);
+}
+
+void DolphinView::setShowHiddenFiles(bool show)
+{
+    if (m_dirLister->showingDotFiles() == show) {
+        return;
+    }
+
+    const KUrl viewPropsUrl = viewPropertiesUrl();
+    ViewProperties props(viewPropsUrl);
+    props.setShowHiddenFiles(show);
+
+    m_dirLister->setShowingDotFiles(show);
+    emit showHiddenFilesChanged();
+
+    loadDirectory(viewPropsUrl);
+}
+
+void DolphinView::setCategorizedSorting(bool categorized)
+{
+    if (categorized == categorizedSorting()) {
+        return;
+    }
+
+    // setCategorizedSorting(true) may only get invoked
+    // if the view supports categorized sorting
+    Q_ASSERT(!categorized || supportsCategorizedSorting());
+
+    ViewProperties props(viewPropertiesUrl());
+    props.setCategorizedSorting(categorized);
+    props.save();
+
+    m_storedCategorizedSorting = categorized;
+    m_proxyModel->setCategorizedModel(categorized);
+
+    emit categorizedSortingChanged();
+}
+
 QPair<bool, QString> DolphinView::pasteInfo() const
 {
     QPair<bool, QString> ret;
@@ -1130,25 +1121,19 @@ QPair<bool, QString> DolphinView::pasteInfo() const
     KUrl::List urls = KUrl::List::fromMimeData(mimeData);
     if (!urls.isEmpty()) {
         ret.first = true;
-        ret.second = i18ncp("@action:inmenu", "Paste One File", "Paste %1 Files", urls.count());
+        if (urls.count() == 1) {
+            const KFileItem item(KFileItem::Unknown, KFileItem::Unknown, urls.first(), true);
+            ret.second = item.isDir() ? i18nc("@action:inmenu", "Paste One Folder") :
+                                        i18nc("@action:inmenu", "Paste One File");
+
+        } else {
+            ret.second = i18ncp("@action:inmenu", "Paste One Item", "Paste %1 Items", urls.count());
+        }
     } else {
         ret.first = false;
         ret.second = i18nc("@action:inmenu", "Paste");
     }
 
-    if (ret.first) {
-        const KFileItemList items = selectedItems();
-        const uint count = items.count();
-        if (count > 1) {
-            // pasting should not be allowed when more than one file
-            // is selected
-            ret.first = false;
-        } else if (count == 1) {
-            // Only one file is selected. Pasting is only allowed if this
-            // file is a directory.
-            ret.first = items.first().isDir();
-        }
-    }
     return ret;
 }