summaryrefslogtreecommitdiffstats
path: root/archiveproxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archiveproxy.cpp')
-rw-r--r--archiveproxy.cpp43
1 files changed, 13 insertions, 30 deletions
diff --git a/archiveproxy.cpp b/archiveproxy.cpp
index 0249459..90374c6 100644
--- a/archiveproxy.cpp
+++ b/archiveproxy.cpp
@@ -9,8 +9,6 @@
#include <QRegExp>
#include <QList>
-#include <QDebug>
-
#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<int> 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);
}