From 981f8b3acf7e76f27c02f4ced80d55b424cc7497 Mon Sep 17 00:00:00 2001 From: Tannin Date: Sun, 3 Feb 2013 12:49:25 +0100 Subject: initial commit to mercurial repository. Corresponds to MO version 0.12.6 --- src/downloadlistsortproxy.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/downloadlistsortproxy.cpp (limited to 'src/downloadlistsortproxy.cpp') diff --git a/src/downloadlistsortproxy.cpp b/src/downloadlistsortproxy.cpp new file mode 100644 index 00000000..7efbd78f --- /dev/null +++ b/src/downloadlistsortproxy.cpp @@ -0,0 +1,55 @@ +/* +Copyright (C) 2012 Sebastian Herbord. All rights reserved. + +This file is part of Mod Organizer. + +Mod Organizer is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Mod Organizer is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mod Organizer. If not, see . +*/ + +#include "downloadlistsortproxy.h" + +DownloadListSortProxy::DownloadListSortProxy(const DownloadManager *manager, QObject *parent) + : QSortFilterProxyModel(parent), m_Manager(manager), m_CurrentFilter() +{ +} + +void DownloadListSortProxy::updateFilter(const QString &filter) +{ + m_CurrentFilter = filter; + invalidateFilter(); +} + +bool DownloadListSortProxy::lessThan(const QModelIndex &left, + const QModelIndex &right) const +{ + int leftIndex = sourceModel()->data(left).toInt(); + int rightIndex = sourceModel()->data(right).toInt(); + + if (left.column() == 0) { + return m_Manager->getFileName(leftIndex).compare(m_Manager->getFileName(rightIndex), Qt::CaseInsensitive) < 0; + } else if (left.column() == 1) { + return leftIndex < rightIndex; + } else { + return m_Manager->getState(leftIndex) < m_Manager->getState(rightIndex); + } +} + + +bool DownloadListSortProxy::filterAcceptsRow(int source_row, const QModelIndex&) const +{ + if (m_CurrentFilter.length() == 0) { + return true; + } + return m_Manager->getFileName(source_row).contains(m_CurrentFilter, Qt::CaseInsensitive); +} -- cgit v1.3.1