From: Eugene Popov Date: Thu, 28 Dec 2023 10:06:09 +0000 (+0200) Subject: Always automatically choose a new file name while duplicating X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/c8dffc433caacc9955b3054f6255ae50176e5533?ds=sidebyside Always automatically choose a new file name while duplicating Since now when duplicating items we automatically generate a name for the new item, we can do the same if an item with that name already exists. BUG: 475410 --- diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index d51ed0e06..6b77a46ea 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -863,9 +863,12 @@ void DolphinView::duplicateSelectedItems() const QMimeDatabase db; + m_clearSelectionBeforeSelectingNewItems = true; + m_markFirstNewlySelectedItemAsCurrent = true; + m_selectJobCreatedItems = true; + // Duplicate all selected items and append "copy" to the end of the file name // but before the filename extension, if present - QList newSelection; for (const auto &item : itemList) { const QUrl originalURL = item.url(); const QString originalDirectoryPath = originalURL.adjusted(QUrl::RemoveFilename).path(); @@ -890,15 +893,14 @@ void DolphinView::duplicateSelectedItems() } KIO::CopyJob *job = KIO::copyAs(originalURL, duplicateURL); + job->setAutoRename(true); KJobWidgets::setWindow(job, this); - if (job) { - newSelection << duplicateURL; - KIO::FileUndoManager::self()->recordCopyJob(job); - } + connect(job, &KIO::CopyJob::result, this, &DolphinView::slotJobResult); + connect(job, &KIO::CopyJob::copyingDone, this, &DolphinView::slotItemCreatedFromJob); + connect(job, &KIO::CopyJob::copyingLinkDone, this, &DolphinView::slotItemLinkCreatedFromJob); + KIO::FileUndoManager::self()->recordCopyJob(job); } - - forceUrlsSelection(newSelection.first(), newSelection); } void DolphinView::stopLoading() @@ -1422,6 +1424,11 @@ void DolphinView::slotItemCreatedFromJob(KIO::Job *, const QUrl &, const QUrl &t slotItemCreated(to); } +void DolphinView::slotItemLinkCreatedFromJob(KIO::Job *, const QUrl &, const QString &, const QUrl &to) +{ + slotItemCreated(to); +} + void DolphinView::slotItemCreated(const QUrl &url) { if (m_markFirstNewlySelectedItemAsCurrent) { diff --git a/src/views/dolphinview.h b/src/views/dolphinview.h index c1463de6d..d4f82ae2f 100644 --- a/src/views/dolphinview.h +++ b/src/views/dolphinview.h @@ -695,6 +695,7 @@ private Q_SLOTS: void slotRenameDialogRenamingFinished(const QList &urls); void slotSelectedItemTextPressed(int index); void slotItemCreatedFromJob(KIO::Job *, const QUrl &, const QUrl &to); + void slotItemLinkCreatedFromJob(KIO::Job *, const QUrl &, const QString &, const QUrl &to); void slotIncreaseZoom(); void slotDecreaseZoom(); void slotSwipeUp();