int ImageSortSettings::compare(const ImageInfo& left, const ImageInfo& right, SortRole role) const { switch (role) { case SortByFileName: return naturalCompare(left.name(), right.name(), currentSortOrder, sortCaseSensitivity); case SortByFilePath: return naturalCompare(left.filePath(), right.filePath(), currentSortOrder, sortCaseSensitivity); case SortByFileSize: return compareByOrder(left.fileSize(), right.fileSize(), currentSortOrder); case SortByModificationDate: return compareByOrder(left.modDateTime(), right.modDateTime(), currentSortOrder); case SortByCreationDate: return compareByOrder(left.dateTime(), right.dateTime(), currentSortOrder); case SortByRating: // I have the feeling that inverting the sort order for rating is the natural order return - compareByOrder(left.rating(), right.rating(), currentSortOrder); case SortByImageSize: { QSize leftSize = left.dimensions(); QSize rightSize = right.dimensions(); int leftPixels = leftSize.width() * leftSize.height(); int rightPixels = rightSize.width() * rightSize.height(); return compareByOrder(leftPixels, rightPixels, currentSortOrder); } default: return 1; } }
int ShowfotoItemSortSettings::compare(const ShowfotoItemInfo& left, const ShowfotoItemInfo& right, SortRole role) const { switch (role) { case SortByFileName: return naturalCompare(left.name, right.name, currentSortOrder, sortCaseSensitivity); case SortByFileSize: return compareByOrder(left.size, right.size, currentSortOrder); //FIXME: Change it to creation date instead of modification date. //TODO : complete the needed functions case SortByCreationDate: return compareByOrder(left.ctime, right.ctime, currentSortOrder); default: return 1; } }
bool ShowfotoItemSortSettings::lessThan(const QVariant& left, const QVariant& right) const { if (left.type() != right.type()) { return false; } switch (left.type()) { case QVariant::Int: return compareByOrder(left.toInt(), right.toInt(), currentSortOrder); case QVariant::UInt: return compareByOrder(left.toUInt(), right.toUInt(), currentSortOrder); case QVariant::LongLong: return compareByOrder(left.toLongLong(), right.toLongLong(), currentSortOrder); case QVariant::ULongLong: return compareByOrder(left.toULongLong(), right.toULongLong(), currentSortOrder); case QVariant::Double: return compareByOrder(left.toDouble(), right.toDouble(), currentSortOrder); // case QVariant::Date: // return compareByOrder(left.toDate(), right.toDate(), currentSortOrder); // case QVariant::DateTime: // return compareByOrder(left.toDateTime(), right.toDateTime(), currentSortOrder); // case QVariant::Time: // return compareByOrder(left.toTime(), right.toTime(), currentSortOrder); case QVariant::Rect: case QVariant::RectF: { QRectF rectLeft = left.toRectF(); QRectF rectRight = right.toRectF(); int result; if ((result = compareByOrder(rectLeft.top(), rectRight.top(), currentSortOrder)) != 0) { return result < 0; } if ((result = compareByOrder(rectLeft.left(), rectRight.left(), currentSortOrder)) != 0) { return result < 0; } QSizeF sizeLeft = rectLeft.size(), sizeRight = rectRight.size(); if ((result = compareByOrder(sizeLeft.width()*sizeLeft.height(), sizeRight.width()*sizeRight.height(), currentSortOrder)) != 0) { return result < 0; } } default: return naturalCompare(left.toString(), right.toString(), currentSortOrder, sortCaseSensitivity); } }
int CamItemSortSettings::compare(const CamItemInfo& left, const CamItemInfo& right, SortRole role) const { switch (role) { case SortByFileName: return naturalCompare(left.name, right.name, currentSortOrder, sortCaseSensitivity); case SortByFilePath: return naturalCompare(left.url().toLocalFile(), right.url().toLocalFile(), currentSortOrder, sortCaseSensitivity); case SortByFileSize: return compareByOrder(left.size, right.size, currentSortOrder); //FIXME: Change it to creation date instead of modification date. case SortByCreationDate: return compareByOrder(left.ctime, right.ctime, currentSortOrder); case SortByRating: return compareByOrder(left.rating, right.rating, currentSortOrder); case SortByDownloadState: return compareByOrder(left.downloaded, right.downloaded, currentSortOrder); default: return 1; } }