Warning, file /plasma/libksysguard/systemstats/SensorContainer.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2019 David Edmundson <davidedmundson@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "SensorContainer.h" 0008 0009 #include "SensorObject.h" 0010 0011 using namespace KSysGuard; 0012 0013 class Q_DECL_HIDDEN SensorContainer::Private 0014 { 0015 public: 0016 QString id; 0017 QString name; 0018 QHash<QString, SensorObject *> sensorObjects; 0019 }; 0020 0021 SensorContainer::SensorContainer(const QString &id, const QString &name, SensorPlugin *parent) 0022 : QObject(parent) 0023 , d(std::make_unique<Private>()) 0024 { 0025 d->id = id; 0026 d->name = name; 0027 parent->addContainer(this); 0028 } 0029 0030 SensorContainer::~SensorContainer() = default; 0031 0032 QString SensorContainer::id() const 0033 { 0034 return d->id; 0035 } 0036 0037 QString SensorContainer::name() const 0038 { 0039 return d->name; 0040 } 0041 0042 QList<SensorObject *> SensorContainer::objects() 0043 { 0044 return d->sensorObjects.values(); 0045 } 0046 0047 SensorObject *SensorContainer::object(const QString &id) const 0048 { 0049 return d->sensorObjects.value(id); 0050 } 0051 0052 void SensorContainer::addObject(SensorObject *object) 0053 { 0054 object->setParentContainer(this); 0055 0056 const QString id = object->id(); 0057 Q_ASSERT(!d->sensorObjects.contains(id)); 0058 d->sensorObjects[id] = object; 0059 Q_EMIT objectAdded(object); 0060 0061 connect(object, &SensorObject::aboutToBeRemoved, this, [this, object]() { 0062 removeObject(object); 0063 }); 0064 } 0065 0066 void SensorContainer::removeObject(SensorObject *object) 0067 { 0068 if (!d->sensorObjects.contains(object->id())) { 0069 return; 0070 } 0071 0072 object->setParentContainer(nullptr); 0073 d->sensorObjects.remove(object->id()); 0074 Q_EMIT objectRemoved(object); 0075 }