File indexing completed on 2024-05-12 05:36:51
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 #include <qqmlregistration.h> 0011 0012 #include <KUser> 0013 0014 class ProcessSortFilterModel : public QSortFilterProxyModel 0015 { 0016 Q_OBJECT 0017 Q_PROPERTY(QString filterString READ filterString WRITE setFilterString NOTIFY filterStringChanged) 0018 Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode NOTIFY viewModeChanged) 0019 Q_PROPERTY(QStringList hiddenAttributes READ hiddenAttributes WRITE setHiddenAttributes NOTIFY hiddenAttributesChanged) 0020 Q_PROPERTY(QVariantList filterPids READ filterPids WRITE setFilterPids NOTIFY filterPidsChanged) 0021 0022 Q_PROPERTY(int sortColumn READ sortColumn NOTIFY sorted) 0023 Q_PROPERTY(int sortOrder READ sortOrder NOTIFY sorted) 0024 0025 QML_ELEMENT 0026 0027 public: 0028 enum ViewMode { 0029 ViewOwn, 0030 ViewUser, 0031 ViewSystem, 0032 ViewAll, 0033 }; 0034 Q_ENUM(ViewMode) 0035 0036 explicit ProcessSortFilterModel(QObject *parent = nullptr); 0037 0038 void setSourceModel(QAbstractItemModel *newSourceModel) override; 0039 bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; 0040 bool filterAcceptsColumn(int sourceColumn, const QModelIndex &sourceParent) const override; 0041 0042 QString filterString() const; 0043 void setFilterString(const QString &newFilterString); 0044 Q_SIGNAL void filterStringChanged(); 0045 0046 ViewMode viewMode() const; 0047 void setViewMode(ViewMode newViewMode); 0048 Q_SIGNAL void viewModeChanged(); 0049 0050 QStringList hiddenAttributes() const; 0051 void setHiddenAttributes(const QStringList &newHiddenAttributes); 0052 Q_SIGNAL void hiddenAttributesChanged(); 0053 0054 QVariantList filterPids() const; 0055 void setFilterPids(const QVariantList &newFilterPids); 0056 Q_SIGNAL void filterPidsChanged(); 0057 0058 Q_INVOKABLE void sort(int column, Qt::SortOrder order) override; 0059 Q_SIGNAL void sorted(); 0060 0061 private: 0062 void findColumns(); 0063 0064 QString m_filterString; 0065 ViewMode m_viewMode = ViewOwn; 0066 QStringList m_hiddenAttributes; 0067 QVariantList m_filterPids; 0068 0069 int m_uidColumn = -1; 0070 int m_pidColumn = -1; 0071 KUser m_currentUser; 0072 };