if (values.value("isDir").toBool()) {
// The item represents a directory. Show the number of sub directories
// instead of the file size of the directory.
- if (roleValue.isNull()) {
- text = i18nc("@item:intable", "Unknown");
- } else {
- const KIO::filesize_t size = roleValue.value<KIO::filesize_t>();
- text = i18ncp("@item:intable", "%1 item", "%1 items", size);
+ if (!roleValue.isNull()) {
+ const int count = roleValue.toInt();
+ if (count < 0) {
+ text = i18nc("@item:intable", "Unknown");
+ } else {
+ text = i18ncp("@item:intable", "%1 item", "%1 items", count);
+ }
}
} else {
// Show the size in kilobytes (always round up)
} else if (valueB.isNull()) {
result = +1;
} else {
- result = fileSizeCompare(valueA.value<KIO::filesize_t>(), valueB.value<KIO::filesize_t>());
+ result = valueA.toInt() - valueB.toInt();
}
} else {
// See "if (m_sortFoldersFirst || m_sortRole == SizeRole)" in KFileItemModel::lessThan():
Q_ASSERT(!itemB.isDir());
- result = fileSizeCompare(itemA.size(), itemB.size());
+ const KIO::filesize_t sizeA = itemA.size();
+ const KIO::filesize_t sizeB = itemB.size();
+ if (sizeA > sizeB) {
+ result = +1;
+ } else if (sizeA < sizeB) {
+ result = -1;
+ } else {
+ result = 0;
+ }
}
break;
}
return items;
}
-int KFileItemModel::fileSizeCompare(KIO::filesize_t a, KIO::filesize_t b)
-{
- if (a > b) {
- return +1;
- } else if (a < b) {
- return -1;
- } else {
- return 0;
- }
-}
-
#include "kfileitemmodel.moc"
*/
KFileItemList childItems(const KFileItem& item) const;
- /**
- * Helper method for sortRoleCompare().
- * @return 0 if both sizes are equal, +1 if a > b and -1 if a < b.
- */
- static int fileSizeCompare(KIO::filesize_t a, KIO::filesize_t b);
-
private:
QWeakPointer<KDirLister> m_dirLister;
const bool getSizeRole = m_roles.contains("size");
const bool getIsExpandableRole = m_roles.contains("isExpandable");
- if ((getSizeRole || getIsExpandableRole) && item.isDir() && item.isLocalFile()) {
- const QString path = item.localPath();
- const int count = subItemsCount(path);
- if (count >= 0) {
+ if ((getSizeRole || getIsExpandableRole) && item.isDir()) {
+ if (item.isLocalFile()) {
+ const QString path = item.localPath();
+ const int count = subItemsCount(path);
if (getSizeRole) {
- data.insert("size", KIO::filesize_t(count));
+ data.insert("size", count);
}
if (getIsExpandableRole) {
data.insert("isExpandable", count > 0);
}
+ } else if (getSizeRole) {
+ data.insert("size", -1); // -1 indicates an unknown number of items
}
}