1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-13 17:43:59 +02:00

Fix sorting by file size (Don't sort the formatted strings, but the actual file size).

Also, use TrackModel::Column enum instead of int constants.
This commit is contained in:
Frank Osterfeld
2011-06-07 19:54:29 +02:00
parent 3ec9308916
commit bee2a7165a

View File

@@ -55,6 +55,7 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
unsigned int bitrate1 = 0, bitrate2 = 0; unsigned int bitrate1 = 0, bitrate2 = 0;
unsigned int mtime1 = 0, mtime2 = 0; unsigned int mtime1 = 0, mtime2 = 0;
unsigned int id1 = 0, id2 = 0; unsigned int id1 = 0, id2 = 0;
unsigned int size1 = 0, size2 = 0;
if ( q1->numResults() ) if ( q1->numResults() )
{ {
@@ -66,6 +67,7 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
bitrate1 = r->bitrate(); bitrate1 = r->bitrate();
mtime1 = r->modificationTime(); mtime1 = r->modificationTime();
id1 = r->dbid(); id1 = r->dbid();
size1 = r->size();
} }
if ( q2->numResults() ) if ( q2->numResults() )
{ {
@@ -77,9 +79,10 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
bitrate2 = r->bitrate(); bitrate2 = r->bitrate();
mtime2 = r->modificationTime(); mtime2 = r->modificationTime();
id2 = r->dbid(); id2 = r->dbid();
size2 = r->size();
} }
if ( left.column() == 0 ) // sort by artist if ( left.column() == TrackModel::Artist ) // sort by artist
{ {
if ( artist1 == artist2 ) if ( artist1 == artist2 )
{ {
@@ -96,7 +99,7 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
return QString::localeAwareCompare( artist1, artist2 ) < 0; return QString::localeAwareCompare( artist1, artist2 ) < 0;
} }
else if ( left.column() == 2 ) // sort by album else if ( left.column() == TrackModel::Album ) // sort by album
{ {
if ( album1 == album2 ) if ( album1 == album2 )
{ {
@@ -108,21 +111,27 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
return QString::localeAwareCompare( album1, album2 ) < 0; return QString::localeAwareCompare( album1, album2 ) < 0;
} }
else if ( left.column() == 4 ) // sort by bitrate else if ( left.column() == TrackModel::Bitrate ) // sort by bitrate
{ {
if ( bitrate1 == bitrate2 ) if ( bitrate1 == bitrate2 )
return id1 < id2; return id1 < id2;
return bitrate1 < bitrate2; return bitrate1 < bitrate2;
} }
else if ( left.column() == 5 ) // sort by mtime else if ( left.column() == TrackModel::Age ) // sort by mtime
{ {
if ( mtime1 == mtime2 ) if ( mtime1 == mtime2 )
return id1 < id2; return id1 < id2;
return mtime1 < mtime2; return mtime1 < mtime2;
} }
else if ( left.column() == TrackModel::Filesize ) // sort by file size
{
if ( size1 == size2 )
return id1 < id2;
return size1 < size2;
}
return QString::localeAwareCompare( sourceModel()->data( left ).toString(), return QString::localeAwareCompare( sourceModel()->data( left ).toString(),
sourceModel()->data( right ).toString() ) < 0; sourceModel()->data( right ).toString() ) < 0;
} }