+ oldWithString = withString;
+ oldFileDate = fileDate;
+ oldGroupInfo = groupInfo;
+ return groupInfo;
+}
+
+KFileItemModel::ItemGroupInfo KFileItemModel::permissionRoleGroup(const ItemData *itemData, bool withString) const
+{
+ static bool oldWithString;
+ static ItemGroupInfo oldGroupInfo;
+ static QFileDevice::Permissions oldPermissions;
+ ItemGroupInfo groupInfo;
+
+ const QFileInfo info(itemData->item.url().toLocalFile());
+ const QFileDevice::Permissions permissions = info.permissions();
+ if (permissions == oldPermissions && withString == oldWithString) {
+ return oldGroupInfo;
+ }
+ groupInfo.comparable = (int)permissions;
+
+ if (withString) {
+ // Set user string
+ QString user;
+ if (permissions & QFile::ReadUser) {
+ user = i18nc("@item:intext Access permission, concatenated", "Read, ");
+ }
+ if (permissions & QFile::WriteUser) {
+ user += i18nc("@item:intext Access permission, concatenated", "Write, ");
+ }
+ if (permissions & QFile::ExeUser) {
+ user += i18nc("@item:intext Access permission, concatenated", "Execute, ");
+ }
+ user = user.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : user.mid(0, user.length() - 2);
+
+ // Set group string
+ QString group;
+ if (permissions & QFile::ReadGroup) {
+ group = i18nc("@item:intext Access permission, concatenated", "Read, ");
+ }
+ if (permissions & QFile::WriteGroup) {
+ group += i18nc("@item:intext Access permission, concatenated", "Write, ");
+ }
+ if (permissions & QFile::ExeGroup) {
+ group += i18nc("@item:intext Access permission, concatenated", "Execute, ");
+ }
+ group = group.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : group.mid(0, group.length() - 2);
+
+ // Set others string
+ QString others;
+ if (permissions & QFile::ReadOther) {
+ others = i18nc("@item:intext Access permission, concatenated", "Read, ");
+ }
+ if (permissions & QFile::WriteOther) {
+ others += i18nc("@item:intext Access permission, concatenated", "Write, ");
+ }
+ if (permissions & QFile::ExeOther) {
+ others += i18nc("@item:intext Access permission, concatenated", "Execute, ");
+ }
+ others = others.isEmpty() ? i18nc("@item:intext Access permission, concatenated", "Forbidden") : others.mid(0, others.length() - 2);
+ groupInfo.text = i18nc("@title:group Files and folders by permissions", "User: %1 | Group: %2 | Others: %3", user, group, others);
+ }
+ oldWithString = withString;
+ oldPermissions = permissions;
+ oldGroupInfo = groupInfo;
+ return groupInfo;
+}
+
+KFileItemModel::ItemGroupInfo KFileItemModel::ratingRoleGroup(const ItemData *itemData, bool withString) const
+{
+ ItemGroupInfo groupInfo;
+ groupInfo.comparable = itemData->values.value("rating", 0).toInt();
+ if (withString) {
+ // Dolphin does not currently use string representation of star rating
+ // as stars are rendered as graphics in group headers.
+ groupInfo.text = i18nc("@item:intext Rated N (stars)", "Rated %i", QString::number(groupInfo.comparable));
+ }
+ return groupInfo;