From b2e54c3a316b502ab4f7a95250f8316dc591c057 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Tue, 17 Apr 2012 18:13:31 +0200 Subject: Implement inline-renaming for the new view-engine BUG: 286893 FIXED-IN: 4.9.0 --- src/panels/folders/folderspanel.cpp | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'src/panels/folders/folderspanel.cpp') diff --git a/src/panels/folders/folderspanel.cpp b/src/panels/folders/folderspanel.cpp index 5f1b4a7e0..40e5eca8d 100644 --- a/src/panels/folders/folderspanel.cpp +++ b/src/panels/folders/folderspanel.cpp @@ -42,7 +42,6 @@ #include #include -#include #include @@ -89,18 +88,8 @@ bool FoldersPanel::autoScrolling() const void FoldersPanel::rename(const KFileItem& item) { - // TODO: Inline renaming is not supported anymore in Dolphin 2.0 - if (false /* GeneralSettings::renameInline() */) { - //const QModelIndex dirIndex = m_dolphinModel->indexForItem(item); - //const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex); - //m_treeView->edit(proxyIndex); - } else { - RenameDialog* dialog = new RenameDialog(this, KFileItemList() << item); - dialog->setAttribute(Qt::WA_DeleteOnClose); - dialog->show(); - dialog->raise(); - dialog->activateWindow(); - } + const int index = fileItemModel()->index(item); + m_controller->view()->editRole(index, "name"); } bool FoldersPanel::urlChanged() @@ -147,6 +136,9 @@ void FoldersPanel::showEvent(QShowEvent* event) // opening the folders panel. view->setOpacity(0); + connect(view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), + this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant))); + KFileItemModel* model = new KFileItemModel(this); model->setShowDirectoriesOnly(true); model->setShowHiddenFiles(FoldersPanelSettings::hiddenFilesShown()); @@ -261,6 +253,17 @@ void FoldersPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* eve } } +void FoldersPanel::slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value) +{ + if (role == "name") { + const KFileItem item = fileItemModel()->fileItem(index); + const QString newName = value.toString(); + if (!newName.isEmpty() && newName != item.text() && newName != QLatin1String(".") && newName != QLatin1String("..")) { + KonqOperations::rename(this, item.url(), newName); + } + } +} + void FoldersPanel::slotLoadingCompleted() { if (m_controller->view()->opacity() == 0) { -- cgit v1.3