X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/38c34eeca315c7be58e65d4d3fb72aaf7b866719..cebcf8db:/src/kitemviews/kfileitemlistwidget.cpp diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index 8002af597..fcfc9d7b1 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -9,7 +9,7 @@ #include "kfileitemmodel.h" #include "kitemlistview.h" -#include "dolphin_detailsmodesettings.h" +#include "dolphin_contentdisplaysettings.h" #include #include @@ -56,7 +56,7 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray &role, const QHa // use a hash + switch for a linear runtime. auto formatDate = [formatter, local](const QDateTime &time) { - if (DetailsModeSettings::useShortRelativeDates()) { + if (ContentDisplaySettings::useShortRelativeDates()) { return formatter.formatRelativeDateTime(time, QLocale::ShortFormat); } else { return local.toString(time, QLocale::ShortFormat); @@ -67,7 +67,8 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray &role, const QHa if (values.value("isDir").toBool()) { if (!roleValue.isNull() && roleValue != -1) { // The item represents a directory. - if (DetailsModeSettings::directorySizeCount()) { + if (ContentDisplaySettings::directorySizeMode() == ContentDisplaySettings::EnumDirectorySizeMode::ContentCount + || roleValue == -2 /* size is invalid */) { // 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); @@ -98,6 +99,20 @@ QString KFileItemListWidgetInformant::roleText(const QByteArray &role, const QHa if (dimensions.isValid()) { text = i18nc("width × height", "%1 × %2", dimensions.width(), dimensions.height()); } + } else if (role == "permissions") { + const auto permissions = roleValue.value(); + + switch (ContentDisplaySettings::usePermissionsFormat()) { + case ContentDisplaySettings::EnumUsePermissionsFormat::SymbolicFormat: + text = permissions.at(0).toString(); + break; + case ContentDisplaySettings::EnumUsePermissionsFormat::NumericFormat: + text = QString::number(permissions.at(1).toInt(), 8); + break; + case ContentDisplaySettings::EnumUsePermissionsFormat::CombinedFormat: + text = QLatin1String("%1 (%2)").arg(permissions.at(0).toString()).arg(permissions.at(1).toInt(), 0, 8); + break; + } } else { text = KStandardItemListWidgetInformant::roleText(role, values); } @@ -129,7 +144,7 @@ KItemListWidgetInformant *KFileItemListWidget::createInformant() bool KFileItemListWidget::isRoleRightAligned(const QByteArray &role) const { - return role == "size"; + return role == "size" || role == "permissions"; } bool KFileItemListWidget::isHidden() const @@ -189,6 +204,17 @@ void KFileItemListWidget::hoverSequenceStarted() view->setHoverSequenceState(itemUrl, 0); } +void KFileItemListWidget::forceUpdate() +{ + updateAdditionalInfoTextColor(); + // icon layout does not include the icons in the item selection rectangle + // so its icon does not need updating + if (listView()->itemLayout() != KStandardItemListView::ItemLayout::IconsLayout) { + invalidateIconCache(); + } + update(); +} + void KFileItemListWidget::hoverSequenceIndexChanged(int sequenceIndex) { KFileItemListView *view = listView(); @@ -221,3 +247,5 @@ KFileItemListView *KFileItemListWidget::listView() { return dynamic_cast(parentItem()); } + +#include "moc_kfileitemlistwidget.cpp"