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 }