File indexing completed on 2024-04-28 05:31:37

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     QList<ProcessAttribute *> m_attributes;
0019 };
0020 
0021 ProcessAttributeModel::ProcessAttributeModel(const QList<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 }