File indexing completed on 2024-05-19 16:39:57
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <QSortFilterProxyModel> 0010 0011 #include <KUser> 0012 0013 class ProcessSortFilterModel : public QSortFilterProxyModel 0014 { 0015 Q_OBJECT 0016 Q_PROPERTY(QString filterString READ filterString WRITE setFilterString NOTIFY filterStringChanged) 0017 Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode NOTIFY viewModeChanged) 0018 Q_PROPERTY(QStringList hiddenAttributes READ hiddenAttributes WRITE setHiddenAttributes NOTIFY hiddenAttributesChanged) 0019 Q_PROPERTY(QVariantList filterPids READ filterPids WRITE setFilterPids NOTIFY filterPidsChanged) 0020 0021 public: 0022 enum ViewMode { 0023 ViewOwn, 0024 ViewUser, 0025 ViewSystem, 0026 ViewAll, 0027 }; 0028 Q_ENUM(ViewMode) 0029 0030 explicit ProcessSortFilterModel(QObject *parent = nullptr); 0031 0032 void setSourceModel(QAbstractItemModel *newSourceModel) override; 0033 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; 0034 bool filterAcceptsColumn(int sourceColumn, const QModelIndex &sourceParent) const override; 0035 0036 QString filterString() const; 0037 void setFilterString(const QString &newFilterString); 0038 Q_SIGNAL void filterStringChanged(); 0039 0040 ViewMode viewMode() const; 0041 void setViewMode(ViewMode newViewMode); 0042 Q_SIGNAL void viewModeChanged(); 0043 0044 QStringList hiddenAttributes() const; 0045 void setHiddenAttributes(const QStringList &newHiddenAttributes); 0046 Q_SIGNAL void hiddenAttributesChanged(); 0047 0048 QVariantList filterPids() const; 0049 void setFilterPids(const QVariantList &newFilterPids); 0050 Q_SIGNAL void filterPidsChanged(); 0051 0052 Q_INVOKABLE void sort(int column, Qt::SortOrder order) override; 0053 0054 private: 0055 void findColumns(); 0056 0057 QString m_filterString; 0058 ViewMode m_viewMode = ViewOwn; 0059 QStringList m_hiddenAttributes; 0060 QVariantList m_filterPids; 0061 0062 int m_uidColumn = -1; 0063 int m_pidColumn = -1; 0064 KUser m_currentUser; 0065 };