]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
Fixed the signal connection that emits completed in Dolphin's KPart
[dolphin.git] / src / views / dolphinview.cpp
index 3fbe56ebacd5a16fd403853c966ed71b221c3b49..7494ac5e6ecb02ed922bc5224196e1f0850ece78 100644 (file)
@@ -47,6 +47,7 @@
 #include <kitemviews/kitemlistview.h>
 #include <kitemviews/kitemlistcontroller.h>
 #include <KIO/DeleteJob>
+#include <KIO/JobUiDelegate>
 #include <KIO/NetAccess>
 #include <KIO/PreviewJob>
 #include <KJob>
@@ -156,6 +157,8 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
             this, SLOT(slotSortRoleChangedByHeader(QByteArray,QByteArray)));
     connect(view, SIGNAL(visibleRolesChanged(QList<QByteArray>,QList<QByteArray>)),
             this, SLOT(slotVisibleRolesChangedByHeader(QList<QByteArray>,QList<QByteArray>)));
+    connect(view, SIGNAL(roleEditingFinished(int,QByteArray,QVariant)),
+            this, SLOT(slotRoleEditingFinished(int,QByteArray,QVariant)));
     connect(view->header(), SIGNAL(columnWidthChanged(QByteArray,qreal,qreal)),
             this, SLOT(slotHeaderColumnWidthChanged(QByteArray,qreal,qreal)));
 
@@ -536,6 +539,8 @@ QString DolphinView::statusBarText() const
                         KGlobal::locale()->formatByteSize(totalFileSize));
     } else if (folderCount > 0) {
         summary = foldersText;
+    } else {
+        summary = i18nc("@info:status", "0 Folders, 0 Files");
     }
 
     return summary;
@@ -596,30 +601,26 @@ void DolphinView::clearSelection()
 
 void DolphinView::renameSelectedItems()
 {
-    KFileItemList items = selectedItems();
-    const int itemCount = items.count();
-    if (itemCount < 1) {
-        return;
-    }
-
-    // TODO: The new view-engine introduced with Dolphin 2.0 does not support inline
-    // renaming yet.
-    /*if ((itemCount == 1) && DolphinSettings::instance().generalSettings()->renameInline()) {
-        const QModelIndex dirIndex = m_viewAccessor.dirModel()->indexForItem(items.first());
-        const QModelIndex proxyIndex = m_viewAccessor.proxyModel()->mapFromSource(dirIndex);
-        m_viewAccessor.itemView()->edit(proxyIndex);
-    } else {*/
-        RenameDialog* dialog = new RenameDialog(this, items);
-        dialog->setAttribute(Qt::WA_DeleteOnClose);
-        dialog->show();
-        dialog->raise();
-        dialog->activateWindow();
-    //}
-
-    // Assure that the current index remains visible when KFileItemModel
-    // will notify the view about changed items (which might result in
-    // a changed sorting).
-    m_assureVisibleCurrentIndex = true;
+    const KFileItemList items = selectedItems();
+     if (items.isEmpty()) {
+         return;
+     }
+
+     if (items.count() == 1) {
+         const int index = fileItemModel()->index(items.first());
+         m_container->controller()->view()->editRole(index, "name");
+     } else {
+         RenameDialog* dialog = new RenameDialog(this, items);
+         dialog->setAttribute(Qt::WA_DeleteOnClose);
+         dialog->show();
+         dialog->raise();
+         dialog->activateWindow();
+     }
+
+     // Assure that the current index remains visible when KFileItemModel
+     // will notify the view about changed items (which might result in
+     // a changed sorting).
+     m_assureVisibleCurrentIndex = true;
 }
 
 void DolphinView::trashSelectedItems()
@@ -638,6 +639,9 @@ void DolphinView::deleteSelectedItems()
 
     if (del) {
         KIO::Job* job = KIO::del(list);
+        if (job->ui()) {
+            job->ui()->setWindow(this);
+        }
         connect(job, SIGNAL(result(KJob*)),
                 this, SLOT(slotDeleteFileFinished(KJob*)));
     }
@@ -1289,6 +1293,17 @@ void DolphinView::slotVisibleRolesChangedByHeader(const QList<QByteArray>& curre
     emit visibleRolesChanged(m_visibleRoles, previousVisibleRoles);
 }
 
+void DolphinView::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);
+        }
+    }
+}
+
 KFileItemModel* DolphinView::fileItemModel() const
 {
     return static_cast<KFileItemModel*>(m_container->controller()->model());