summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--archiveview.cpp18
-rw-r--r--archiveview.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/archiveview.cpp b/archiveview.cpp
index 7523461..fcfe04d 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -416,6 +416,24 @@ bool ArchiveProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePare
return model->matchRecursive(nameIdx, mFilter);
}
+bool ArchiveProxy::lessThan(const QModelIndex &left, const QModelIndex &right) const{
+ int lNodeType = left.data(ArchiveModel::TypeRole).toInt();
+ int rNodeType = right.data(ArchiveModel::TypeRole).toInt();
+ if((lNodeType == ArchiveModel::SeriesPartNode) && (rNodeType == ArchiveModel::SeriesPartNode)){
+ int lPartNo = left.data(ArchiveModel::SeriesPartRole).toInt();
+ int rPartNo = right.data(ArchiveModel::SeriesPartRole).toInt();
+ if((lPartNo > -1) && (rPartNo > -1)){
+ return (lPartNo < rPartNo);
+ }
+ QString lSubtitle = left.data(ArchiveModel::SubtitleRole).toString();
+ QString rSubtitle = right.data(ArchiveModel::SubtitleRole).toString();
+ if(!lSubtitle.isEmpty() && !rSubtitle.isEmpty()){
+ return (lSubtitle < rSubtitle);
+ }
+ }
+ return QSortFilterProxyModel::lessThan(left, right);
+}
+
ArchiveFilesProxy::ArchiveFilesProxy(QObject *parent) : QSortFilterProxyModel(parent) {}
/* Mapping Editor Widget */
diff --git a/archiveview.h b/archiveview.h
index 36e915c..58213a1 100644
--- a/archiveview.h
+++ b/archiveview.h
@@ -113,6 +113,7 @@ class ArchiveProxy : public QSortFilterProxyModel {
protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
+ bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
private:
QRegExp mFilter;