File indexing completed on 2024-04-28 16:49:54
0001 /* 0002 SPDX-FileCopyrightText: 2020 David Edmundson <davidedmundson@kde.org> 0003 SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "process_attribute_model.h" 0009 0010 #include "extended_process_list.h" 0011 #include "process_attribute.h" 0012 0013 using namespace KSysGuard; 0014 0015 class Q_DECL_HIDDEN ProcessAttributeModel::Private 0016 { 0017 public: 0018 QVector<ProcessAttribute *> m_attributes; 0019 }; 0020 0021 ProcessAttributeModel::ProcessAttributeModel(const QVector<ProcessAttribute *> &attributes, QObject *parent) 0022 : QAbstractListModel(parent) 0023 , d(new Private) 0024 { 0025 d->m_attributes = attributes; 0026 } 0027 0028 ProcessAttributeModel::~ProcessAttributeModel() 0029 { 0030 } 0031 0032 int ProcessAttributeModel::rowCount(const QModelIndex &parent) const 0033 { 0034 if (parent.isValid()) { 0035 return 0; // flat list 0036 } 0037 return d->m_attributes.count(); 0038 } 0039 0040 QVariant ProcessAttributeModel::data(const QModelIndex &index, int role) const 0041 { 0042 if (!checkIndex(index, CheckIndexOption::IndexIsValid | CheckIndexOption::ParentIsInvalid)) { 0043 return QVariant(); 0044 } 0045 0046 auto attribute = d->m_attributes[index.row()]; 0047 switch (static_cast<Role>(role)) { 0048 case Role::Name: 0049 return attribute->name(); 0050 case Role::ShortName: 0051 if (attribute->shortName().isEmpty()) { 0052 return attribute->name(); 0053 } 0054 return attribute->shortName(); 0055 case Role::Id: 0056 return attribute->id(); 0057 case Role::Description: 0058 return attribute->description(); 0059 case Role::Unit: 0060 return attribute->unit(); 0061 case Role::Minimum: 0062 return attribute->min(); 0063 case Role::Maximum: 0064 return attribute->max(); 0065 } 0066 return QVariant(); 0067 } 0068 0069 QHash<int, QByteArray> ProcessAttributeModel::roleNames() const 0070 { 0071 QHash<int, QByteArray> roles = QAbstractListModel::roleNames(); 0072 roles.insert(static_cast<int>(Role::Id), "id"); 0073 roles.insert(static_cast<int>(Role::Name), "name"); 0074 roles.insert(static_cast<int>(Role::ShortName), "shortName"); 0075 roles.insert(static_cast<int>(Role::Description), "description"); 0076 roles.insert(static_cast<int>(Role::Unit), "unit"); 0077 roles.insert(static_cast<int>(Role::Minimum), "minimum"); 0078 roles.insert(static_cast<int>(Role::Maximum), "maximum"); 0079 return roles; 0080 }