From 42c11a6b60df9af6fd53c788bca37d8bd05a4560 Mon Sep 17 00:00:00 2001 From: Evgenii Alekseev Date: Fri, 15 Mar 2024 18:01:03 +0200 Subject: [PATCH] port dataengin --- .../plugin/awdataengineaggregator.cpp | 2 +- .../plugin/awdataengineaggregator.h | 4 +- .../plugin/awdataenginemapper.cpp | 3 +- sources/awesome-widget/plugin/awkeys.cpp | 22 ++-- sources/awesome-widget/plugin/awkeys.h | 3 +- .../plugin/awkeysaggregator.cpp | 3 +- sources/awesomewidgets/awjsonformatter.cpp | 2 +- sources/extsysmon/CMakeLists.txt | 10 +- sources/extsysmon/extsysmon.cpp | 42 +------ sources/extsysmon/extsysmon.h | 14 +-- sources/extsysmon/extsysmonaggregator.cpp | 110 ++++++----------- sources/extsysmon/extsysmonaggregator.h | 13 +- sources/extsysmon/metadata.json | 3 + .../plasma-dataengine-extsysmon.desktop | 16 --- .../plasma-dataengine-extsysmon.json | 20 --- .../abstractextsysmonsource.h | 7 +- sources/extsysmonsources/batterysource.cpp | 115 +++++++++--------- sources/extsysmonsources/batterysource.h | 2 +- sources/extsysmonsources/customsource.cpp | 16 +-- sources/extsysmonsources/customsource.h | 2 +- sources/extsysmonsources/desktopsource.cpp | 41 +++---- sources/extsysmonsources/desktopsource.h | 2 +- sources/extsysmonsources/extsysmonsensor.cpp | 55 +++++++++ sources/extsysmonsources/extsysmonsensor.h | 41 +++++++ sources/extsysmonsources/gpuloadsource.cpp | 19 +-- sources/extsysmonsources/gpuloadsource.h | 2 +- sources/extsysmonsources/gputempsource.cpp | 18 +-- sources/extsysmonsources/gputempsource.h | 2 +- sources/extsysmonsources/hddtempsource.cpp | 20 +-- sources/extsysmonsources/hddtempsource.h | 2 +- sources/extsysmonsources/loadsource.cpp | 17 +-- sources/extsysmonsources/loadsource.h | 2 +- sources/extsysmonsources/networksource.cpp | 23 ++-- sources/extsysmonsources/networksource.h | 2 +- sources/extsysmonsources/playersource.cpp | 99 +++++++-------- sources/extsysmonsources/playersource.h | 2 +- sources/extsysmonsources/processessource.cpp | 35 +++--- sources/extsysmonsources/processessource.h | 2 +- sources/extsysmonsources/quotessource.cpp | 67 +++++----- sources/extsysmonsources/quotessource.h | 2 +- sources/extsysmonsources/requestsource.cpp | 15 +-- sources/extsysmonsources/requestsource.h | 2 +- sources/extsysmonsources/systeminfosource.cpp | 27 ++-- sources/extsysmonsources/systeminfosource.h | 2 +- sources/extsysmonsources/upgradesource.cpp | 15 +-- sources/extsysmonsources/upgradesource.h | 2 +- sources/extsysmonsources/weathersource.cpp | 63 +++++----- sources/extsysmonsources/weathersource.h | 2 +- sources/libraries.cmake | 2 +- 49 files changed, 490 insertions(+), 502 deletions(-) create mode 100644 sources/extsysmon/metadata.json delete mode 100644 sources/extsysmon/plasma-dataengine-extsysmon.desktop delete mode 100644 sources/extsysmon/plasma-dataengine-extsysmon.json create mode 100644 sources/extsysmonsources/extsysmonsensor.cpp create mode 100644 sources/extsysmonsources/extsysmonsensor.h diff --git a/sources/awesome-widget/plugin/awdataengineaggregator.cpp b/sources/awesome-widget/plugin/awdataengineaggregator.cpp index 03006aa..87b5099 100644 --- a/sources/awesome-widget/plugin/awdataengineaggregator.cpp +++ b/sources/awesome-widget/plugin/awdataengineaggregator.cpp @@ -34,7 +34,7 @@ AWDataEngineAggregator::AWDataEngineAggregator(QObject *_parent) qDBusRegisterMetaType>(); m_interface = new KSysGuard::SystemStats::DBusInterface( - KSysGuard::SystemStats::ServiceName, KSysGuard::SystemStats::ObjectPath, QDBusConnection::sessionBus(), this); + KSysGuard::SystemStats::ServiceName, KSysGuard::SystemStats::ObjectPath, QDBusConnection::sessionBus(), this); connect(m_interface, SIGNAL(newSensorData(KSysGuard::SensorDataList)), this, SLOT(updateData(KSysGuard::SensorDataList))); diff --git a/sources/awesome-widget/plugin/awdataengineaggregator.h b/sources/awesome-widget/plugin/awdataengineaggregator.h index 4799268..f3a1e49 100644 --- a/sources/awesome-widget/plugin/awdataengineaggregator.h +++ b/sources/awesome-widget/plugin/awdataengineaggregator.h @@ -21,14 +21,14 @@ #include -#include #include +#include #include namespace KSysGuard::SystemStats { - class DBusInterface; +class DBusInterface; } diff --git a/sources/awesome-widget/plugin/awdataenginemapper.cpp b/sources/awesome-widget/plugin/awdataenginemapper.cpp index af7f645..7c15e64 100644 --- a/sources/awesome-widget/plugin/awdataenginemapper.cpp +++ b/sources/awesome-widget/plugin/awdataenginemapper.cpp @@ -76,7 +76,8 @@ QStringList AWDataEngineMapper::keysFromSource(const QString &_source) const // HACK units required to define should the value be calculated as temperature // or fan data -QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units, const QStringList &_keys) +QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSysGuard::Unit _units, + const QStringList &_keys) { qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index 422ccf2..cdf3919 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -65,8 +65,9 @@ AWKeys::AWKeys(QObject *_parent) connect(this, SIGNAL(dropSourceFromDataengine(const QString &)), m_dataEngineAggregator, SLOT(dropSource(const QString &))); - connect(m_dataEngineAggregator, SIGNAL(dataUpdated(const QHash &, const KSysGuard::SensorDataList &)), - this, SLOT(dataUpdated(const QHash &, const KSysGuard::SensorDataList &))); + connect(m_dataEngineAggregator, + SIGNAL(dataUpdated(const QHash &, const KSysGuard::SensorDataList &)), this, + SLOT(dataUpdated(const QHash &, const KSysGuard::SensorDataList &))); // transfer signal from dataengine to update source list connect(m_dataEngineAggregator, SIGNAL(deviceAdded(const QString &)), m_keyOperator, SLOT(addDevice(const QString &))); @@ -210,7 +211,7 @@ void AWKeys::dataUpdated(const QHash &_sensors, setDataBySource(single.sensorProperty, _sensors.value(single.sensorProperty), single); } // TODO use QtConcurrent::map or something like that -// QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, "ss", sensor); + // QtConcurrent::run(m_threadPool, this, &AWKeys::setDataBySource, "ss", sensor); } } @@ -265,10 +266,10 @@ void AWKeys::calculateValues() QStringList mountDevices = m_keyOperator->devices("mount"); for (auto &device : mountDevices) { int index = mountDevices.indexOf(device); - m_values[QString("hddtotmb%1").arg(index)] - = m_values[QString("hddfreemb%1").arg(index)].toDouble() + m_values[QString("hddmb%1").arg(index)].toDouble(); - m_values[QString("hddtotgb%1").arg(index)] - = m_values[QString("hddfreegb%1").arg(index)].toDouble() + m_values[QString("hddgb%1").arg(index)].toDouble(); + m_values[QString("hddtotmb%1").arg(index)] = m_values[QString("hddfreemb%1").arg(index)].toDouble() + + m_values[QString("hddmb%1").arg(index)].toDouble(); + m_values[QString("hddtotgb%1").arg(index)] = m_values[QString("hddfreegb%1").arg(index)].toDouble() + + m_values[QString("hddgb%1").arg(index)].toDouble(); } // memtot* @@ -360,7 +361,8 @@ QString AWKeys::parsePattern(QString _pattern) const } -void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo &_sensor, const KSysGuard::SensorData &_data) +void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo &_sensor, + const KSysGuard::SensorData &_data) { qCDebug(LOG_AW) << "Source" << _source << _sensor.name << "with data" << _data.payload; @@ -377,8 +379,6 @@ void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo m_mutex.lock(); // HACK workaround for time values which are stored in the different path - std::for_each(tags.cbegin(), tags.cend(), [this, &_data](const QString &tag) { - m_values[tag] = _data.payload; - }); + std::for_each(tags.cbegin(), tags.cend(), [this, &_data](const QString &tag) { m_values[tag] = _data.payload; }); m_mutex.unlock(); } diff --git a/sources/awesome-widget/plugin/awkeys.h b/sources/awesome-widget/plugin/awkeys.h index d82071d..5673d78 100644 --- a/sources/awesome-widget/plugin/awkeys.h +++ b/sources/awesome-widget/plugin/awkeys.h @@ -72,7 +72,8 @@ private: void calculateValues(); void createDBusInterface(); [[nodiscard]] QString parsePattern(QString _pattern) const; - void setDataBySource(const QString &_source, const KSysGuard::SensorInfo &_sensor, const KSysGuard::SensorData &_data); + void setDataBySource(const QString &_source, const KSysGuard::SensorInfo &_sensor, + const KSysGuard::SensorData &_data); // objects AWDataAggregator *m_dataAggregator = nullptr; AWDataEngineAggregator *m_dataEngineAggregator = nullptr; diff --git a/sources/awesome-widget/plugin/awkeysaggregator.cpp b/sources/awesome-widget/plugin/awkeysaggregator.cpp index f88a70e..71607c5 100644 --- a/sources/awesome-widget/plugin/awkeysaggregator.cpp +++ b/sources/awesome-widget/plugin/awkeysaggregator.cpp @@ -234,7 +234,8 @@ void AWKeysAggregator::setTranslate(const bool _translate) } -QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit &_units, const QStringList &_keys) +QStringList AWKeysAggregator::registerSource(const QString &_source, const KSysGuard::Unit &_units, + const QStringList &_keys) { qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; diff --git a/sources/awesomewidgets/awjsonformatter.cpp b/sources/awesomewidgets/awjsonformatter.cpp index 27f3413..e4d2d19 100644 --- a/sources/awesomewidgets/awjsonformatter.cpp +++ b/sources/awesomewidgets/awjsonformatter.cpp @@ -54,7 +54,7 @@ QString AWJsonFormatter::convert(const QVariant &_value) const // check if _value is string and parse first if required QJsonDocument json = _value.userType() == QMetaType::QString ? QJsonDocument::fromJson(_value.toString().toUtf8()) - : QJsonDocument::fromVariant(_value); + : QJsonDocument::fromVariant(_value); QVariant converted = json.toVariant(); for (auto &element : m_splittedPath) converted = getFromJson(converted, element); diff --git a/sources/extsysmon/CMakeLists.txt b/sources/extsysmon/CMakeLists.txt index e7162d6..07b1ba4 100644 --- a/sources/extsysmon/CMakeLists.txt +++ b/sources/extsysmon/CMakeLists.txt @@ -1,4 +1,4 @@ -set(SUBPROJECT plasma_dataengine_extsysmon) +set(SUBPROJECT ksystemstats_plugin_extsysmon) message(STATUS "Subproject ${SUBPROJECT}") add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidget\") @@ -12,15 +12,10 @@ include_directories( ${Kf6_INCLUDE} ) -file(GLOB SUBPROJECT_DESKTOP_IN *.desktop) -file(RELATIVE_PATH SUBPROJECT_DESKTOP ${CMAKE_SOURCE_DIR} ${SUBPROJECT_DESKTOP_IN}) file(GLOB SUBPROJECT_SOURCE *.cpp ${CMAKE_SOURCE_DIR}/*.cpp) file(GLOB SUBPROJECT_HEADER *.h) file(GLOB SUBPROJECT_CONF *.conf) -# prepare -configure_file(${SUBPROJECT_DESKTOP_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP}) - # make add_library(${SUBPROJECT} MODULE ${SUBPROJECT_SOURCE} ${SUBPROJECT_HEADER}) target_link_libraries(${SUBPROJECT} @@ -28,6 +23,5 @@ target_link_libraries(${SUBPROJECT} ${Qt_LIBRARIES} ${Kf6_LIBRARIES}) # install -install(TARGETS ${SUBPROJECT} DESTINATION ${PLUGIN_INSTALL_DIR}/plasma/dataengine) -#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP} DESTINATION ${SERVICES_INSTALL_DIR}) +install(TARGETS ${SUBPROJECT} DESTINATION ${KDE_INSTALL_PLUGINDIR}/ksystemstats) install(FILES ${SUBPROJECT_CONF} DESTINATION ${KDE_INSTALL_CONFDIR}) diff --git a/sources/extsysmon/extsysmon.cpp b/sources/extsysmon/extsysmon.cpp index e745b44..b55f54b 100644 --- a/sources/extsysmon/extsysmon.cpp +++ b/sources/extsysmon/extsysmon.cpp @@ -17,6 +17,7 @@ #include "extsysmon.h" +#include #include #include #include @@ -29,21 +30,16 @@ ExtendedSysMon::ExtendedSysMon(QObject *_parent, const QVariantList &_args) - : Plasma::DataEngine(_parent, _args) + : KSysGuard::SensorPlugin(_parent, _args) { - Q_UNUSED(_args) qSetMessagePattern(AWDebug::LOG_FORMAT); qCDebug(LOG_ESM) << __PRETTY_FUNCTION__; for (auto &metadata : AWDebug::getBuildData()) qCDebug(LOG_ESM) << metadata; - setMinimumPollingInterval(333); readConfiguration(); - // init aggregator - m_aggregator = new ExtSysMonAggregator(this, m_configuration); - for (auto &source : m_aggregator->sources()) - setData(source, m_aggregator->initialData(source)); + addContainer(new ExtSysMonAggregator("extsysmon", "extsysmon", this, m_configuration)); } @@ -53,35 +49,9 @@ ExtendedSysMon::~ExtendedSysMon() } -QStringList ExtendedSysMon::sources() const +void ExtendedSysMon::update() { - return m_aggregator->sources(); -} - - -bool ExtendedSysMon::sourceRequestEvent(const QString &_source) -{ - qCDebug(LOG_ESM) << "Source" << _source; - - return updateSourceEvent(_source); -} - - -bool ExtendedSysMon::updateSourceEvent(const QString &_source) -{ - qCDebug(LOG_ESM) << "Source" << _source; - - if (m_aggregator->hasSource(_source)) { - QVariant data = m_aggregator->data(_source); - if (data.isNull()) - return false; - setData(_source, "value", data); - } else { - qCWarning(LOG_ESM) << "Unknown source" << _source; - return false; - } - - return true; + // m_aggregator->update(); } @@ -150,6 +120,6 @@ QHash ExtendedSysMon::updateConfiguration(QHash +#include -class ExtSysMonAggregator; - -class ExtendedSysMon : public Plasma::DataEngine +class ExtendedSysMon : public KSysGuard::SensorPlugin { Q_OBJECT @@ -31,14 +29,12 @@ public: explicit ExtendedSysMon(QObject *_parent, const QVariantList &_args); ~ExtendedSysMon() override; -protected: - [[nodiscard]] QStringList sources() const override; - bool sourceRequestEvent(const QString &_source) override; - bool updateSourceEvent(const QString &_source) override; + [[nodiscard]] QString providerName() const override { return QStringLiteral("extsysmon"); } + + void update() override; private: // configuration - ExtSysMonAggregator *m_aggregator = nullptr; QHash m_configuration; // methods void readConfiguration(); diff --git a/sources/extsysmon/extsysmonaggregator.cpp b/sources/extsysmon/extsysmonaggregator.cpp index 0bd5868..0c9ebd1 100644 --- a/sources/extsysmon/extsysmonaggregator.cpp +++ b/sources/extsysmon/extsysmonaggregator.cpp @@ -21,6 +21,7 @@ #include "batterysource.h" #include "customsource.h" #include "desktopsource.h" +#include "extsysmonsensor.h" #include "gpuloadsource.h" #include "gputempsource.h" #include "hddtempsource.h" @@ -35,8 +36,9 @@ #include "weathersource.h" -ExtSysMonAggregator::ExtSysMonAggregator(QObject *_parent, const QHash &_config) - : QObject(_parent) +ExtSysMonAggregator::ExtSysMonAggregator(const QString &_id, const QString &_name, KSysGuard::SensorPlugin *_parent, + const QHash &_config) + : KSysGuard::SensorContainer(_id, _name, _parent) { qCDebug(LOG_ESM) << __PRETTY_FUNCTION__; @@ -44,111 +46,73 @@ ExtSysMonAggregator::ExtSysMonAggregator(QObject *_parent, const QHashdata(_source); -} - - -bool ExtSysMonAggregator::hasSource(const QString &_source) const -{ - qCDebug(LOG_ESM) << "Source" << _source; - - return m_map.contains(_source); -} - - -QVariantMap ExtSysMonAggregator::initialData(const QString &_source) const -{ - qCDebug(LOG_ESM) << "Source" << _source; - - return hasSource(_source) ? m_map[_source]->initialData(_source) : QVariantMap(); -} - - -QStringList ExtSysMonAggregator::sources() const -{ - return m_map.keys(); -} - - void ExtSysMonAggregator::init(const QHash &_config) { qCDebug(LOG_ESM) << "Configuration" << _config; // battery - AbstractExtSysMonSource *batteryItem = new BatterySource(this, QStringList() << _config["ACPIPATH"]); + auto batteryItem = new BatterySource(this, {_config["ACPIPATH"]}); for (auto &source : batteryItem->sources()) - m_map[source] = batteryItem; + addObject(new ExtSysMonSensor(this, source, batteryItem)); // custom - AbstractExtSysMonSource *customItem = new CustomSource(this, QStringList()); + auto customItem = new CustomSource(this, {}); for (auto &source : customItem->sources()) - m_map[source] = customItem; + addObject(new ExtSysMonSensor(this, source, customItem)); // desktop - AbstractExtSysMonSource *desktopItem = new DesktopSource(this, QStringList()); + auto desktopItem = new DesktopSource(this, {}); for (auto &source : desktopItem->sources()) - m_map[source] = desktopItem; + addObject(new ExtSysMonSensor(this, source, desktopItem)); // gpu load - AbstractExtSysMonSource *gpuLoadItem = new GPULoadSource(this, QStringList({_config["GPUDEV"]})); + auto gpuLoadItem = new GPULoadSource(this, {_config["GPUDEV"]}); for (auto &source : gpuLoadItem->sources()) - m_map[source] = gpuLoadItem; + addObject(new ExtSysMonSensor(this, source, gpuLoadItem)); // gpu temperature - AbstractExtSysMonSource *gpuTempItem = new GPUTemperatureSource(this, QStringList({_config["GPUDEV"]})); + auto gpuTempItem = new GPUTemperatureSource(this, {_config["GPUDEV"]}); for (auto &source : gpuTempItem->sources()) - m_map[source] = gpuTempItem; + addObject(new ExtSysMonSensor(this, source, gpuTempItem)); // hdd temperature - AbstractExtSysMonSource *hddTempItem - = new HDDTemperatureSource(this, QStringList({_config["HDDDEV"], _config["HDDTEMPCMD"]})); + auto hddTempItem + = new HDDTemperatureSource(this, {_config["HDDDEV"], _config["HDDTEMPCMD"]}); for (auto &source : hddTempItem->sources()) - m_map[source] = hddTempItem; + addObject(new ExtSysMonSensor(this, source, hddTempItem)); // network - AbstractExtSysMonSource *networkItem = new NetworkSource(this, QStringList()); + auto networkItem = new NetworkSource(this, QStringList()); for (auto &source : networkItem->sources()) - m_map[source] = networkItem; + addObject(new ExtSysMonSensor(this, source, networkItem)); // player - AbstractExtSysMonSource *playerItem - = new PlayerSource(this, QStringList({_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"], - _config["MPRIS"], _config["PLAYERSYMBOLS"]})); + auto playerItem + = new PlayerSource(this, {_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"], + _config["MPRIS"], _config["PLAYERSYMBOLS"]}); for (auto &source : playerItem->sources()) - m_map[source] = playerItem; + addObject(new ExtSysMonSensor(this, source, playerItem)); // processes - AbstractExtSysMonSource *processesItem = new ProcessesSource(this, QStringList()); + auto processesItem = new ProcessesSource(this, {}); for (auto &source : processesItem->sources()) - m_map[source] = processesItem; + addObject(new ExtSysMonSensor(this, source, processesItem)); // network request - AbstractExtSysMonSource *requestItem = new RequestSource(this, QStringList()); + auto requestItem = new RequestSource(this, {}); for (auto &source : requestItem->sources()) - m_map[source] = requestItem; + addObject(new ExtSysMonSensor(this, source, requestItem)); // quotes - AbstractExtSysMonSource *quotesItem = new QuotesSource(this, QStringList()); + auto quotesItem = new QuotesSource(this, {}); for (auto &source : quotesItem->sources()) - m_map[source] = quotesItem; + addObject(new ExtSysMonSensor(this, source, quotesItem)); // system - AbstractExtSysMonSource *systemItem = new SystemInfoSource(this, QStringList()); + auto systemItem = new SystemInfoSource(this, {}); for (auto &source : systemItem->sources()) - m_map[source] = systemItem; + addObject(new ExtSysMonSensor(this, source, systemItem)); // upgrade - AbstractExtSysMonSource *upgradeItem = new UpgradeSource(this, QStringList()); + auto upgradeItem = new UpgradeSource(this, {}); for (auto &source : upgradeItem->sources()) - m_map[source] = upgradeItem; + addObject(new ExtSysMonSensor(this, source, upgradeItem)); // weather - AbstractExtSysMonSource *weatherItem = new WeatherSource(this, QStringList()); + auto weatherItem = new WeatherSource(this, {}); for (auto &source : weatherItem->sources()) - m_map[source] = weatherItem; + addObject(new ExtSysMonSensor(this, source, weatherItem)); #ifdef BUILD_LOAD // additional load source - AbstractExtSysMonSource *loadItem = new LoadSource(this, QStringList()); + auto loadItem = new LoadSource(this, QStringList()); for (auto &source : loadItem->sources()) - m_map[source] = loadItem; + addObject(new ExtSysMonSensor(this, source, loadItem)); #endif /* BUILD_LOAD */ } diff --git a/sources/extsysmon/extsysmonaggregator.h b/sources/extsysmon/extsysmonaggregator.h index d47d216..36b9b86 100644 --- a/sources/extsysmon/extsysmonaggregator.h +++ b/sources/extsysmon/extsysmonaggregator.h @@ -19,25 +19,20 @@ #define EXTSYSMONAGGREGATOR_H #include +#include #include "abstractextsysmonsource.h" - -class ExtSysMonAggregator : public QObject +class ExtSysMonAggregator : public KSysGuard::SensorContainer { Q_OBJECT public: - explicit ExtSysMonAggregator(QObject *_parent, const QHash &_config); - ~ExtSysMonAggregator() override; - [[nodiscard]] QVariant data(const QString &_source) const; - [[nodiscard]] bool hasSource(const QString &_source) const; - [[nodiscard]] QVariantMap initialData(const QString &_source) const; - [[nodiscard]] QStringList sources() const; + explicit ExtSysMonAggregator(const QString &_id, const QString &_name, KSysGuard::SensorPlugin *_parent, + const QHash &_config); private: void init(const QHash &_config); - QHash m_map; }; diff --git a/sources/extsysmon/metadata.json b/sources/extsysmon/metadata.json new file mode 100644 index 0000000..94f3ae3 --- /dev/null +++ b/sources/extsysmon/metadata.json @@ -0,0 +1,3 @@ +{ + "providerName": "extsysmon" +} diff --git a/sources/extsysmon/plasma-dataengine-extsysmon.desktop b/sources/extsysmon/plasma-dataengine-extsysmon.desktop deleted file mode 100644 index 19664fb..0000000 --- a/sources/extsysmon/plasma-dataengine-extsysmon.desktop +++ /dev/null @@ -1,16 +0,0 @@ -[Desktop Entry] -Encoding=UTF-8 -Name=Extended SystemMonitor -Comment=Adds some additional functions to System DataEngine -ServiceTypes=Plasma/DataEngine -Type=Service -Icon=utilities-system-monitor - -X-KDE-Library=plasma_dataengine_extsysmon - -X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis -X-KDE-PluginInfo-Email=esalexeev@gmail.com -X-KDE-PluginInfo-Name=extsysmon -X-KDE-PluginInfo-Version=@PROJECT_VERSION@ -X-KDE-PluginInfo-Category=System Information -X-KDE-PluginInfo-License=GPL3 diff --git a/sources/extsysmon/plasma-dataengine-extsysmon.json b/sources/extsysmon/plasma-dataengine-extsysmon.json deleted file mode 100644 index 9e5441e..0000000 --- a/sources/extsysmon/plasma-dataengine-extsysmon.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "KPlugin": { - "Authors": [ - { - "Email": "esalexeev@gmail.com", - "Name": "Evgeniy Alekseev aka arcanis" - } - ], - "Category": "System Information", - "Description": "Adds some additional functions to System DataEngine", - "Icon": "utilities-system-monitor", - "Id": "extsysmon", - "License": "GPL3", - "Name": "Extended SystemMonitor", - "ServiceTypes": [ - "Plasma/DataEngine" - ], - "Version": "@PROJECT_VERSION@" - } -} diff --git a/sources/extsysmonsources/abstractextsysmonsource.h b/sources/extsysmonsources/abstractextsysmonsource.h index 72e6467..4e6e2f9 100644 --- a/sources/extsysmonsources/abstractextsysmonsource.h +++ b/sources/extsysmonsources/abstractextsysmonsource.h @@ -23,6 +23,11 @@ #include +namespace KSysGuard +{ +class SensorInfo; +} + class AbstractExtSysMonSource : public QObject { Q_OBJECT @@ -32,7 +37,7 @@ public: : QObject(_parent){}; ~AbstractExtSysMonSource() override = default; virtual QVariant data(const QString &_source) = 0; - [[nodiscard]] virtual QVariantMap initialData(const QString &_source) const = 0; + [[nodiscard]] virtual KSysGuard::SensorInfo *initialData(const QString &_source) const = 0; virtual void run() = 0; [[nodiscard]] virtual QStringList sources() const = 0; // used by extensions diff --git a/sources/extsysmonsources/batterysource.cpp b/sources/extsysmonsources/batterysource.cpp index a424f79..53e8552 100644 --- a/sources/extsysmonsources/batterysource.cpp +++ b/sources/extsysmonsources/batterysource.cpp @@ -18,6 +18,9 @@ #include "batterysource.h" +#include +#include + #include #include @@ -84,77 +87,75 @@ QVariant BatterySource::data(const QString &_source) } -QVariantMap BatterySource::initialData(const QString &_source) const +KSysGuard::SensorInfo *BatterySource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source == "battery/ac") { - data["min"] = false; - data["max"] = true; - data["name"] = "Is AC online or not"; - data["type"] = "bool"; - data["units"] = ""; + data->name = "Is AC online or not"; + data->variantType = QVariant::Bool; + data->unit = KSysGuard::UnitNone; } else if (_source == "battery/bat") { - data["min"] = 0; - data["max"] = 100; - data["name"] = "Average battery usage"; - data["type"] = "integer"; - data["units"] = "%"; + data->min = 0; + data->max = 100; + data->name = "Average battery usage"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitPercent; } else if (_source == "battery/batleft") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Battery discharge time"; - data["type"] = "integer"; - data["units"] = "s"; + data->min = 0; + data->max = 0; + data->name = "Battery discharge time"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitSecond; } else if (_source == "battery/batnow") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Current battery capacity"; - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = "Current battery capacity"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source == "battery/batrate") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Average battery discharge rate"; - data["type"] = "float"; - data["units"] = "1/s"; + data->min = 0; + data->max = 0; + data->name = "Average battery discharge rate"; + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitRate; } else if (_source == "battery/battotal") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Full battery capacity"; - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = "Full battery capacity"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("battery/batleft")) { - data["min"] = 0; - data["max"] = 0; - data["name"] = QString("Battery %1 discharge time").arg(index(_source)); - data["type"] = "integer"; - data["units"] = "s"; + data->min = 0; + data->max = 0; + data->name = QString("Battery %1 discharge time").arg(index(_source)); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitSecond; } else if (_source.startsWith("battery/batnow")) { - data["min"] = 0; - data["max"] = 0; - data["name"] = QString("Battery %1 capacity").arg(index(_source)); - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = QString("Battery %1 capacity").arg(index(_source)); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("battery/battotal")) { - data["min"] = 0; - data["max"] = 0; - data["name"] = QString("Battery %1 full capacity").arg(index(_source)); - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = QString("Battery %1 full capacity").arg(index(_source)); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("battery/batrate")) { - data["min"] = 0; - data["max"] = 0; - data["name"] = QString("Battery %1 discharge rate").arg(index(_source)); - data["type"] = "float"; - data["units"] = "1/s"; + data->min = 0; + data->max = 0; + data->name = QString("Battery %1 discharge rate").arg(index(_source)); + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitRate; } else if (_source.startsWith("battery/bat")) { - data["min"] = 0; - data["max"] = 100; - data["name"] = QString("Battery %1 usage").arg(index(_source)); - data["type"] = "integer"; - data["units"] = "%"; + data->min = 0; + data->max = 100; + data->name = QString("Battery %1 usage").arg(index(_source)); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitPercent; } return data; diff --git a/sources/extsysmonsources/batterysource.h b/sources/extsysmonsources/batterysource.h index 23b3a34..938ed6c 100644 --- a/sources/extsysmonsources/batterysource.h +++ b/sources/extsysmonsources/batterysource.h @@ -35,7 +35,7 @@ public: ~BatterySource() override; QStringList getSources(); QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/customsource.cpp b/sources/extsysmonsources/customsource.cpp index a4af21b..f6b689f 100644 --- a/sources/extsysmonsources/customsource.cpp +++ b/sources/extsysmonsources/customsource.cpp @@ -15,9 +15,11 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "customsource.h" +#include +#include + #include "awdebug.h" #include "extscript.h" @@ -49,16 +51,14 @@ QVariant CustomSource::data(const QString &_source) } -QVariantMap CustomSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *CustomSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Custom command '%1' output").arg(m_extScripts->itemByTagNumber(index(_source))->uniq()); - data["type"] = "QString"; - data["units"] = ""; + auto data = new KSysGuard::SensorInfo(); + data->name = QString("Custom command '%1' output").arg(m_extScripts->itemByTagNumber(index(_source))->uniq()); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; return data; } diff --git a/sources/extsysmonsources/customsource.h b/sources/extsysmonsources/customsource.h index c7e921d..4e0142d 100644 --- a/sources/extsysmonsources/customsource.h +++ b/sources/extsysmonsources/customsource.h @@ -34,7 +34,7 @@ public: explicit CustomSource(QObject *_parent, const QStringList &_args); ~CustomSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/desktopsource.cpp b/sources/extsysmonsources/desktopsource.cpp index 871dd15..a301118 100644 --- a/sources/extsysmonsources/desktopsource.cpp +++ b/sources/extsysmonsources/desktopsource.cpp @@ -15,10 +15,11 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "desktopsource.h" #include +#include +#include #include #include "awdebug.h" @@ -64,35 +65,29 @@ QVariant DesktopSource::data(const QString &_source) } -QVariantMap DesktopSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *DesktopSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source == "desktop/current/name") { - data["min"] = ""; - data["max"] = ""; - data["name"] = "Current desktop name"; - data["type"] = "QString"; - data["units"] = ""; + data->name = "Current desktop name"; + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "desktop/current/number") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Current desktop number"; - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->name = "Current desktop number"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source == "desktop/total/name") { - data["min"] = QStringList(); - data["max"] = QStringList(); - data["name"] = "All desktops by name"; - data["type"] = "QStringList"; - data["units"] = ""; + data->name = "All desktops by name"; + data->variantType = QVariant::StringList; + data->unit = KSysGuard::UnitNone; } else if (_source == "desktop/total/number") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Desktops count"; - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->name = "Desktops count"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } return data; diff --git a/sources/extsysmonsources/desktopsource.h b/sources/extsysmonsources/desktopsource.h index 05222ee..5867fa3 100644 --- a/sources/extsysmonsources/desktopsource.h +++ b/sources/extsysmonsources/desktopsource.h @@ -35,7 +35,7 @@ public: explicit DesktopSource(QObject *_parent, const QStringList &_args); ~DesktopSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/extsysmonsensor.cpp b/sources/extsysmonsources/extsysmonsensor.cpp new file mode 100644 index 0000000..29931f7 --- /dev/null +++ b/sources/extsysmonsources/extsysmonsensor.cpp @@ -0,0 +1,55 @@ +/*************************************************************************** + * This file is part of awesome-widgets * + * * + * awesome-widgets is free software: you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * awesome-widgets is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * + ***************************************************************************/ + +#include "extsysmonsensor.h" + +#include "abstractextsysmonsource.h" +#include "awdebug.h" + + +ExtSysMonSensor::ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QString &_id, + AbstractExtSysMonSource *_source) + : KSysGuard::SensorObject(_id, _parent) +{ + qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; + + m_source = _source; + + for (auto &source : m_source->sources()) { + auto property = new KSysGuard::SensorProperty(source, this); + + auto info = m_source->initialData(source); + property->setName(info->name); + + property->setUnit(info->unit); + property->setVariantType(info->variantType); + + property->setMin(info->min); + property->setMax(info->max); + + m_properties[source] = property; + } +} + + +void ExtSysMonSensor::update() +{ + for (auto &source : m_properties.keys()) { + auto value = m_source->data(source); + m_properties[source]->setValue(value); + } +} diff --git a/sources/extsysmonsources/extsysmonsensor.h b/sources/extsysmonsources/extsysmonsensor.h new file mode 100644 index 0000000..f0a0908 --- /dev/null +++ b/sources/extsysmonsources/extsysmonsensor.h @@ -0,0 +1,41 @@ +/*************************************************************************** + * This file is part of awesome-widgets * + * * + * awesome-widgets is free software: you can redistribute it and/or * + * modify it under the terms of the GNU General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * awesome-widgets is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * + ***************************************************************************/ + +#ifndef EXTSYSMONSENSOR_H +#define EXTSYSMONSENSOR_H + +#include + + +class AbstractExtSysMonSource; + +class ExtSysMonSensor : public KSysGuard::SensorObject +{ + Q_OBJECT + +public: + explicit ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QString &_id, AbstractExtSysMonSource *_source); + ~ExtSysMonSensor() override = default; + void update(); + +private: + QHash m_properties; + AbstractExtSysMonSource *m_source = nullptr; +}; + + +#endif /* EXTSYSMONSENSOR_H */ diff --git a/sources/extsysmonsources/gpuloadsource.cpp b/sources/extsysmonsources/gpuloadsource.cpp index 8a2fb95..a1bd171 100644 --- a/sources/extsysmonsources/gpuloadsource.cpp +++ b/sources/extsysmonsources/gpuloadsource.cpp @@ -14,10 +14,11 @@ * You should have received a copy of the GNU General Public License * * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - - #include "gpuloadsource.h" +#include +#include + #include #include @@ -81,17 +82,17 @@ QVariant GPULoadSource::data(const QString &_source) } -QVariantMap GPULoadSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *GPULoadSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source == "gpu/load") { - data["min"] = 0.0; - data["max"] = 100.0; - data["name"] = "GPU usage"; - data["type"] = "float"; - data["units"] = "%"; + data->min = 0.0; + data->max = 100.0; + data->name = "GPU usage"; + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitPercent; } return data; diff --git a/sources/extsysmonsources/gpuloadsource.h b/sources/extsysmonsources/gpuloadsource.h index 5787411..cb5b4ae 100644 --- a/sources/extsysmonsources/gpuloadsource.h +++ b/sources/extsysmonsources/gpuloadsource.h @@ -34,7 +34,7 @@ public: ~GPULoadSource() override; static QString autoGpu(); QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/gputempsource.cpp b/sources/extsysmonsources/gputempsource.cpp index 021a1d5..b74fcf9 100644 --- a/sources/extsysmonsources/gputempsource.cpp +++ b/sources/extsysmonsources/gputempsource.cpp @@ -15,9 +15,11 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "gputempsource.h" +#include +#include + #include #include @@ -60,17 +62,17 @@ QVariant GPUTemperatureSource::data(const QString &_source) } -QVariantMap GPUTemperatureSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *GPUTemperatureSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source == "gpu/temperature") { - data["min"] = 0.0; - data["max"] = 0.0; - data["name"] = "GPU temperature"; - data["type"] = "float"; - data["units"] = "°C"; + data->min = 0.0; + data->max = 0.0; + data->name = "GPU temperature"; + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitCelsius; } return data; diff --git a/sources/extsysmonsources/gputempsource.h b/sources/extsysmonsources/gputempsource.h index 1d88ccf..abd4c7b 100644 --- a/sources/extsysmonsources/gputempsource.h +++ b/sources/extsysmonsources/gputempsource.h @@ -33,7 +33,7 @@ public: explicit GPUTemperatureSource(QObject *_parent, const QStringList &_args); ~GPUTemperatureSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/hddtempsource.cpp b/sources/extsysmonsources/hddtempsource.cpp index 6e4402f..7af9620 100644 --- a/sources/extsysmonsources/hddtempsource.cpp +++ b/sources/extsysmonsources/hddtempsource.cpp @@ -18,6 +18,9 @@ #include "hddtempsource.h" +#include +#include + #include #include @@ -87,18 +90,19 @@ QVariant HDDTemperatureSource::data(const QString &_source) } -QVariantMap HDDTemperatureSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *HDDTemperatureSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QString device = _source; + auto device = _source; device.remove("hdd/temperature"); - QVariantMap data; - data["min"] = 0.0; - data["max"] = 0.0; - data["name"] = QString("HDD '%1' temperature").arg(device); - data["type"] = "float"; - data["units"] = "°C"; + + auto data = new KSysGuard::SensorInfo(); + data->min = 0.0; + data->max = 0.0; + data->name = QString("HDD '%1' temperature").arg(device); + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitCelsius; return data; } diff --git a/sources/extsysmonsources/hddtempsource.h b/sources/extsysmonsources/hddtempsource.h index 4034ab8..a573f50 100644 --- a/sources/extsysmonsources/hddtempsource.h +++ b/sources/extsysmonsources/hddtempsource.h @@ -34,7 +34,7 @@ public: ~HDDTemperatureSource() override; static QStringList allHdd(); QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/loadsource.cpp b/sources/extsysmonsources/loadsource.cpp index 958a3c0..d8f1b88 100644 --- a/sources/extsysmonsources/loadsource.cpp +++ b/sources/extsysmonsources/loadsource.cpp @@ -18,6 +18,9 @@ #include "loadsource.h" +#include +#include + #include #include "awdebug.h" @@ -45,17 +48,17 @@ QVariant LoadSource::data(const QString &_source) } -QVariantMap LoadSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *LoadSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source.startsWith("load/load")) { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Simple sources for load tests"; - data["type"] = "int"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = "Simple sources for load tests"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } return data; diff --git a/sources/extsysmonsources/loadsource.h b/sources/extsysmonsources/loadsource.h index 3566d32..bbf1f34 100644 --- a/sources/extsysmonsources/loadsource.h +++ b/sources/extsysmonsources/loadsource.h @@ -31,7 +31,7 @@ public: explicit LoadSource(QObject *_parent, const QStringList &_args); ~LoadSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; [[nodiscard]] QStringList sources() const override; }; diff --git a/sources/extsysmonsources/networksource.cpp b/sources/extsysmonsources/networksource.cpp index b2a94cb..6762cf1 100644 --- a/sources/extsysmonsources/networksource.cpp +++ b/sources/extsysmonsources/networksource.cpp @@ -18,6 +18,9 @@ #include "networksource.h" +#include +#include + #include #include @@ -57,23 +60,19 @@ QVariant NetworkSource::data(const QString &_source) } -QVariantMap NetworkSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *NetworkSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source == "network/current/name") { - data["min"] = ""; - data["max"] = ""; - data["name"] = "Current network device name"; - data["type"] = "QString"; - data["units"] = ""; + data->name = "Current network device name"; + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "network/current/ssid") { - data["min"] = ""; - data["max"] = ""; - data["name"] = "Current SSID name"; - data["type"] = "QString"; - data["units"] = ""; + data->name = "Current SSID name"; + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } return data; diff --git a/sources/extsysmonsources/networksource.h b/sources/extsysmonsources/networksource.h index 8e115c6..1069199 100644 --- a/sources/extsysmonsources/networksource.h +++ b/sources/extsysmonsources/networksource.h @@ -33,7 +33,7 @@ public: explicit NetworkSource(QObject *_parent, const QStringList &_args); ~NetworkSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/playersource.cpp b/sources/extsysmonsources/playersource.cpp index 529de9d..e23a845 100644 --- a/sources/extsysmonsources/playersource.cpp +++ b/sources/extsysmonsources/playersource.cpp @@ -18,6 +18,9 @@ #include "playersource.h" +#include +#include + #include #include #include @@ -87,77 +90,59 @@ QString PlayerSource::getAutoMpris() } -QVariantMap PlayerSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *PlayerSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source == "player/album") { - data["min"] = ""; - data["max"] = ""; - data["name"] = "Current song album"; - data["type"] = "QString"; - data["units"] = ""; + data->name = "Current song album"; + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "player/salbum") { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Current song album (%1 symbols)").arg(m_symbols); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("Current song album (%1 symbols)").arg(m_symbols); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "player/dalbum") { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Current song album (%1 symbols, dynamic)").arg(m_symbols); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("Current song album (%1 symbols, dynamic)").arg(m_symbols); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "player/artist") { - data["min"] = ""; - data["max"] = ""; - data["name"] = "Current song artist"; - data["type"] = "QString"; - data["units"] = ""; + data->name = "Current song artist"; + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "player/sartist") { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Current song artist (%1 symbols)").arg(m_symbols); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("Current song artist (%1 symbols)").arg(m_symbols); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "player/dartist") { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Current song artist (%1 symbols, dynamic)").arg(m_symbols); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("Current song artist (%1 symbols, dynamic)").arg(m_symbols); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "player/duration") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Current song duration"; - data["type"] = "integer"; - data["units"] = "s"; + data->min = 0; + data->max = 0; + data->name = "Current song duration"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitSecond; } else if (_source == "player/progress") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Current song progress"; - data["type"] = "integer"; - data["units"] = "s"; + data->min = 0; + data->max = 0; + data->name = "Current song progress"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitSecond; } else if (_source == "player/title") { - data["min"] = ""; - data["max"] = ""; - data["name"] = "Current song title"; - data["type"] = "QString"; - data["units"] = ""; + data->name = "Current song title"; + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "player/stitle") { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Current song title (%1 symbols)").arg(m_symbols); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("Current song title (%1 symbols)").arg(m_symbols); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source == "player/dtitle") { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Current song title (%1 symbols, dynamic)").arg(m_symbols); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("Current song title (%1 symbols, dynamic)").arg(m_symbols); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } return data; diff --git a/sources/extsysmonsources/playersource.h b/sources/extsysmonsources/playersource.h index e5a8449..6d0e8d1 100644 --- a/sources/extsysmonsources/playersource.h +++ b/sources/extsysmonsources/playersource.h @@ -38,7 +38,7 @@ public: ~PlayerSource() override; QVariant data(const QString &_source) override; static QString getAutoMpris(); - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; [[nodiscard]] QStringList sources() const override; // additional method to build dynamic tags diff --git a/sources/extsysmonsources/processessource.cpp b/sources/extsysmonsources/processessource.cpp index 35c1a67..a3219eb 100644 --- a/sources/extsysmonsources/processessource.cpp +++ b/sources/extsysmonsources/processessource.cpp @@ -18,6 +18,9 @@ #include "processessource.h" +#include +#include + #include #include "awdebug.h" @@ -48,29 +51,27 @@ QVariant ProcessesSource::data(const QString &_source) } -QVariantMap ProcessesSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *ProcessesSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source == "ps/running/count") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Count of running processes"; - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = "Count of running processes"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source == "ps/running/list") { - data["min"] = QStringList(); - data["max"] = QStringList(); - data["name"] = "All running processes list"; - data["type"] = "QStringList"; - data["units"] = ""; + data->name = "All running processes list"; + data->variantType = QVariant::StringList; + data->unit = KSysGuard::UnitNone; } else if (_source == "ps/total/count") { - data["min"] = 0; - data["max"] = 0; - data["name"] = "Total count of processes"; - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = "Total count of processes"; + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } return data; diff --git a/sources/extsysmonsources/processessource.h b/sources/extsysmonsources/processessource.h index 2f4cb6e..1906768 100644 --- a/sources/extsysmonsources/processessource.h +++ b/sources/extsysmonsources/processessource.h @@ -31,7 +31,7 @@ public: explicit ProcessesSource(QObject *_parent, const QStringList &_args); ~ProcessesSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/quotessource.cpp b/sources/extsysmonsources/quotessource.cpp index b1955e1..f386345 100644 --- a/sources/extsysmonsources/quotessource.cpp +++ b/sources/extsysmonsources/quotessource.cpp @@ -18,6 +18,9 @@ #include "quotessource.h" +#include +#include + #include "awdebug.h" #include "extquotes.h" @@ -57,48 +60,48 @@ QVariant QuotesSource::data(const QString &_source) } -QVariantMap QuotesSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *QuotesSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; int ind = index(_source); - QVariantMap data; + auto data = new KSysGuard::SensorInfo; if (_source.startsWith("quotes/pricechg")) { - data["min"] = 0.0; - data["max"] = 0.0; - data["name"] = QString("Absolute prie changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); - data["type"] = "double"; - data["units"] = ""; + data->min = 0.0; + data->max = 0.0; + data->name = QString("Absolute price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("quotes/price")) { - data["min"] = 0.0; - data["max"] = 0.0; - data["name"] = QString("Price for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); - data["type"] = "double"; - data["units"] = ""; + data->min = 0.0; + data->max = 0.0; + data->name = QString("Price for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("quotes/percpricechg")) { - data["min"] = -100.0; - data["max"] = 100.0; - data["name"] = QString("Price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); - data["type"] = "double"; - data["units"] = ""; + data->min = -100.0; + data->max = 100.0; + data->name = QString("Price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitPercent; } else if (_source.startsWith("quotes/volumechg")) { - data["min"] = 0; - data["max"] = 0; - data["name"] = QString("Absolute volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); - data["type"] = "int"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = QString("Absolute volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("quotes/volume")) { - data["min"] = 0; - data["max"] = 0; - data["name"] = QString("Volume for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); - data["type"] = "int"; - data["units"] = ""; + data->min = 0; + data->max = 0; + data->name = QString("Volume for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("quotes/percvolumechg")) { - data["min"] = -100.0; - data["max"] = 100.0; - data["name"] = QString("Volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); - data["type"] = "double"; - data["units"] = ""; + data->min = -100.0; + data->max = 100.0; + data->name = QString("Volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitPercent; } return data; diff --git a/sources/extsysmonsources/quotessource.h b/sources/extsysmonsources/quotessource.h index 04fbcba..79034c8 100644 --- a/sources/extsysmonsources/quotessource.h +++ b/sources/extsysmonsources/quotessource.h @@ -34,7 +34,7 @@ public: explicit QuotesSource(QObject *_parent, const QStringList &_args); ~QuotesSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/requestsource.cpp b/sources/extsysmonsources/requestsource.cpp index 628fb0d..c4a0a3e 100644 --- a/sources/extsysmonsources/requestsource.cpp +++ b/sources/extsysmonsources/requestsource.cpp @@ -18,6 +18,9 @@ #include "requestsource.h" +#include +#include + #include "awdebug.h" #include "extnetworkrequest.h" @@ -57,18 +60,16 @@ QVariant RequestSource::data(const QString &_source) } -QVariantMap RequestSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *RequestSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; int ind = index(_source); - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source.startsWith("network/response")) { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq()); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } return data; diff --git a/sources/extsysmonsources/requestsource.h b/sources/extsysmonsources/requestsource.h index 4ad16cb..6e36f50 100644 --- a/sources/extsysmonsources/requestsource.h +++ b/sources/extsysmonsources/requestsource.h @@ -34,7 +34,7 @@ public: explicit RequestSource(QObject *_parent, const QStringList &_args); ~RequestSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/systeminfosource.cpp b/sources/extsysmonsources/systeminfosource.cpp index 6849704..a089001 100644 --- a/sources/extsysmonsources/systeminfosource.cpp +++ b/sources/extsysmonsources/systeminfosource.cpp @@ -18,6 +18,9 @@ #include "systeminfosource.h" +#include +#include + #include #include #include @@ -51,23 +54,23 @@ QVariant SystemInfoSource::data(const QString &_source) } -QVariantMap SystemInfoSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *SystemInfoSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source == "system/brightness") { - data["min"] = 0.0; - data["max"] = 100.0; - data["name"] = "Screen brightness"; - data["type"] = "float"; - data["units"] = "%"; + data->min = 0.0; + data->max = 100.0; + data->name = "Screen brightness"; + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitPercent; } else if (_source == "system/volume") { - data["min"] = 0.0; - data["max"] = 100.0; - data["name"] = "Master volume"; - data["type"] = "float"; - data["units"] = "%"; + data->min = 0.0; + data->max = 100.0; + data->name = "Master volume"; + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitPercent; } return data; diff --git a/sources/extsysmonsources/systeminfosource.h b/sources/extsysmonsources/systeminfosource.h index b700b8a..6f0aec2 100644 --- a/sources/extsysmonsources/systeminfosource.h +++ b/sources/extsysmonsources/systeminfosource.h @@ -31,7 +31,7 @@ public: explicit SystemInfoSource(QObject *_parent, const QStringList &_args); ~SystemInfoSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/upgradesource.cpp b/sources/extsysmonsources/upgradesource.cpp index 914d4e1..5b165ad 100644 --- a/sources/extsysmonsources/upgradesource.cpp +++ b/sources/extsysmonsources/upgradesource.cpp @@ -18,6 +18,9 @@ #include "upgradesource.h" +#include +#include + #include "awdebug.h" #include "extupgrade.h" @@ -49,16 +52,14 @@ QVariant UpgradeSource::data(const QString &_source) } -QVariantMap UpgradeSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *UpgradeSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; - QVariantMap data; - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Package manager '%1' metadata").arg(m_extUpgrade->itemByTagNumber(index(_source))->uniq()); - data["type"] = "QString"; - data["units"] = ""; + auto data = new KSysGuard::SensorInfo(); + data->name = QString("Package manager '%1' metadata").arg(m_extUpgrade->itemByTagNumber(index(_source))->uniq()); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; return data; } diff --git a/sources/extsysmonsources/upgradesource.h b/sources/extsysmonsources/upgradesource.h index 79a6443..1e42785 100644 --- a/sources/extsysmonsources/upgradesource.h +++ b/sources/extsysmonsources/upgradesource.h @@ -34,7 +34,7 @@ public: explicit UpgradeSource(QObject *_parent, const QStringList &_args); ~UpgradeSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; [[nodiscard]] QStringList sources() const override; diff --git a/sources/extsysmonsources/weathersource.cpp b/sources/extsysmonsources/weathersource.cpp index e3a618a..2be6194 100644 --- a/sources/extsysmonsources/weathersource.cpp +++ b/sources/extsysmonsources/weathersource.cpp @@ -18,6 +18,9 @@ #include "weathersource.h" +#include +#include + #include "awdebug.h" #include "extweather.h" @@ -57,48 +60,44 @@ QVariant WeatherSource::data(const QString &_source) } -QVariantMap WeatherSource::initialData(const QString &_source) const +KSysGuard::SensorInfo *WeatherSource::initialData(const QString &_source) const { qCDebug(LOG_ESS) << "Source" << _source; int ind = index(_source); - QVariantMap data; + auto data = new KSysGuard::SensorInfo(); if (_source.startsWith("weather/weatherId")) { - data["min"] = 0; - data["max"] = 1000; - data["name"] = QString("Numeric weather ID for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); - data["type"] = "integer"; - data["units"] = ""; + data->min = 0; + data->max = 1000; + data->name = QString("Numeric weather ID for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("weather/weather")) { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("ID string map for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("ID string map for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("weather/humidity")) { - data["min"] = 0; - data["max"] = 100; - data["name"] = QString("Humidity for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); - data["type"] = "integer"; - data["units"] = "%"; + data->min = 0; + data->max = 100; + data->name = QString("Humidity for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitPercent; } else if (_source.startsWith("weather/pressure")) { - data["min"] = 0; - data["max"] = 0; - data["name"] = QString("Atmospheric pressure for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); - data["type"] = "integer"; - data["units"] = "mb"; + data->min = 0; + data->max = 0; + data->name = QString("Atmospheric pressure for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Int; + data->unit = KSysGuard::UnitNone; } else if (_source.startsWith("weather/temperature")) { - data["min"] = 0.0; - data["max"] = 0.0; - data["name"] = QString("Temperature for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); - data["type"] = "float"; - data["units"] = "°C"; + data->min = 0.0; + data->max = 0.0; + data->name = QString("Temperature for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::Double; + data->unit = KSysGuard::UnitCelsius; } else if (_source.startsWith("weather/timestamp")) { - data["min"] = ""; - data["max"] = ""; - data["name"] = QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); - data["type"] = "QString"; - data["units"] = ""; + data->name = QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); + data->variantType = QVariant::String; + data->unit = KSysGuard::UnitNone; } return data; diff --git a/sources/extsysmonsources/weathersource.h b/sources/extsysmonsources/weathersource.h index b75a1e5..e43cc8d 100644 --- a/sources/extsysmonsources/weathersource.h +++ b/sources/extsysmonsources/weathersource.h @@ -34,7 +34,7 @@ public: explicit WeatherSource(QObject *_parent, const QStringList &_args); ~WeatherSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] QVariantMap initialData(const QString &_source) const override; + [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; [[nodiscard]] QStringList sources() const override; diff --git a/sources/libraries.cmake b/sources/libraries.cmake index ca15ffe..c8b9695 100644 --- a/sources/libraries.cmake +++ b/sources/libraries.cmake @@ -27,4 +27,4 @@ include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings) set(Kf6_INCLUDE ${KDE_INSTALL_FULL_INCLUDEDIR_KF}) -set(Kf6_LIBRARIES KF6::I18n KF6::Notifications KF6::WindowSystem KSysGuard::Sensors KSysGuard::SensorFaces KSysGuard::SystemStats PW::LibTaskManager) +set(Kf6_LIBRARIES KF6::CoreAddons KF6::I18n KF6::Notifications KF6::WindowSystem KSysGuard::Sensors KSysGuard::SensorFaces KSysGuard::SystemStats PW::LibTaskManager)