From 41802000a0bcbb44c3add7f218eceec101f52cc0 Mon Sep 17 00:00:00 2001 From: am Date: Fri, 7 Aug 2009 19:53:55 +0000 Subject: -fixed sorting in ArchiveProxy: had to introduce two new fields to MovieModel: partno and seriesno -made changes to archiveviewiwdget.cpp and dialogs accordingly git-svn-id: file:///var/svn/repos2/shemov/trunk@400 f440f766-f032-0410-8965-dc7d17de2ca0 --- archiveproxy.cpp | 43 +++++++++++++------------------------------ 1 file changed, 13 insertions(+), 30 deletions(-) (limited to 'archiveproxy.cpp') diff --git a/archiveproxy.cpp b/archiveproxy.cpp index 0249459..90374c6 100644 --- a/archiveproxy.cpp +++ b/archiveproxy.cpp @@ -9,8 +9,6 @@ #include #include -#include - #include "archiveproxy.h" #include "moviemodel.h" @@ -74,35 +72,20 @@ bool ArchiveProxy::lessThan(const QModelIndex &left, const QModelIndex &right) c if(left.column() > 0){ return QSortFilterProxyModel::lessThan(left, right); } - QString l = left.data().toString(); - QString r = right.data().toString(); - QRegExp nos("(\\d+)"); - QList lnos, rnos; - int pos = 0; - bool dummy; - while((pos = nos.indexIn(l, pos)) != -1){ - lnos << nos.cap(1).toInt(&dummy); - pos += nos.matchedLength(); - } - pos = 0; - while((pos = nos.indexIn(r, pos)) != -1){ - rnos << nos.cap(1).toInt(&dummy); - pos += nos.matchedLength(); - } - QRegExp baseRe("(.*)\\s+\\d+"); - baseRe.indexIn(l); - QString lbase = baseRe.cap(1); - baseRe.indexIn(r); - QString rbase = baseRe.cap(1); - if((lnos.size() == 1) && (rnos.size() == 1)){ - if(lbase == rbase){ - return (lnos.at(0) < rnos.at(0)); + QString lbase = left.data(MovieModel::TitleBaseRole).toString(); + QString rbase = right.data(MovieModel::TitleBaseRole).toString(); + if(lbase == rbase){ + int lseriesno = left.data(MovieModel::SeriesNoRole).toInt(); + int rseriesno = right.data(MovieModel::SeriesNoRole).toInt(); + if(lseriesno == rseriesno){ + int lpartno = left.data(MovieModel::PartNoRole).toInt(); + int rpartno = right.data(MovieModel::PartNoRole).toInt(); + return (lpartno < rpartno); + }else{ + return (lseriesno < rseriesno); } - } - if((lnos.size() == 2) && (rnos.size() == 2)){ - if(lbase == rbase){ - return (lnos.at(1) < rnos.at(1)); - } + }else{ + return (lbase < rbase); } return QSortFilterProxyModel::lessThan(left, right); } -- cgit v1.2.3-70-g09d2