#include "kfileitemmodel.h"
#include "kitemlistview.h"
-#include "dolphin_detailsmodesettings.h"
+#include "dolphin_contentdisplaysettings.h"
#include <KFormat>
#include <KLocalizedString>
// 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);
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);
if (dimensions.isValid()) {
text = i18nc("width × height", "%1 × %2", dimensions.width(), dimensions.height());
}
+ } else if (role == "permissions") {
+ const auto permissions = roleValue.value<QVariantList>();
+
+ 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);
}
bool KFileItemListWidget::isRoleRightAligned(const QByteArray &role) const
{
- return role == "size";
+ return role == "size" || role == "permissions";
}
bool KFileItemListWidget::isHidden() const
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();
{
return dynamic_cast<KFileItemListView *>(parentItem());
}
+
+#include "moc_kfileitemlistwidget.cpp"