fix display of folder sizes for empty folders

also fixes 1 byte error in size calculation for all folders
This commit is contained in:
Ilia Kats 2020-12-15 22:20:51 +01:00
parent d74853ef85
commit acc42f9189
3 changed files with 12 additions and 17 deletions

View file

@ -53,20 +53,16 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray& role,
if (role == "size") {
if (values.value("isDir").toBool()) {
// The item represents a directory.
if (!roleValue.isNull()) {
const int count = values.value("count").toInt();
if (count > 0) {
if (DetailsModeSettings::directorySizeCount()) {
// Show the number of sub directories instead of the file size of the directory.
text = i18ncp("@item:intable", "%1 item", "%1 items", count);
} else {
// if we have directory size available
if (roleValue != -1) {
const KIO::filesize_t size = roleValue.value<KIO::filesize_t>();
text = KFormat().formatByteSize(size);
}
}
if (!roleValue.isNull() && roleValue != -1) {
// The item represents a directory.
if (DetailsModeSettings::directorySizeCount()) {
// Show the number of sub directories instead of the file size of the directory.
const int count = values.value("count").toInt();
text = i18ncp("@item:intable", "%1 item", "%1 items", count);
} else {
// if we have directory size available
const KIO::filesize_t size = roleValue.value<KIO::filesize_t>();
text = KFormat().formatByteSize(size);
}
}
} else {

View file

@ -776,9 +776,7 @@ void KFileItemModelRolesUpdater::slotDirectoryContentsCountReceived(const QStrin
if (getSizeRole) {
data.insert("count", count);
if (size != -1) {
data.insert("size", QVariant::fromValue(size));
}
data.insert("size", QVariant::fromValue(size));
}
if (getIsExpandableRole) {
data.insert("isExpandable", count > 0);

View file

@ -35,6 +35,7 @@ KDirectoryContentsCounterWorker::CountResult walkDir(const QString &dirPath,
auto dir = QT_OPENDIR(QFile::encodeName(dirPath));
if (dir) {
count = 0;
size = 0;
QT_STATBUF buf;
while ((dirEntry = QT_READDIR(dir))) {