+ emit errorMessage(dialog->errorString());
+ delete dialog;
+ return;
+ }
+ delete dialog;
+
+ const KUrl& oldUrl = items.first().url();
+ KUrl newUrl = oldUrl;
+ newUrl.setFileName(newName);
+ KonqOperations::rename(this, oldUrl, newUrl);
+ }
+
+ // assure that the current index remains visible when KDirLister
+ // will notify the view about changed items
+ m_assureVisibleCurrentIndex = true;
+}
+
+void DolphinView::trashSelectedItems()
+{
+ const KUrl::List list = simplifiedSelectedUrls();
+ KonqOperations::del(this, KonqOperations::TRASH, list);
+}
+
+void DolphinView::deleteSelectedItems()
+{
+ const KUrl::List list = simplifiedSelectedUrls();
+ const bool del = KonqOperations::askDeleteConfirmation(list,
+ KonqOperations::DEL,
+ KonqOperations::DEFAULT_CONFIRMATION,
+ this);
+
+ if (del) {
+ KIO::Job* job = KIO::del(list);
+ connect(job, SIGNAL(result(KJob*)),
+ this, SLOT(slotDeleteFileFinished(KJob*)));
+ }
+}
+
+void DolphinView::cutSelectedItems()
+{
+ QMimeData* mimeData = selectionMimeData();
+ KonqMimeData::addIsCutSelection(mimeData, true);
+ QApplication::clipboard()->setMimeData(mimeData);
+}
+
+void DolphinView::copySelectedItems()
+{
+ QMimeData* mimeData = selectionMimeData();
+ QApplication::clipboard()->setMimeData(mimeData);
+}
+
+void DolphinView::paste()
+{
+ pasteToUrl(url());
+}
+
+void DolphinView::pasteIntoFolder()
+{
+ const KFileItemList items = selectedItems();
+ if ((items.count() == 1) && items.first().isDir()) {
+ pasteToUrl(items.first().url());
+ }
+}
+
+void DolphinView::setShowPreview(bool show)
+{
+ if (m_showPreview == show) {
+ return;
+ }
+
+ const KUrl viewPropsUrl = rootUrl();
+ ViewProperties props(viewPropsUrl);
+ props.setShowPreview(show);
+
+ m_showPreview = show;
+ const int oldZoomLevel = m_controller->zoomLevel();
+ emit showPreviewChanged();
+
+ // Enabling or disabling the preview might change the icon size of the view.
+ // As the view does not emit a signal when the icon size has been changed,
+ // the used zoom level of the controller must be adjusted manually:
+ updateZoomLevel(oldZoomLevel);
+}
+
+void DolphinView::setShowHiddenFiles(bool show)
+{
+ if (m_viewAccessor.dirLister()->showingDotFiles() == show) {
+ return;
+ }
+
+ const KUrl viewPropsUrl = rootUrl();
+ ViewProperties props(viewPropsUrl);
+ props.setShowHiddenFiles(show);
+
+ m_viewAccessor.dirLister()->setShowingDotFiles(show);
+ emit showHiddenFilesChanged();
+}
+
+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(rootUrl());
+ props.setCategorizedSorting(categorized);
+ props.save();
+
+ m_storedCategorizedSorting = categorized;
+ m_viewAccessor.proxyModel()->setCategorizedModel(categorized);
+
+ emit categorizedSortingChanged();
+}
+
+void DolphinView::toggleSortOrder()
+{
+ const Qt::SortOrder order = (sortOrder() == Qt::AscendingOrder) ?
+ Qt::DescendingOrder :
+ Qt::AscendingOrder;
+ setSortOrder(order);
+}
+
+void DolphinView::toggleSortFoldersFirst()
+{
+ setSortFoldersFirst(!sortFoldersFirst());
+}
+
+void DolphinView::toggleAdditionalInfo(QAction* action)
+{
+ const KFileItemDelegate::Information info =
+ static_cast<KFileItemDelegate::Information>(action->data().toInt());
+
+ KFileItemDelegate::InformationList list = additionalInfo();
+
+ const bool show = action->isChecked();
+
+ const int index = list.indexOf(info);
+ const bool containsInfo = (index >= 0);
+ if (show && !containsInfo) {
+ list.append(info);
+ setAdditionalInfo(list);
+ } else if (!show && containsInfo) {
+ list.removeAt(index);
+ setAdditionalInfo(list);
+ Q_ASSERT(list.indexOf(info) < 0);
+ }
+}
+
+void DolphinView::mouseReleaseEvent(QMouseEvent* event)
+{
+ QWidget::mouseReleaseEvent(event);
+ setActive(true);
+}
+
+bool DolphinView::eventFilter(QObject* watched, QEvent* event)
+{
+ switch (event->type()) {
+ case QEvent::FocusIn:
+ if (watched == m_viewAccessor.itemView()) {
+ m_controller->requestActivation();
+ }
+ break;
+
+ case QEvent::DragEnter:
+ if (watched == m_viewAccessor.itemView()->viewport()) {
+ setActive(true);
+ }
+ break;
+
+ case QEvent::KeyPress:
+ if (watched == m_viewAccessor.itemView()) {
+ // clear the selection when Escape has been pressed
+ QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
+ if (keyEvent->key() == Qt::Key_Escape) {
+ clearSelection();
+ }