+void DolphinView::trashSelectedItems()
+{
+ emit doingOperation(KonqFileUndoManager::TRASH);
+ KonqOperations::del(this, KonqOperations::TRASH, selectedUrls());
+}
+
+void DolphinView::deleteSelectedItems()
+{
+ const KUrl::List list = selectedUrls();
+ 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::slotDeleteFileFinished(KJob* job)
+{
+ if (job->error() == 0) {
+ emit operationCompletedMessage(i18nc("@info:status", "Delete operation completed."));
+ } else {
+ emit errorMessage(job->errorString());
+ }
+}
+
+void DolphinView::slotPreviewJobFinished(KJob* job)
+{
+ Q_ASSERT(job == m_previewJob);
+ m_previewJob = 0;
+}
+
+void DolphinView::cutSelectedItems()
+{
+ QMimeData* mimeData = new QMimeData();
+ const KUrl::List kdeUrls = selectedUrls();
+ const KUrl::List mostLocalUrls;
+ KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, true);
+ QApplication::clipboard()->setMimeData(mimeData);
+}
+
+void DolphinView::copySelectedItems()
+{
+ QMimeData* mimeData = new QMimeData();
+ const KUrl::List kdeUrls = selectedUrls();
+ const KUrl::List mostLocalUrls;
+ KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, false);
+ QApplication::clipboard()->setMimeData(mimeData);
+}
+
+void DolphinView::paste()
+{
+ QClipboard* clipboard = QApplication::clipboard();
+ 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);
+ emit doingOperation(KonqFileUndoManager::MOVE);
+ clipboard->clear();
+ } else {
+ KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, destUrl);
+ emit doingOperation(KonqFileUndoManager::COPY);
+ }
+}
+
+QPair<bool, QString> DolphinView::pasteInfo() const
+{
+ QPair<bool, QString> ret;
+ QClipboard* clipboard = QApplication::clipboard();
+ const QMimeData* mimeData = clipboard->mimeData();
+
+ 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());
+ } 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;
+}
+
+KAction* DolphinView::createRenameAction(KActionCollection* collection)
+{
+ KAction* rename = collection->addAction("rename");
+ rename->setText(i18nc("@action:inmenu File", "Rename..."));
+ rename->setShortcut(Qt::Key_F2);
+ return rename;
+}
+
+KAction* DolphinView::createMoveToTrashAction(KActionCollection* collection)
+{
+ KAction* moveToTrash = collection->addAction("move_to_trash");
+ moveToTrash->setText(i18nc("@action:inmenu File", "Move to Trash"));
+ moveToTrash->setIcon(KIcon("user-trash"));
+ moveToTrash->setShortcut(QKeySequence::Delete);
+ return moveToTrash;
+}
+
+KAction* DolphinView::createDeleteAction(KActionCollection* collection)
+{
+ KAction* deleteAction = collection->addAction("delete");
+ deleteAction->setIcon(KIcon("edit-delete"));
+ deleteAction->setText(i18nc("@action:inmenu File", "Delete"));
+ deleteAction->setShortcut(Qt::SHIFT | Qt::Key_Delete);
+ return deleteAction;
+}
+
+KAction* DolphinView::createNewDirAction(KActionCollection* collection)
+{
+ // This action doesn't appear in the GUI, it's for the shortcut only.
+ // KNewMenu takes care of the GUI stuff.
+ KAction* newDirAction = collection->addAction("create_dir");
+ newDirAction->setText(i18n("Create Folder..."));
+ newDirAction->setShortcut(Qt::Key_F10);
+ return newDirAction;
+}
+
+KAction* DolphinView::createSortDescendingAction(KActionCollection* collection)
+{
+ KToggleAction* sortDescending = collection->add<KToggleAction>("descending");
+ sortDescending->setText(i18nc("@action:inmenu Sort", "Descending"));
+ return sortDescending;
+}
+
+QActionGroup* DolphinView::createAdditionalInformationActionGroup(KActionCollection* collection)
+{
+ QActionGroup* showInformationGroup = new QActionGroup(collection);
+
+ KToggleAction* showSizeInfo = collection->add<KToggleAction>("show_size_info");
+ showSizeInfo->setText(i18nc("@action:inmenu Additional information", "Size"));
+ showSizeInfo->setData(KFileItemDelegate::Size);
+ showSizeInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showDateInfo = collection->add<KToggleAction>("show_date_info");
+ showDateInfo->setText(i18nc("@action:inmenu Additional information", "Date"));
+ showDateInfo->setData(KFileItemDelegate::ModificationTime);
+ showDateInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showPermissionsInfo = collection->add<KToggleAction>("show_permissions_info");
+ showPermissionsInfo->setText(i18nc("@action:inmenu Additional information", "Permissions"));
+ showPermissionsInfo->setData(KFileItemDelegate::Permissions);
+ showPermissionsInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showOwnerInfo = collection->add<KToggleAction>("show_owner_info");
+ showOwnerInfo->setText(i18nc("@action:inmenu Additional information", "Owner"));
+ showOwnerInfo->setData(KFileItemDelegate::Owner);
+ showOwnerInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showGroupInfo = collection->add<KToggleAction>("show_group_info");
+ showGroupInfo->setText(i18nc("@action:inmenu Additional information", "Group"));
+ showGroupInfo->setData(KFileItemDelegate::OwnerAndGroup);
+ showGroupInfo->setActionGroup(showInformationGroup);
+
+ KToggleAction* showMimeInfo = collection->add<KToggleAction>("show_mime_info");
+ showMimeInfo->setText(i18nc("@action:inmenu Additional information", "Type"));
+ showMimeInfo->setData(KFileItemDelegate::FriendlyMimeType);
+ showMimeInfo->setActionGroup(showInformationGroup);
+
+ return showInformationGroup;