X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/299e5f28593bedb8eb84888a2d67d8491afcc8a1..ddcca5fb912cd91c7c6c535e01fb963869ccaee9:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 2f9f2a386..f0dc17837 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -719,24 +719,25 @@ void DolphinView::duplicateSelectedItems() QList newSelection; for (const auto &item : itemList) { const QUrl originalURL = item.url(); + const QString originalDirectoryPath = originalURL.adjusted(QUrl::RemoveFilename).path(); const QString originalFileName = item.name(); + QString extension = db.suffixForFileName(originalFileName); QUrl duplicateURL = originalURL; // No extension; new filename is " copy" if (extension.isEmpty()) { - duplicateURL.setPath(i18nc(" copy", "%1 copy", originalURL.path())); + duplicateURL.setPath(originalDirectoryPath + i18nc(" copy", "%1 copy", originalFileName)); // There's an extension; new filename is " copy." } else { // Need to add a dot since QMimeDatabase::suffixForFileName() doesn't include it extension = QLatin1String(".") + extension; - const QString directoryPath = originalURL.adjusted(QUrl::RemoveFilename).path(); const QString originalFilenameWithoutExtension = originalFileName.chopped(extension.size()); // Preserve file's original filename extension in case the casing differs // from what QMimeDatabase::suffixForFileName() returned const QString originalExtension = originalFileName.right(extension.size()); - duplicateURL.setPath(i18nc(" copy.", "%1%2 copy%3", directoryPath, originalFilenameWithoutExtension, originalExtension)); + duplicateURL.setPath(originalDirectoryPath + i18nc(" copy", "%1 copy", originalFilenameWithoutExtension) + originalExtension); } KIO::CopyJob* job = KIO::copyAs(originalURL, duplicateURL, KIO::HideProgressInfo); @@ -1199,7 +1200,7 @@ void DolphinView::slotPasteJobResult(KJob *job) emit errorMessage(job->errorString()); } if (!m_selectedUrls.isEmpty()) { - m_selectedUrls << KDirModel::simplifiedUrlList(m_selectedUrls); + m_selectedUrls = KDirModel::simplifiedUrlList(m_selectedUrls); } } @@ -1492,13 +1493,27 @@ void DolphinView::calculateItemCount(int& fileCount, KIO::filesize_t& totalFileSize) const { const int itemCount = m_model->count(); + + bool countFileSize = true; + + // In case we have a precomputed value + const auto job = KIO::statDetails(m_model->rootItem().url(), KIO::StatJob::SourceSide, KIO::StatRecursiveSize); + job->exec(); + const auto entry = job->statResult(); + if (entry.contains(KIO::UDSEntry::UDS_RECURSIVE_SIZE)) { + totalFileSize = static_cast(entry.numberValue(KIO::UDSEntry::UDS_RECURSIVE_SIZE)); + countFileSize = false; + } + for (int i = 0; i < itemCount; ++i) { const KFileItem item = m_model->fileItem(i); if (item.isDir()) { ++folderCount; } else { ++fileCount; - totalFileSize += item.size(); + if (countFileSize) { + totalFileSize += item.size(); + } } } }