mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Use same logic for "no extension" case with Duplicate feature
Summary: In the "no extension" case, we weren't separating out the path and the original filename, breaking the feature for languages where the word "copy" would be at the beginning of the filename, not after it (e.g. "copia de foo" in Spanish, and similar in other romance languages). This patch fixes that by separating the original path and filename in the no extension case as is done for the other case, which should solve the issue. BUG: 419070 FIXED-IN: 20.04.0 Test Plan: No changes in English; should fix the issue in Spanish once new translations are done (see https://bugs.kde.org/show_bug.cgi?id=419070 for details) Reviewers: #dolphin, elvisangelaccio, arojas, meven, pino, #localization Reviewed By: #dolphin, elvisangelaccio Subscribers: aacid, kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D28227
This commit is contained in:
parent
35a8912c52
commit
9b82b08fb1
|
@ -719,24 +719,25 @@ void DolphinView::duplicateSelectedItems()
|
||||||
QList<QUrl> newSelection;
|
QList<QUrl> newSelection;
|
||||||
for (const auto &item : itemList) {
|
for (const auto &item : itemList) {
|
||||||
const QUrl originalURL = item.url();
|
const QUrl originalURL = item.url();
|
||||||
|
const QString originalDirectoryPath = originalURL.adjusted(QUrl::RemoveFilename).path();
|
||||||
const QString originalFileName = item.name();
|
const QString originalFileName = item.name();
|
||||||
|
|
||||||
QString extension = db.suffixForFileName(originalFileName);
|
QString extension = db.suffixForFileName(originalFileName);
|
||||||
|
|
||||||
QUrl duplicateURL = originalURL;
|
QUrl duplicateURL = originalURL;
|
||||||
|
|
||||||
// No extension; new filename is "<oldfilename> copy"
|
// No extension; new filename is "<oldfilename> copy"
|
||||||
if (extension.isEmpty()) {
|
if (extension.isEmpty()) {
|
||||||
duplicateURL.setPath(i18nc("<file path> copy", "%1 copy", originalURL.path()));
|
duplicateURL.setPath(originalDirectoryPath + i18nc("<filename> copy", "%1 copy", originalFileName));
|
||||||
// There's an extension; new filename is "<oldfilename> copy.<extension>"
|
// There's an extension; new filename is "<oldfilename> copy.<extension>"
|
||||||
} else {
|
} else {
|
||||||
// Need to add a dot since QMimeDatabase::suffixForFileName() doesn't include it
|
// Need to add a dot since QMimeDatabase::suffixForFileName() doesn't include it
|
||||||
extension = QLatin1String(".") + extension;
|
extension = QLatin1String(".") + extension;
|
||||||
const QString directoryPath = originalURL.adjusted(QUrl::RemoveFilename).path();
|
|
||||||
const QString originalFilenameWithoutExtension = originalFileName.chopped(extension.size());
|
const QString originalFilenameWithoutExtension = originalFileName.chopped(extension.size());
|
||||||
// Preserve file's original filename extension in case the casing differs
|
// Preserve file's original filename extension in case the casing differs
|
||||||
// from what QMimeDatabase::suffixForFileName() returned
|
// from what QMimeDatabase::suffixForFileName() returned
|
||||||
const QString originalExtension = originalFileName.right(extension.size());
|
const QString originalExtension = originalFileName.right(extension.size());
|
||||||
duplicateURL.setPath(i18nc("<file path><filename> copy.<extension>", "%1%2 copy%3", directoryPath, originalFilenameWithoutExtension, originalExtension));
|
duplicateURL.setPath(originalDirectoryPath + i18nc("<filename> copy", "%1 copy", originalFilenameWithoutExtension) + originalExtension);
|
||||||
}
|
}
|
||||||
|
|
||||||
KIO::CopyJob* job = KIO::copyAs(originalURL, duplicateURL, KIO::HideProgressInfo);
|
KIO::CopyJob* job = KIO::copyAs(originalURL, duplicateURL, KIO::HideProgressInfo);
|
||||||
|
|
Loading…
Reference in a new issue