#include <kpropertiesdialog.h>
#include <ktoggleaction.h>
#include <kio/netaccess.h>
+#include <ktoolinvocation.h>
#include <kauthorized.h>
-#include <kshell.h>
+#include <knewmenu.h>
+#include <kmenu.h>
#include <QActionGroup>
#include <QApplication>
m_actionHandler->updateViewActions();
slotSelectionChanged(KFileItemList()); // initially disable selection-dependent actions
- // TODO sort_by_* actions
-
// TODO there was a "always open a new window" (when clicking on a directory) setting in konqueror
// (sort of spacial navigation)
void DolphinPart::createActions()
{
+ // Edit menu
+
+ m_newMenu = new KNewMenu(actionCollection(), widget(), "new_menu");
+ connect(m_newMenu->menu(), SIGNAL(aboutToShow()),
+ this, SLOT(updateNewMenu()));
+
KAction *editMimeTypeAction = actionCollection()->addAction( "editMimeType" );
editMimeTypeAction->setText( i18nc("@action:inmenu Edit", "&Edit File Type..." ) );
connect(editMimeTypeAction, SIGNAL(triggered()), SLOT(slotEditMimeType()));
QAction* deleteAction = actionCollection()->action("delete");
QAction* editMimeTypeAction = actionCollection()->action("editMimeType");
QAction* propertiesAction = actionCollection()->action("properties");
+ QAction* deleteWithTrashShortcut = actionCollection()->action("delete_shortcut"); // see DolphinViewActionHandler
if (!hasSelection) {
stateChanged("has_no_selection");
emit m_extension->enableAction("cut", false);
emit m_extension->enableAction("copy", false);
- renameAction->setEnabled(false);
- moveToTrashAction->setEnabled(false);
- deleteAction->setEnabled(false);
+ deleteWithTrashShortcut->setEnabled(false);
editMimeTypeAction->setEnabled(false);
- propertiesAction->setEnabled(false);
} else {
stateChanged("has_selection");
+ // TODO share this code with DolphinMainWindow::updateEditActions (and the desktop code)
+ // in libkonq
KonqFileItemCapabilities capabilities(selection);
const bool enableMoveToTrash = capabilities.isLocal() && capabilities.supportsMoving();
renameAction->setEnabled(capabilities.supportsMoving());
moveToTrashAction->setEnabled(enableMoveToTrash);
deleteAction->setEnabled(capabilities.supportsDeleting());
+ deleteWithTrashShortcut->setEnabled(capabilities.supportsDeleting() && !enableMoveToTrash);
editMimeTypeAction->setEnabled(true);
propertiesAction->setEnabled(true);
emit m_extension->enableAction("cut", capabilities.supportsMoving());
// If the parent directory of the selected item is writable, moving
// and deleting are possible.
KFileItem parentDir = m_dirLister->rootItem();
- if (!parentDir.isWritable()) {
+ if (!parentDir.isNull() && !parentDir.isWritable()) {
popupFlags |= KParts::BrowserExtension::NoDeletion;
sDeleting = false;
sMoving = false;
void DolphinPart::slotOpenTerminal()
{
- KConfigGroup confGroup(KGlobal::config(), "General"); // set by componentchooser kcm
- const QString preferredTerminal = confGroup.readPathEntry("TerminalApplication", "konsole");
-
QString dir(QDir::homePath());
KUrl u(url());
dir = u.path();
}
- // Compensate for terminal having arguments.
- QStringList args = KShell::splitArgs(preferredTerminal);
- if (args.isEmpty()) {
- return;
- }
- const QString prog = args.takeFirst();
- if (prog == "konsole") {
- args << "--workdir";
- args << dir;
- }
- QProcess::startDetached(prog, args);
+ KToolInvocation::invokeTerminal(QString(), dir);
+}
+
+void DolphinPart::updateNewMenu()
+{
+ // As requested by KNewMenu :
+ m_newMenu->slotCheckUpToDate();
+ // And set the files that the menu apply on :
+ m_newMenu->setPopupFiles(url());
}
#include "dolphinpart.moc"