File indexing completed on 2024-06-23 05:08:10
0001 /* 0002 This file is part of KOrganizer. 0003 0004 SPDX-FileCopyrightText: 2008 Thomas Thrainer <tom_t@gmx.at> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 0007 */ 0008 0009 #pragma once 0010 0011 #include "prefs.h" 0012 0013 #include <QSortFilterProxyModel> 0014 #include <QStringList> 0015 0016 class TodoViewSortFilterProxyModel : public QSortFilterProxyModel 0017 { 0018 Q_OBJECT 0019 0020 public: 0021 explicit TodoViewSortFilterProxyModel(const EventViews::PrefsPtr &prefs, QObject *parent = nullptr); 0022 0023 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; 0024 0025 [[nodiscard]] const QStringList &categories() const 0026 { 0027 return mCategories; 0028 } 0029 0030 [[nodiscard]] const QStringList &priorities() const 0031 { 0032 return mPriorities; 0033 } 0034 0035 protected: 0036 bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; 0037 bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; 0038 0039 public Q_SLOTS: 0040 void setCategoryFilter(const QStringList &categories); 0041 void setPriorityFilter(const QStringList &priorities); 0042 0043 private: 0044 int compareStartDates(const QModelIndex &left, const QModelIndex &right) const; 0045 int compareDueDates(const QModelIndex &left, const QModelIndex &right) const; 0046 int compareCompletedDates(const QModelIndex &left, const QModelIndex &right) const; 0047 int comparePriorities(const QModelIndex &left, const QModelIndex &right) const; 0048 int compareCompletion(const QModelIndex &left, const QModelIndex &right) const; 0049 QStringList mCategories; 0050 QStringList mPriorities; 0051 Qt::SortOrder mSortOrder = Qt::AscendingOrder; 0052 EventViews::PrefsPtr mPreferences; 0053 };