do not derive from qwidget in aggregates

This commit is contained in:
2024-03-21 18:08:19 +02:00
parent 33a41bb6c0
commit 67640cccdc
35 changed files with 428 additions and 444 deletions

View File

@ -18,6 +18,8 @@
#include "extsysmon.h"
#include <KPluginFactory>
#include <QDBusMetaType>
#include <QFile>
#include <QRegularExpression>
#include <QSettings>
@ -38,26 +40,13 @@ ExtendedSysMon::ExtendedSysMon(QObject *_parent, const QVariantList &_args)
qCDebug(LOG_ESM) << metadata;
readConfiguration();
addContainer(new ExtSysMonAggregator("extsysmon", "extsysmon", this, m_configuration));
}
ExtendedSysMon::~ExtendedSysMon()
{
qCDebug(LOG_ESM) << __PRETTY_FUNCTION__;
}
void ExtendedSysMon::update()
{
// m_aggregator->update();
addContainer(new ExtSysMonAggregator("extsysmon", "Extended system monitor", this, m_configuration));
}
void ExtendedSysMon::readConfiguration()
{
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, "plasma-dataengine-extsysmon.conf");
auto fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, "plasma-dataengine-extsysmon.conf");
qCInfo(LOG_ESM) << "Configuration file" << fileName;
QSettings settings(fileName, QSettings::IniFormat);
QHash<QString, QString> rawConfig;
@ -90,13 +79,13 @@ QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QStri
else if ((_rawConfig["GPUDEV"] != "ati") && (_rawConfig["GPUDEV"] != "nvidia"))
_rawConfig["GPUDEV"] = GPULoadSource::autoGpu();
// hdddev
QStringList allHddDevices = HDDTemperatureSource::allHdd();
auto allHddDevices = HDDTemperatureSource::allHdd();
if (_rawConfig["HDDDEV"] == "all") {
_rawConfig["HDDDEV"] = allHddDevices.join(',');
} else if (_rawConfig["HDDDEV"] == "disable") {
_rawConfig["HDDDEV"] = "";
} else {
QStringList deviceList = _rawConfig["HDDDEV"].split(',', Qt::SkipEmptyParts);
auto deviceList = _rawConfig["HDDDEV"].split(',', Qt::SkipEmptyParts);
QStringList devices;
auto diskRegexp = QRegularExpression("^/dev/[hms]d[a-z]$");
for (auto &device : deviceList)

View File

@ -27,12 +27,8 @@ class ExtendedSysMon : public KSysGuard::SensorPlugin
public:
explicit ExtendedSysMon(QObject *_parent, const QVariantList &_args);
~ExtendedSysMon() override;
[[nodiscard]] QString providerName() const override { return QStringLiteral("extsysmon"); }
void update() override;
private:
// configuration
QHash<QString, QString> m_configuration;

View File

@ -46,73 +46,52 @@ ExtSysMonAggregator::ExtSysMonAggregator(const QString &_id, const QString &_nam
}
void ExtSysMonAggregator::createSensor(const QString &_id, const QString &_name, AbstractExtSysMonSource *_source)
{
qCDebug(LOG_ESM) << "Register sensor" << _name << "with id" << _id;
addObject(new ExtSysMonSensor(this, _id, _name, _source));
}
void ExtSysMonAggregator::init(const QHash<QString, QString> &_config)
{
qCDebug(LOG_ESM) << "Configuration" << _config;
// battery
auto batteryItem = new BatterySource(this, {_config["ACPIPATH"]});
for (auto &source : batteryItem->sources())
addObject(new ExtSysMonSensor(this, source, batteryItem));
createSensor("battery", i18n("Battery"), new BatterySource(this, {_config["ACPIPATH"]}));
// custom
auto customItem = new CustomSource(this, {});
for (auto &source : customItem->sources())
addObject(new ExtSysMonSensor(this, source, customItem));
createSensor("custom", i18n("Scripts"), new CustomSource(this, {}));
// desktop
auto desktopItem = new DesktopSource(this, {});
for (auto &source : desktopItem->sources())
addObject(new ExtSysMonSensor(this, source, desktopItem));
// FIXME causes segfault
createSensor("desktop", i18n("Desktop"), new DesktopSource(this, {}));
// gpu load
auto gpuLoadItem = new GPULoadSource(this, {_config["GPUDEV"]});
for (auto &source : gpuLoadItem->sources())
addObject(new ExtSysMonSensor(this, source, gpuLoadItem));
createSensor("gpuload", i18n("GPU load"), new GPULoadSource(this, {_config["GPUDEV"]}));
// gpu temperature
auto gpuTempItem = new GPUTemperatureSource(this, {_config["GPUDEV"]});
for (auto &source : gpuTempItem->sources())
addObject(new ExtSysMonSensor(this, source, gpuTempItem));
createSensor("gputemp", i18n("GPU temperature"), new GPUTemperatureSource(this, {_config["GPUDEV"]}));
// hdd temperature
auto hddTempItem
= new HDDTemperatureSource(this, {_config["HDDDEV"], _config["HDDTEMPCMD"]});
for (auto &source : hddTempItem->sources())
addObject(new ExtSysMonSensor(this, source, hddTempItem));
createSensor("hdd", i18n("HDD temperature"),
new HDDTemperatureSource(this, {_config["HDDDEV"], _config["HDDTEMPCMD"]}));
// network
auto networkItem = new NetworkSource(this, QStringList());
for (auto &source : networkItem->sources())
addObject(new ExtSysMonSensor(this, source, networkItem));
createSensor("network", i18n("Network"), new NetworkSource(this, {}));
// player
auto playerItem
= new PlayerSource(this, {_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"],
_config["MPRIS"], _config["PLAYERSYMBOLS"]});
for (auto &source : playerItem->sources())
addObject(new ExtSysMonSensor(this, source, playerItem));
createSensor("player", i18n("Music player"),
new PlayerSource(this, {_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"], _config["MPRIS"],
_config["PLAYERSYMBOLS"]}));
// processes
auto processesItem = new ProcessesSource(this, {});
for (auto &source : processesItem->sources())
addObject(new ExtSysMonSensor(this, source, processesItem));
createSensor("ps", i18n("Processes"), new ProcessesSource(this, {}));
// network request
auto requestItem = new RequestSource(this, {});
for (auto &source : requestItem->sources())
addObject(new ExtSysMonSensor(this, source, requestItem));
createSensor("requests", i18n("Network requests"), new RequestSource(this, {}));
// quotes
auto quotesItem = new QuotesSource(this, {});
for (auto &source : quotesItem->sources())
addObject(new ExtSysMonSensor(this, source, quotesItem));
createSensor("quotes", i18n("Quotes"), new QuotesSource(this, {}));
// system
auto systemItem = new SystemInfoSource(this, {});
for (auto &source : systemItem->sources())
addObject(new ExtSysMonSensor(this, source, systemItem));
createSensor("system", i18n("System"), new SystemInfoSource(this, {}));
// upgrade
auto upgradeItem = new UpgradeSource(this, {});
for (auto &source : upgradeItem->sources())
addObject(new ExtSysMonSensor(this, source, upgradeItem));
createSensor("upgrade", i18n("Upgrades"), new UpgradeSource(this, {}));
// weather
auto weatherItem = new WeatherSource(this, {});
for (auto &source : weatherItem->sources())
addObject(new ExtSysMonSensor(this, source, weatherItem));
createSensor("weather", i18n("Weather"), new WeatherSource(this, {}));
#ifdef BUILD_LOAD
// additional load source
auto loadItem = new LoadSource(this, QStringList());
for (auto &source : loadItem->sources())
addObject(new ExtSysMonSensor(this, source, loadItem));
createSensor("load", i18n("Load"), new LoadSource(this, {}));
#endif /* BUILD_LOAD */
}

View File

@ -23,6 +23,10 @@
#include "abstractextsysmonsource.h"
class AbstractExtSysMonSource;
class ExtSysMonSensor;
class ExtSysMonAggregator : public KSysGuard::SensorContainer
{
Q_OBJECT
@ -32,6 +36,7 @@ public:
const QHash<QString, QString> &_config);
private:
void createSensor(const QString &_id, const QString &_name, AbstractExtSysMonSource *_source);
void init(const QHash<QString, QString> &_config);
};