diff options
author | Arno <am@disconnect.de> | 2013-08-22 15:42:38 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-08-22 15:42:38 +0200 |
commit | a74ed29b3cdac32e4ca1a5480e806798a7ddb0eb (patch) | |
tree | 1b268455e2d10c75a06d006f87812366a2f8e714 /archiveview.cpp | |
parent | 369c14264c664b38049ac081cf60b8485a4042cb (diff) | |
download | SheMov-a74ed29b3cdac32e4ca1a5480e806798a7ddb0eb.tar.gz SheMov-a74ed29b3cdac32e4ca1a5480e806798a7ddb0eb.tar.bz2 SheMov-a74ed29b3cdac32e4ca1a5480e806798a7ddb0eb.zip |
ArchiveProxy: Sort numeric by SeriesPart
Implement lessThan for ArchiveProxy.
Diffstat (limited to 'archiveview.cpp')
-rw-r--r-- | archiveview.cpp | 18 |
1 files changed, 18 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 */ |