All pastes #924836 Raw Edit

sortorder thing

public cpp v1 · immutable
·published 2008-03-01 19:36 UTC
rendered paste body
#include <proxymodel.h>#include <QDebug>#include <mixxxview.h>#include <wtracktableview.h>#include <QTableView>#include <QHeaderView>SortFilterProxyModel::SortFilterProxyModel( QObject * parent ) :    QSortFilterProxyModel( parent ){    setFilterCaseSensitivity( Qt::CaseInsensitive );}bool SortFilterProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex & sourceParent ) const{    QModelIndex index1 = sourceModel()->index(sourceRow, 0, sourceParent);    QModelIndex index2 = sourceModel()->index(sourceRow, 1, sourceParent);    QModelIndex index3 = sourceModel()->index(sourceRow, 6, sourceParent);    return ( sourceModel()->data(index1).toString().contains(filterRegExp())            || sourceModel()->data(index2).toString().contains(filterRegExp())            || sourceModel()->data(index3).toString().contains(filterRegExp())    );}bool SortFilterProxyModel::lessThan( const QModelIndex &left, const QModelIndex &right ) const{  // Do the strings look like they are BPM counts?  const QString bpmPattern = "^[0-9]+\\.[0-9]+$";  if (sourceModel()->data( left ).toString().trimmed().indexOf(QRegExp(bpmPattern)) == 0    && sourceModel()->data( right ).toString().trimmed().indexOf(QRegExp(bpmPattern)) == 0) {    double leftBPM = sourceModel()->data( left ).toString().trimmed().toDouble();    double rightBPM = sourceModel()->data( right ).toString().trimmed().toDouble();    qDebug() << "left BPM --" << " row: " << left.row() << " col: " << left.column() << " header: " << (WTrackTableView *)( ( (MixxxView *)(this->parent()) )->m_pTrackTableView )->horizontalHeader();    // const Qt::SortOrder sortOrder = sourceModel()->headerData(left.column(), Qt::Horizontal)->sortIndicatorOrder();//    const Qt::SortOrder sortOrder = this->parent().m_pTrackTableView.header()->sortIndicatorOrder();    if (leftBPM == 0.0 /* && sortOrder == Qt::AscendingOrder */) rightBPM = -1 * rightBPM;    if (rightBPM == 0.0 /* && sortOrder == Qt::AscendingOrder */) leftBPM = -1 * leftBPM;    // qDebug() << "BPM Comparasion leftBPM =" << leftBPM << "rightBPM =" << rightBPM;    // return leftBPM < rightBPM;  }  const QString invalidStartCharsExpr = "^[()]";  QString leftStr = sourceModel()->data( left ).toString().trimmed().simplified().toLower().remove(QRegExp("^the "));;  QString rightStr = sourceModel()->data( right ).toString().trimmed().simplified().toLower().remove(QRegExp("^the "));;  leftStr = leftStr.replace(QRegExp(invalidStartCharsExpr, QRegExp::RegExp2), "~~");  if (leftStr.contains(" - ")) { leftStr = "~"; }  if (!leftStr.length()) { leftStr = "~~~"; }  rightStr = rightStr.replace(QRegExp(invalidStartCharsExpr, QRegExp::RegExp2), "~~");  if (rightStr.contains(" - ")) { rightStr = "~"; }  if (!rightStr.length()) { rightStr = "~~~"; }//  if (leftStr.startsWith("~") || rightStr.startsWith("~")) qDebug() << "left:" << leftStr <<"right:" << rightStr << " result:" << (leftStr < rightStr);  return leftStr < rightStr;}