Here's the final working solution... Line 3 is the key... our parent class has a handle to a QTableView (m_pTrackTableView)
Qt Code:
  1. bool SortFilterProxyModel::lessThan( const QModelIndex &left, const QModelIndex &right ) const
  2. {
  3. const Qt::SortOrder sortOrder = ((MixxxView *)this->parent())->m_pTrackTableView->horizontalHeader()->sortIndicatorOrder();
  4.  
  5. // Do the strings look like they are BPM counts?
  6. const QString bpmPattern = "^[0-9]+\\.[0-9]+$";
  7. if (sourceModel()->data( left ).toString().trimmed().indexOf(QRegExp(bpmPattern)) == 0
  8. && sourceModel()->data( right ).toString().trimmed().indexOf(QRegExp(bpmPattern)) == 0) {
  9. double leftBPM = sourceModel()->data( left ).toString().trimmed().toDouble();
  10. double rightBPM = sourceModel()->data( right ).toString().trimmed().toDouble();
  11.  
  12. if (leftBPM == 0.0 && sortOrder == Qt::AscendingOrder) rightBPM = -1 * rightBPM;
  13. if (rightBPM == 0.0 && sortOrder == Qt::AscendingOrder) leftBPM = -1 * leftBPM;
  14. // qDebug() << "BPM Comparasion leftBPM =" << leftBPM << "rightBPM =" << rightBPM;
  15. return leftBPM < rightBPM;
  16. }
  17. ....
To copy to clipboard, switch view to plain text mode