Changeset 10586 for branches/1.9x/qt/torrent-filter.cc
- Timestamp:
- May 1, 2010, 4:46:08 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1.9x/qt/torrent-filter.cc
r9868 r10586 86 86 ***/ 87 87 88 namespace 89 { 90 template <typename T> int compare( const T a, const T b ) 91 { 92 if( a < b ) return -1; 93 if( b < a ) return 1; 94 return 0; 95 } 96 } 97 88 98 bool 89 99 TorrentFilter :: lessThan( const QModelIndex& left, const QModelIndex& right ) const … … 91 101 const Torrent * a = sourceModel()->data( left, TorrentModel::TorrentRole ).value<const Torrent*>(); 92 102 const Torrent * b = sourceModel()->data( right, TorrentModel::TorrentRole ).value<const Torrent*>(); 93 bool less;103 int less = 0; 94 104 95 105 switch( myPrefs.get<SortMode>(Prefs::SORT_MODE).mode() ) 96 106 { 97 107 case SortMode :: SORT_BY_SIZE: 98 less = a->sizeWhenDone() < b->sizeWhenDone();108 less = compare( a->sizeWhenDone(), b->sizeWhenDone() ); 99 109 break; 100 110 case SortMode :: SORT_BY_ACTIVITY: 101 less = a->downloadSpeed() + a->uploadSpeed() < b->downloadSpeed() + b->uploadSpeed(); 111 less = compare( a->downloadSpeed() + a->uploadSpeed(), b->downloadSpeed() + b->uploadSpeed() ); 112 if( !less ) 113 less = compare( a->uploadedEver(), b->uploadedEver() ); 102 114 break; 103 115 case SortMode :: SORT_BY_AGE: 104 less = a->dateAdded() < b->dateAdded();116 less = compare( a->dateAdded().toTime_t(), b->dateAdded().toTime_t() ); 105 117 break; 106 118 case SortMode :: SORT_BY_ID: 107 less = a->id() < b->id(); 108 break; 109 case SortMode :: SORT_BY_RATIO: 110 less = a->compareRatio( *b ) < 0; 111 break; 112 case SortMode :: SORT_BY_PROGRESS: 113 less = a->percentDone() < b->percentDone(); 114 break; 115 case SortMode :: SORT_BY_ETA: 116 less = a->compareETA( *b ) < 0; 119 less = compare( a->id(), b->id() ); 117 120 break; 118 121 case SortMode :: SORT_BY_STATE: … … 120 123 less = a->hasError(); 121 124 else 122 less = a->getActivity() < b->getActivity(); 125 less = compare( a->getActivity(), b->getActivity() ); 126 if( less ) 127 break; 128 case SortMode :: SORT_BY_PROGRESS: 129 less = compare( a->percentDone(), b->percentDone() ); 130 if( less ) 131 break; 132 case SortMode :: SORT_BY_RATIO: 133 less = a->compareRatio( *b ); 134 break; 135 case SortMode :: SORT_BY_ETA: 136 less = a->compareETA( *b ); 123 137 break; 124 138 case SortMode :: SORT_BY_TRACKER: 125 less = a->compareTracker( *b ) < 0;139 less = a->compareTracker( *b ); 126 140 break; 127 141 default: 128 less = a->name().compare( b->name(), Qt::CaseInsensitive ) > 0; 129 break; 130 } 131 132 return less; 142 break; 143 } 144 if( less == 0 ) 145 less = -a->name().compare( b->name(), Qt::CaseInsensitive ); 146 if( less == 0 ) 147 less = compare( a->hashString(), b->hashString() ); 148 return less < 0; 133 149 } 134 150
Note: See TracChangeset
for help on using the changeset viewer.