/*
This file is part of the KDE project
- SPDX-FileCopyrightText: 2022 Felix Ernst <felixernst@zohomail.eu>
+ SPDX-FileCopyrightText: 2022 Felix Ernst <felixernst@kde.org>
SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include <QFontMetrics>
#include <QString>
-QString fileItemListToString(KFileItemList items, int maximumTextWidth, QFontMetrics fontMetrics, ItemsState itemsState)
+QString fileItemListToString(KFileItemList items, int maximumTextWidth, const QFontMetrics &fontMetrics, ItemsState itemsState)
{
QString text;
switch (items.count()) {
case 1:
- text = i18nc("Textual representation of a file. %1 is the name of the file/folder.",
- "\"%1\"", items.first().name());
+ text = i18nc("Textual representation of a file. %1 is the name of the file/folder.", "\"%1\"", items.first().name().replace("&", "&&"));
break;
case 2:
- text = i18nc("Textual representation of two files. %1 and %2 are names of files/folders.",
- "\"%1\" and \"%2\"", items.first().name(), items.last().name());
+ text =
+ i18nc("Textual representation of two files. %1 and %2 are names of files/folders.", "\"%1\" and \"%2\"", items.first().name().replace("&", "&&"), items.last().name().replace("&", "&&"));
break;
case 3:
text = i18nc("Textual representation of three files. %1, %2 and %3 are names of files/folders.",
- "\"%1\", \"%2\" and \"%3\"",
- items.first().name(), items.at(1).name(), items.last().name());
+ "\"%1\", \"%2\" and \"%3\"",
+ items.first().name().replace("&", "&&"),
+ items.at(1).name().replace("&", "&&"),
+ items.last().name().replace("&", "&&"));
break;
case 4:
text = i18nc("Textual representation of four files. %1, %2, %3 and %4 are names of files/folders.",
- "\"%1\", \"%2\", \"%3\" and \"%4\"",
- items.first().name(), items.at(1).name(), items.at(2).name(), items.last().name());
+ "\"%1\", \"%2\", \"%3\" and \"%4\"",
+ items.first().name().replace("&", "&&"),
+ items.at(1).name().replace("&", "&&"),
+ items.at(2).name().replace("&", "&&"),
+ items.last().name().replace("&", "&&"));
break;
case 5:
text = i18nc("Textual representation of five files. %1, %2, %3, %4 and %5 are names of files/folders.",
- "\"%1\", \"%2\", \"%3\", \"%4\" and \"%5\"",
- items.first().name(), items.at(1).name(), items.at(2).name(), items.at(3).name(), items.last().name());
+ "\"%1\", \"%2\", \"%3\", \"%4\" and \"%5\"",
+ items.first().name().replace("&", "&&"),
+ items.at(1).name().replace("&", "&&"),
+ items.at(2).name().replace("&", "&&"),
+ items.at(3).name().replace("&", "&&"),
+ items.last().name().replace("&", "&&"));
break;
default:
text = QString();
const KFileItemListProperties properties(items);
if (itemsState == Selected) {
if (properties.isFile()) {
- text = i18ncp("Textual representation of selected files. %1 is the number of files.",
- "One Selected File", "%1 Selected Files", items.count());
+ text = i18ncp("Textual representation of selected files. %1 is the number of files.", "One Selected File", "%1 Selected Files", items.count());
} else if (properties.isDirectory()) {
- text = i18ncp("Textual representation of selected folders. %1 is the number of folders.",
- "One Selected Folder", "%1 Selected Folders", items.count());
+ text =
+ i18ncp("Textual representation of selected folders. %1 is the number of folders.", "One Selected Folder", "%1 Selected Folders", items.count());
} else {
text = i18ncp("Textual representation of selected fileitems. %1 is the number of files/folders.",
- "One Selected Item", "%1 Selected Items", items.count());
+ "One Selected Item",
+ "%1 Selected Items",
+ items.count());
}
if (fontMetrics.horizontalAdvance(text) <= maximumTextWidth) {
}
if (properties.isFile()) {
- return i18ncp("Textual representation of files. %1 is the number of files.",
- "One File", "%1 Files", items.count());
+ return i18ncp("Textual representation of files. %1 is the number of files.", "One File", "%1 Files", items.count());
} else if (properties.isDirectory()) {
- return i18ncp("Textual representation of folders. %1 is the number of folders.",
- "One Folder", "%1 Folders", items.count());
+ return i18ncp("Textual representation of folders. %1 is the number of folders.", "One Folder", "%1 Folders", items.count());
} else {
- return i18ncp("Textual representation of fileitems. %1 is the number of files/folders.",
- "One Item", "%1 Items", items.count());
+ return i18ncp("Textual representation of fileitems. %1 is the number of files/folders.", "One Item", "%1 Items", items.count());
}
}