X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/99419d3d74b1aa6667dfb5132d0122779ebdb5aa..46483d7c082bf6ec0044b08469757de8a0c08360:/src/treeviewcontextmenu.cpp diff --git a/src/treeviewcontextmenu.cpp b/src/treeviewcontextmenu.cpp index f15ac0c6e..9e8638002 100644 --- a/src/treeviewcontextmenu.cpp +++ b/src/treeviewcontextmenu.cpp @@ -27,11 +27,11 @@ #include #include #include +#include #include #include #include -#include "renamedialog.h" #include "treeviewsidebarpage.h" #include @@ -54,18 +54,21 @@ void TreeViewContextMenu::open() KMenu* popup = new KMenu(m_parent); if (!m_fileInfo.isNull()) { + KonqFileItemCapabilities capabilities(KFileItemList() << m_fileInfo); + // insert 'Cut', 'Copy' and 'Paste' - QAction* cutAction = new QAction(KIcon("edit-cut"), i18nc("@action:inmenu", "Cut"), this); + QAction* cutAction = new QAction(KIcon("edit-cut"), i18nc("@action:inmenu", "Cut"), this); + cutAction->setEnabled(capabilities.supportsMoving()); connect(cutAction, SIGNAL(triggered()), this, SLOT(cut())); - QAction* copyAction = new QAction(KIcon("edit-copy"), i18nc("@action:inmenu", "Copy"), this); + QAction* copyAction = new QAction(KIcon("edit-copy"), i18nc("@action:inmenu", "Copy"), this); connect(copyAction, SIGNAL(triggered()), this, SLOT(copy())); QAction* pasteAction = new QAction(KIcon("edit-paste"), i18nc("@action:inmenu", "Paste"), this); const QMimeData* mimeData = QApplication::clipboard()->mimeData(); const KUrl::List pasteData = KUrl::List::fromMimeData(mimeData); - pasteAction->setEnabled(!pasteData.isEmpty()); connect(pasteAction, SIGNAL(triggered()), this, SLOT(paste())); + pasteAction->setEnabled(!pasteData.isEmpty() && capabilities.supportsWriting()); popup->addAction(cutAction); popup->addAction(copyAction); @@ -74,16 +77,21 @@ void TreeViewContextMenu::open() // insert 'Rename' QAction* renameAction = new QAction(i18nc("@action:inmenu", "Rename..."), this); + renameAction->setEnabled(capabilities.supportsMoving()); connect(renameAction, SIGNAL(triggered()), this, SLOT(rename())); popup->addAction(renameAction); // insert 'Move to Trash' and (optionally) 'Delete' - KConfigGroup kdeConfig(KGlobal::config(), "KDE"); - bool showDeleteCommand = kdeConfig.readEntry("ShowDeleteCommand", false); + KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals); + KConfigGroup configGroup(globalConfig, "KDE"); + bool showDeleteCommand = configGroup.readEntry("ShowDeleteCommand", false); + const KUrl& url = m_fileInfo.url(); if (url.isLocalFile()) { QAction* moveToTrashAction = new QAction(KIcon("user-trash"), i18nc("@action:inmenu", "Move To Trash"), this); + const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving(); + moveToTrashAction->setEnabled(enableMoveToTrash); connect(moveToTrashAction, SIGNAL(triggered()), this, SLOT(moveToTrash())); popup->addAction(moveToTrashAction); } else { @@ -92,6 +100,7 @@ void TreeViewContextMenu::open() if (showDeleteCommand) { QAction* deleteAction = new QAction(KIcon("edit-delete"), i18nc("@action:inmenu", "Delete"), this); + deleteAction->setEnabled(capabilities.supportsDeleting()); connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteItem())); popup->addAction(deleteAction); } @@ -117,21 +126,27 @@ void TreeViewContextMenu::open() popup->deleteLater(); } -void TreeViewContextMenu::cut() +void TreeViewContextMenu::populateMimeData(QMimeData* mimeData, bool cut) { - QMimeData* mimeData = new QMimeData(); KUrl::List kdeUrls; kdeUrls.append(m_fileInfo.url()); - KonqMimeData::populateMimeData(mimeData, kdeUrls, KUrl::List(), true); + KUrl::List mostLocalUrls; + bool dummy; + mostLocalUrls.append(m_fileInfo.mostLocalUrl(dummy)); + KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, cut); +} + +void TreeViewContextMenu::cut() +{ + QMimeData* mimeData = new QMimeData(); + populateMimeData(mimeData, true); QApplication::clipboard()->setMimeData(mimeData); } void TreeViewContextMenu::copy() { QMimeData* mimeData = new QMimeData(); - KUrl::List kdeUrls; - kdeUrls.append(m_fileInfo.url()); - KonqMimeData::populateMimeData(mimeData, kdeUrls, KUrl::List(), false); + populateMimeData(mimeData, false); QApplication::clipboard()->setMimeData(mimeData); } @@ -152,17 +167,7 @@ void TreeViewContextMenu::paste() void TreeViewContextMenu::rename() { - KFileItemList item; - item.append(m_fileInfo); - RenameDialog dialog(m_parent, item); - if (dialog.exec() == QDialog::Accepted) { - const QString& newName = dialog.newName(); - if (!newName.isEmpty()) { - KUrl newUrl = m_fileInfo.url(); - newUrl.setFileName(newName); - KonqOperations::rename(m_parent, m_fileInfo.url(), newUrl); - } - } + m_parent->rename(m_fileInfo); } void TreeViewContextMenu::moveToTrash()