X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f37ecd6ecfab9bc1d2929504b4f6e4363f8137b9..7a593fc92bf28fbdcdec0e241e18ee8ba2ad7334:/src/panels/folders/treeviewcontextmenu.cpp diff --git a/src/panels/folders/treeviewcontextmenu.cpp b/src/panels/folders/treeviewcontextmenu.cpp index c63772a38..83ffa87a7 100644 --- a/src/panels/folders/treeviewcontextmenu.cpp +++ b/src/panels/folders/treeviewcontextmenu.cpp @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) and * - * Cvetoslav Ludmiloff * + * Copyright (C) 2006-2010 by Peter Penz * + * Copyright (C) 2006 by Cvetoslav Ludmiloff * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -20,28 +20,26 @@ #include "treeviewcontextmenu.h" -#include "dolphin_folderspanelsettings.h" - -#include -#include -#include -#include +#include +#include +#include +#include #include -#include +#include #include -#include -#include +#include +#include #include "folderspanel.h" -#include -#include +#include +#include TreeViewContextMenu::TreeViewContextMenu(FoldersPanel* parent, const KFileItem& fileInfo) : QObject(parent), m_parent(parent), - m_fileInfo(fileInfo) + m_fileItem(fileInfo) { } @@ -53,8 +51,8 @@ void TreeViewContextMenu::open() { KMenu* popup = new KMenu(m_parent); - if (!m_fileInfo.isNull()) { - KonqFileItemCapabilities capabilities(KFileItemList() << m_fileInfo); + if (!m_fileItem.isNull()) { + KFileItemListProperties capabilities(KFileItemList() << m_fileItem); // insert 'Cut', 'Copy' and 'Paste' QAction* cutAction = new QAction(KIcon("edit-cut"), i18nc("@action:inmenu", "Cut"), this); @@ -64,11 +62,10 @@ void TreeViewContextMenu::open() 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); + const QPair pasteInfo = KonqOperations::pasteInfo(m_fileItem.url()); + QAction* pasteAction = new QAction(KIcon("edit-paste"), pasteInfo.second, this); connect(pasteAction, SIGNAL(triggered()), this, SLOT(paste())); - pasteAction->setEnabled(!pasteData.isEmpty() && capabilities.supportsWriting()); + pasteAction->setEnabled(pasteInfo.first); popup->addAction(cutAction); popup->addAction(copyAction); @@ -78,6 +75,7 @@ void TreeViewContextMenu::open() // insert 'Rename' QAction* renameAction = new QAction(i18nc("@action:inmenu", "Rename..."), this); renameAction->setEnabled(capabilities.supportsMoving()); + renameAction->setIcon(KIcon("edit-rename")); connect(renameAction, SIGNAL(triggered()), this, SLOT(rename())); popup->addAction(renameAction); @@ -86,10 +84,10 @@ void TreeViewContextMenu::open() KConfigGroup configGroup(globalConfig, "KDE"); bool showDeleteCommand = configGroup.readEntry("ShowDeleteCommand", false); - const KUrl& url = m_fileInfo.url(); + const KUrl url = m_fileItem.url(); if (url.isLocalFile()) { QAction* moveToTrashAction = new QAction(KIcon("user-trash"), - i18nc("@action:inmenu", "Move To Trash"), this); + i18nc("@action:inmenu", "Move to Trash"), this); const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving(); moveToTrashAction->setEnabled(enableMoveToTrash); connect(moveToTrashAction, SIGNAL(triggered()), this, SLOT(moveToTrash())); @@ -106,33 +104,54 @@ void TreeViewContextMenu::open() } popup->addSeparator(); + } + // insert 'Show Hidden Files' + QAction* showHiddenFilesAction = new QAction(i18nc("@action:inmenu", "Show Hidden Files"), this); + showHiddenFilesAction->setCheckable(true); + showHiddenFilesAction->setChecked(m_parent->showHiddenFiles()); + popup->addAction(showHiddenFilesAction); + connect(showHiddenFilesAction, SIGNAL(toggled(bool)), this, SLOT(setShowHiddenFiles(bool))); + + // insert 'Automatic Scrolling' + QAction* autoScrollingAction = new QAction(i18nc("@action:inmenu", "Automatic Scrolling"), this); + autoScrollingAction->setCheckable(true); + autoScrollingAction->setChecked(m_parent->autoScrolling()); + // TODO: Temporary disabled. Horizontal autoscrolling will be implemented later either + // in KItemViews or manually as part of the FoldersPanel + //popup->addAction(autoScrollingAction); + connect(autoScrollingAction, SIGNAL(toggled(bool)), this, SLOT(setAutoScrolling(bool))); + + if (!m_fileItem.isNull()) { // insert 'Properties' entry QAction* propertiesAction = new QAction(i18nc("@action:inmenu", "Properties"), this); + propertiesAction->setIcon(KIcon("document-properties")); connect(propertiesAction, SIGNAL(triggered()), this, SLOT(showProperties())); popup->addAction(propertiesAction); + } + QList customActions = m_parent->customContextMenuActions(); + if (!customActions.isEmpty()) { popup->addSeparator(); + foreach (QAction* action, customActions) { + popup->addAction(action); + } } - QAction* showHiddenFilesAction = new QAction(i18nc("@action:inmenu", "Show Hidden Files"), this); - showHiddenFilesAction->setCheckable(true); - showHiddenFilesAction->setChecked(FoldersPanelSettings::showHiddenFiles()); - popup->addAction(showHiddenFilesAction); - - connect(showHiddenFilesAction, SIGNAL(toggled(bool)), this, SLOT(setShowHiddenFiles(bool))); - + QWeakPointer popupPtr = popup; popup->exec(QCursor::pos()); - popup->deleteLater(); + if (popupPtr.data()) { + popupPtr.data()->deleteLater(); + } } void TreeViewContextMenu::populateMimeData(QMimeData* mimeData, bool cut) { KUrl::List kdeUrls; - kdeUrls.append(m_fileInfo.url()); + kdeUrls.append(m_fileItem.url()); KUrl::List mostLocalUrls; bool dummy; - mostLocalUrls.append(m_fileInfo.mostLocalUrl(dummy)); + mostLocalUrls.append(m_fileItem.mostLocalUrl(dummy)); KonqMimeData::populateMimeData(mimeData, kdeUrls, mostLocalUrls, cut); } @@ -152,38 +171,29 @@ void TreeViewContextMenu::copy() void TreeViewContextMenu::paste() { - QClipboard* clipboard = QApplication::clipboard(); - const QMimeData* mimeData = clipboard->mimeData(); - - const KUrl::List source = KUrl::List::fromMimeData(mimeData); - const KUrl& dest = m_fileInfo.url(); - if (KonqMimeData::decodeIsCutSelection(mimeData)) { - KonqOperations::copy(m_parent, KonqOperations::MOVE, source, dest); - clipboard->clear(); - } else { - KonqOperations::copy(m_parent, KonqOperations::COPY, source, dest); - } + KonqOperations::doPaste(m_parent, m_fileItem.url()); } void TreeViewContextMenu::rename() { - m_parent->rename(m_fileInfo); + m_parent->rename(m_fileItem); } void TreeViewContextMenu::moveToTrash() { - KonqOperations::del(m_parent, KonqOperations::TRASH, m_fileInfo.url()); + KonqOperations::del(m_parent, KonqOperations::TRASH, m_fileItem.url()); } void TreeViewContextMenu::deleteItem() { - KonqOperations::del(m_parent, KonqOperations::DEL, m_fileInfo.url()); + KonqOperations::del(m_parent, KonqOperations::DEL, m_fileItem.url()); } void TreeViewContextMenu::showProperties() { - KPropertiesDialog dialog(m_fileInfo.url(), m_parent); - dialog.exec(); + KPropertiesDialog* dialog = new KPropertiesDialog(m_fileItem.url(), m_parent); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->show(); } void TreeViewContextMenu::setShowHiddenFiles(bool show) @@ -191,4 +201,9 @@ void TreeViewContextMenu::setShowHiddenFiles(bool show) m_parent->setShowHiddenFiles(show); } +void TreeViewContextMenu::setAutoScrolling(bool enable) +{ + m_parent->setAutoScrolling(enable); +} + #include "treeviewcontextmenu.moc"