X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/5de115bcc59374dada52bda39945c9fac6ac26bf..008f524498475dd28717b1f3d65e2c99bbdb5b2a:/src/treeviewcontextmenu.cpp diff --git a/src/treeviewcontextmenu.cpp b/src/treeviewcontextmenu.cpp index 07145fe0e..f15ac0c6e 100644 --- a/src/treeviewcontextmenu.cpp +++ b/src/treeviewcontextmenu.cpp @@ -20,6 +20,9 @@ #include "treeviewcontextmenu.h" +#include "dolphin_folderspanelsettings.h" + +#include #include #include #include @@ -29,12 +32,14 @@ #include #include "renamedialog.h" +#include "treeviewsidebarpage.h" #include #include -TreeViewContextMenu::TreeViewContextMenu(QWidget* parent, - KFileItem* fileInfo) : +TreeViewContextMenu::TreeViewContextMenu(TreeViewSidebarPage* parent, + const KFileItem& fileInfo) : + QObject(parent), m_parent(parent), m_fileInfo(fileInfo) { @@ -46,58 +51,67 @@ TreeViewContextMenu::~TreeViewContextMenu() void TreeViewContextMenu::open() { - Q_ASSERT(m_fileInfo != 0); - KMenu* popup = new KMenu(m_parent); - // insert 'Cut', 'Copy' and 'Paste' - QAction* cutAction = new QAction(KIcon("edit-cut"), i18n("Cut"), this); - connect(cutAction, SIGNAL(triggered()), this, SLOT(cut())); - - QAction* copyAction = new QAction(KIcon("edit-copy"), i18n("Copy"), this); - connect(copyAction, SIGNAL(triggered()), this, SLOT(copy())); - - QAction* pasteAction = new QAction(KIcon("edit-paste"), i18n("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())); - - popup->addAction(cutAction); - popup->addAction(copyAction); - popup->addAction(pasteAction); - popup->addSeparator(); - - // insert 'Rename' - QAction* renameAction = new QAction(i18n("Rename..."), this); - connect(renameAction, SIGNAL(triggered()), this, SLOT(rename())); - popup->addAction(renameAction); - - // insert 'Move to Trash' and (optionally) 'Delete' - const KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::NoGlobals); - const KConfigGroup kdeConfig(globalConfig, "KDE"); - bool showDeleteCommand = kdeConfig.readEntry("ShowDeleteCommand", false); - const KUrl& url = m_fileInfo->url(); - if (url.isLocalFile()) { - QAction* moveToTrashAction = new QAction(KIcon("edit-trash"), i18n("Move To Trash"), this); - connect(moveToTrashAction, SIGNAL(triggered()), this, SLOT(moveToTrash())); - popup->addAction(moveToTrashAction); - } else { - showDeleteCommand = true; - } + if (!m_fileInfo.isNull()) { + // insert 'Cut', 'Copy' and 'Paste' + QAction* cutAction = new QAction(KIcon("edit-cut"), i18nc("@action:inmenu", "Cut"), this); + connect(cutAction, SIGNAL(triggered()), this, SLOT(cut())); + + 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())); + + popup->addAction(cutAction); + popup->addAction(copyAction); + popup->addAction(pasteAction); + popup->addSeparator(); + + // insert 'Rename' + QAction* renameAction = new QAction(i18nc("@action:inmenu", "Rename..."), this); + 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); + const KUrl& url = m_fileInfo.url(); + if (url.isLocalFile()) { + QAction* moveToTrashAction = new QAction(KIcon("user-trash"), + i18nc("@action:inmenu", "Move To Trash"), this); + connect(moveToTrashAction, SIGNAL(triggered()), this, SLOT(moveToTrash())); + popup->addAction(moveToTrashAction); + } else { + showDeleteCommand = true; + } + + if (showDeleteCommand) { + QAction* deleteAction = new QAction(KIcon("edit-delete"), i18nc("@action:inmenu", "Delete"), this); + connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteItem())); + popup->addAction(deleteAction); + } + + popup->addSeparator(); + + // insert 'Properties' entry + QAction* propertiesAction = new QAction(i18nc("@action:inmenu", "Properties"), this); + connect(propertiesAction, SIGNAL(triggered()), this, SLOT(showProperties())); + popup->addAction(propertiesAction); - if (showDeleteCommand) { - QAction* deleteAction = new QAction(KIcon("edit-delete"), i18n("Delete"), this); - connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteItem())); - popup->addAction(deleteAction); + popup->addSeparator(); } - popup->addSeparator(); + QAction* showHiddenFilesAction = new QAction(i18nc("@action:inmenu", "Show Hidden Files"), this); + showHiddenFilesAction->setCheckable(true); + showHiddenFilesAction->setChecked(FoldersPanelSettings::showHiddenFiles()); + popup->addAction(showHiddenFilesAction); - // insert 'Properties' entry - QAction* propertiesAction = new QAction(i18n("Properties"), this); - connect(propertiesAction, SIGNAL(triggered()), this, SLOT(showProperties())); - popup->addAction(propertiesAction); + connect(showHiddenFilesAction, SIGNAL(toggled(bool)), this, SLOT(setShowHiddenFiles(bool))); popup->exec(QCursor::pos()); popup->deleteLater(); @@ -107,7 +121,7 @@ void TreeViewContextMenu::cut() { QMimeData* mimeData = new QMimeData(); KUrl::List kdeUrls; - kdeUrls.append(m_fileInfo->url()); + kdeUrls.append(m_fileInfo.url()); KonqMimeData::populateMimeData(mimeData, kdeUrls, KUrl::List(), true); QApplication::clipboard()->setMimeData(mimeData); } @@ -116,7 +130,7 @@ void TreeViewContextMenu::copy() { QMimeData* mimeData = new QMimeData(); KUrl::List kdeUrls; - kdeUrls.append(m_fileInfo->url()); + kdeUrls.append(m_fileInfo.url()); KonqMimeData::populateMimeData(mimeData, kdeUrls, KUrl::List(), false); QApplication::clipboard()->setMimeData(mimeData); } @@ -127,7 +141,7 @@ void TreeViewContextMenu::paste() const QMimeData* mimeData = clipboard->mimeData(); const KUrl::List source = KUrl::List::fromMimeData(mimeData); - const KUrl& dest = m_fileInfo->url(); + const KUrl& dest = m_fileInfo.url(); if (KonqMimeData::decodeIsCutSelection(mimeData)) { KonqOperations::copy(m_parent, KonqOperations::MOVE, source, dest); clipboard->clear(); @@ -138,31 +152,38 @@ void TreeViewContextMenu::paste() void TreeViewContextMenu::rename() { - const KUrl& oldUrl = m_fileInfo->url(); - RenameDialog dialog(oldUrl); + 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 = oldUrl; + KUrl newUrl = m_fileInfo.url(); newUrl.setFileName(newName); - KonqOperations::rename(m_parent, oldUrl, newUrl); + KonqOperations::rename(m_parent, m_fileInfo.url(), newUrl); } } } void TreeViewContextMenu::moveToTrash() { - KonqOperations::del(m_parent, KonqOperations::TRASH, m_fileInfo->url()); + KonqOperations::del(m_parent, KonqOperations::TRASH, m_fileInfo.url()); } void TreeViewContextMenu::deleteItem() { - KonqOperations::del(m_parent, KonqOperations::DEL, m_fileInfo->url()); + KonqOperations::del(m_parent, KonqOperations::DEL, m_fileInfo.url()); } void TreeViewContextMenu::showProperties() { - new KPropertiesDialog(m_fileInfo->url()); + KPropertiesDialog dialog(m_fileInfo.url(), m_parent); + dialog.exec(); +} + +void TreeViewContextMenu::setShowHiddenFiles(bool show) +{ + m_parent->setShowHiddenFiles(show); } #include "treeviewcontextmenu.moc"