Esempio n. 1
0
bool TorrentSortModel::lessThan(const QModelIndex & left, const QModelIndex & right) const
{
    Torrent leftItem = static_cast<TorrentModel *>(sourceModel())->torrent(left.row());
    Torrent rightItem = static_cast<TorrentModel *>(sourceModel())->torrent(right.row());
    
    if (left.column() == right.column())
    {
        int column = left.column();
        switch (column)
        {
            case TorrentModel::Name:
                return leftItem.name().toLower() < rightItem.name().toLower();
            case TorrentModel::State:
                return leftItem.state() < rightItem.state();
            case TorrentModel::Size:
                return leftItem.size() < rightItem.size();
            case TorrentModel::Seeders:
                return leftItem.seedsConnected() < rightItem.seedsConnected();
            case TorrentModel::Leechers:
                return leftItem.leechsConnected() < rightItem.leechsConnected();
            case TorrentModel::DownloadRate:
                return leftItem.downloadRate() < rightItem.downloadRate();
            case TorrentModel::Downloaded:
                return leftItem.downloaded() < rightItem.downloaded();
            case TorrentModel::UploadRate:
                return leftItem.uploadRate() < rightItem.uploadRate();
            case TorrentModel::Uploaded:
                return leftItem.uploaded() < rightItem.uploaded();
            case TorrentModel::Ratio:
                return leftItem.ratio() < rightItem.ratio();
            case TorrentModel::Priority:
                return leftItem.priority() < rightItem.priority();
            default:
                return false;
        }
    }
    else
    {
        return false;
    }
}