From 8e8fac6214fef963e587731cc2b9c9faf78644b5 Mon Sep 17 00:00:00 2001 From: Evgenii Alekseev Date: Thu, 28 Mar 2024 11:14:45 +0200 Subject: [PATCH] refactor: simplify sources processing --- .../abstractextsysmonsource.h | 25 ++- sources/extsysmonsources/batterysource.cpp | 144 ++++-------------- sources/extsysmonsources/batterysource.h | 6 +- sources/extsysmonsources/customsource.cpp | 39 +---- sources/extsysmonsources/customsource.h | 7 +- sources/extsysmonsources/desktopsource.cpp | 44 +----- sources/extsysmonsources/desktopsource.h | 3 +- sources/extsysmonsources/extsysmonsensor.cpp | 19 +-- sources/extsysmonsources/extsysmonsensor.h | 2 + sources/extsysmonsources/loadsource.cpp | 36 +---- sources/extsysmonsources/loadsource.h | 5 +- sources/extsysmonsources/networksource.cpp | 34 +---- sources/extsysmonsources/networksource.h | 3 +- sources/extsysmonsources/playersource.cpp | 114 ++++---------- sources/extsysmonsources/playersource.h | 3 +- sources/extsysmonsources/processessource.cpp | 58 ++----- sources/extsysmonsources/processessource.h | 5 +- sources/extsysmonsources/quotessource.cpp | 96 +++--------- sources/extsysmonsources/quotessource.h | 7 +- sources/extsysmonsources/requestsource.cpp | 49 ++---- sources/extsysmonsources/requestsource.h | 7 +- sources/extsysmonsources/systeminfosource.cpp | 42 +---- sources/extsysmonsources/systeminfosource.h | 5 +- sources/extsysmonsources/timesource.cpp | 20 +-- sources/extsysmonsources/timesource.h | 4 +- sources/extsysmonsources/upgradesource.cpp | 38 +---- sources/extsysmonsources/upgradesource.h | 7 +- sources/extsysmonsources/weathersource.cpp | 87 +++-------- sources/extsysmonsources/weathersource.h | 7 +- 29 files changed, 204 insertions(+), 712 deletions(-) diff --git a/sources/extsysmonsources/abstractextsysmonsource.h b/sources/extsysmonsources/abstractextsysmonsource.h index 005afe8..c2e0fd7 100644 --- a/sources/extsysmonsources/abstractextsysmonsource.h +++ b/sources/extsysmonsources/abstractextsysmonsource.h @@ -20,13 +20,9 @@ #include #include #include +#include -namespace KSysGuard -{ -class SensorInfo; -} - class AbstractExtSysMonSource : public QObject { Q_OBJECT @@ -36,15 +32,30 @@ public: : QObject(_parent){}; ~AbstractExtSysMonSource() override = default; virtual QVariant data(const QString &_source) = 0; - [[nodiscard]] virtual KSysGuard::SensorInfo *initialData(const QString &_source) const = 0; virtual void run() = 0; - [[nodiscard]] virtual QStringList sources() const = 0; + [[nodiscard]] virtual QHash sources() const = 0; + // used by extensions static int index(const QString &_source) { QRegularExpression rx("\\d+"); return rx.match(_source).captured().toInt(); } + static KSysGuard::SensorInfo *makeSensorInfo(const QString &_name, const QVariant::Type type, + const KSysGuard::Unit unit = KSysGuard::UnitNone, const double min = 0, + const double max = 9) + { + auto info = new KSysGuard::SensorInfo(); + info->name = _name; + info->variantType = type; + + info->unit = unit; + + info->min = min; + info->max = max; + + return info; + } signals: void dataReceived(const QVariantHash &); diff --git a/sources/extsysmonsources/batterysource.cpp b/sources/extsysmonsources/batterysource.cpp index 431ee83..d189f84 100644 --- a/sources/extsysmonsources/batterysource.cpp +++ b/sources/extsysmonsources/batterysource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "batterysource.h" -#include -#include - #include #include @@ -35,44 +31,10 @@ BatterySource::BatterySource(QObject *_parent, const QStringList &_args) qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; m_acpiPath = _args.at(0); - m_sources = getSources(); -} - - -BatterySource::~BatterySource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; -} - - -QStringList BatterySource::getSources() -{ - QStringList sources; - sources.append("ac"); - sources.append("bat"); - sources.append("batleft"); - sources.append("batnow"); - sources.append("batrate"); - sources.append("battotal"); auto directory = QDir(m_acpiPath); - - if (directory.exists()) { - m_batteriesCount - = directory.entryList(QStringList({"BAT*"}), QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name).count(); - qCInfo(LOG_ESS) << "Init batteries count as" << m_batteriesCount; - - for (int i = 0; i < m_batteriesCount; i++) { - sources.append(QString("bat%1").arg(i)); - sources.append(QString("batleft%1").arg(i)); - sources.append(QString("batnow%1").arg(i)); - sources.append(QString("batrate%1").arg(i)); - sources.append(QString("battotal%1").arg(i)); - } - } - - qCInfo(LOG_ESS) << "Sources list" << sources; - return sources; + m_batteriesCount = directory.entryList(QStringList({"BAT*"}), QDir::Dirs | QDir::NoDotAndDotDot).count(); + qCInfo(LOG_ESS) << "Init batteries count as" << m_batteriesCount; } @@ -86,81 +48,6 @@ QVariant BatterySource::data(const QString &_source) } -KSysGuard::SensorInfo *BatterySource::initialData(const QString &_source) const -{ - qCDebug(LOG_ESS) << "Source" << _source; - - auto data = new KSysGuard::SensorInfo(); - if (_source == "ac") { - data->name = "Is AC online or not"; - data->variantType = QVariant::Bool; - data->unit = KSysGuard::UnitNone; - } else if (_source == "bat") { - data->min = 0; - data->max = 100; - data->name = "Average battery usage"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitPercent; - } else if (_source == "batleft") { - data->min = 0; - data->max = 0; - data->name = "Battery discharge time"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitSecond; - } else if (_source == "batnow") { - data->min = 0; - data->max = 0; - data->name = "Current battery capacity"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitNone; - } else if (_source == "batrate") { - data->min = 0; - data->max = 0; - data->name = "Average battery discharge rate"; - data->variantType = QVariant::Double; - data->unit = KSysGuard::UnitRate; - } else if (_source == "battotal") { - data->min = 0; - data->max = 0; - data->name = "Full battery capacity"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitNone; - } else if (_source.startsWith("batleft")) { - 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("batnow")) { - 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("battotal")) { - 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("batrate")) { - 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("bat")) { - 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; -} - - void BatterySource::run() { // adaptor @@ -203,9 +90,32 @@ void BatterySource::run() } -QStringList BatterySource::sources() const +QHash BatterySource::sources() const { - return m_sources; + auto result = QHash(); + + // fixed fields + result.insert("ac", makeSensorInfo("Is AC online or not", QVariant::Bool)); + result.insert("bat", makeSensorInfo("Average battery usage", QVariant::Int, KSysGuard::UnitPercent, 0, 100)); + result.insert("batleft", makeSensorInfo("Battery discharge time", QVariant::Int, KSysGuard::UnitSecond)); + result.insert("batnow", makeSensorInfo("Current battery capacity", QVariant::Int)); + result.insert("batrate", makeSensorInfo("Average battery discharge rate", QVariant::Double, KSysGuard::UnitRate)); + result.insert("battotal", makeSensorInfo("Full battery capacity", QVariant::Int)); + + // generators + for (auto i = 0; i < m_batteriesCount; i++) { + result.insert(QString("bat%1").arg(i), makeSensorInfo(QString("Battery %1 usage").arg(i), QVariant::Int, + KSysGuard::UnitPercent, 0, 100)); + result.insert(QString("batleft%1").arg(i), makeSensorInfo(QString("Battery %1 discharge time").arg(i), + QVariant::Int, KSysGuard::UnitSecond)); + result.insert(QString("batnow%1").arg(i), makeSensorInfo(QString("Battery %1 capacity").arg(i), QVariant::Int)); + result.insert(QString("batrate%1").arg(i), makeSensorInfo(QString("Battery %1 discharge rate").arg(i), + QVariant::Double, KSysGuard::UnitRate)); + result.insert(QString("battotal%1").arg(i), + makeSensorInfo(QString("Battery %1 full capacity").arg(i), QVariant::Int)); + } + + return result; } diff --git a/sources/extsysmonsources/batterysource.h b/sources/extsysmonsources/batterysource.h index c2466f7..7f4f981 100644 --- a/sources/extsysmonsources/batterysource.h +++ b/sources/extsysmonsources/batterysource.h @@ -31,12 +31,10 @@ public: const int TREND_LIMIT = 20; explicit BatterySource(QObject *_parent, const QStringList &_args); - ~BatterySource() override; - QStringList getSources(); + ~BatterySource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: static double approximate(const QList &_trend); diff --git a/sources/extsysmonsources/customsource.cpp b/sources/extsysmonsources/customsource.cpp index a03214e..d2b5e3d 100644 --- a/sources/extsysmonsources/customsource.cpp +++ b/sources/extsysmonsources/customsource.cpp @@ -17,9 +17,6 @@ #include "customsource.h" -#include -#include - #include "awdebug.h" #include "extscript.h" @@ -30,15 +27,8 @@ CustomSource::CustomSource(QObject *_parent, const QStringList &_args) Q_ASSERT(_args.count() == 0); qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; - m_extScripts = new ExtItemAggregator(nullptr, "scripts"); + m_extScripts = new ExtItemAggregator(this, "scripts"); m_extScripts->initSockets(); - m_sources = getSources(); -} - - -CustomSource::~CustomSource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; } @@ -51,30 +41,13 @@ QVariant CustomSource::data(const QString &_source) } -KSysGuard::SensorInfo *CustomSource::initialData(const QString &_source) const +QHash CustomSource::sources() const { - qCDebug(LOG_ESS) << "Source" << _source; + auto result = QHash(); - 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; -} - - -QStringList CustomSource::sources() const -{ - return m_sources; -} - - -QStringList CustomSource::getSources() -{ - QStringList sources; for (auto &item : m_extScripts->activeItems()) - sources.append(item->tag("custom")); + result.insert(item->tag("custom"), + makeSensorInfo(QString("Custom command '%1' output").arg(item->uniq()), QVariant::String)); - return sources; + return result; } diff --git a/sources/extsysmonsources/customsource.h b/sources/extsysmonsources/customsource.h index e24b4b5..60ffdf0 100644 --- a/sources/extsysmonsources/customsource.h +++ b/sources/extsysmonsources/customsource.h @@ -31,15 +31,12 @@ class CustomSource : public AbstractExtSysMonSource public: explicit CustomSource(QObject *_parent, const QStringList &_args); - ~CustomSource() override; + ~CustomSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: - QStringList getSources(); // configuration and values ExtItemAggregator *m_extScripts = nullptr; - QStringList m_sources; }; diff --git a/sources/extsysmonsources/desktopsource.cpp b/sources/extsysmonsources/desktopsource.cpp index 149f475..92a9cd7 100644 --- a/sources/extsysmonsources/desktopsource.cpp +++ b/sources/extsysmonsources/desktopsource.cpp @@ -18,8 +18,6 @@ #include "desktopsource.h" #include -#include -#include #include #include "awdebug.h" @@ -65,42 +63,14 @@ QVariant DesktopSource::data(const QString &_source) } -KSysGuard::SensorInfo *DesktopSource::initialData(const QString &_source) const +QHash DesktopSource::sources() const { - qCDebug(LOG_ESS) << "Source" << _source; + auto result = QHash(); - auto data = new KSysGuard::SensorInfo(); - if (_source == "name") { - data->name = "Current desktop name"; - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "number") { - data->min = 0; - data->name = "Current desktop number"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitNone; - } else if (_source == "names") { - data->name = "All desktops by name"; - data->variantType = QVariant::StringList; - data->unit = KSysGuard::UnitNone; - } else if (_source == "count") { - data->min = 0; - data->name = "Desktops count"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitNone; - } + result.insert("name", makeSensorInfo("Current desktop name", QVariant::String)); + result.insert("number", makeSensorInfo("Current desktop number", QVariant::Int)); + result.insert("names", makeSensorInfo("All desktops by name", QVariant::StringList)); + result.insert("count", makeSensorInfo("Desktops count", QVariant::Int)); - return data; -} - - -QStringList DesktopSource::sources() const -{ - QStringList sources; - sources.append("name"); - sources.append("number"); - sources.append("names"); - sources.append("count"); - - return sources; + return result; } diff --git a/sources/extsysmonsources/desktopsource.h b/sources/extsysmonsources/desktopsource.h index d7e36cf..18ae6c3 100644 --- a/sources/extsysmonsources/desktopsource.h +++ b/sources/extsysmonsources/desktopsource.h @@ -34,9 +34,8 @@ public: explicit DesktopSource(QObject *_parent, const QStringList &_args); ~DesktopSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: TaskManager::VirtualDesktopInfo *m_vdi = nullptr; diff --git a/sources/extsysmonsources/extsysmonsensor.cpp b/sources/extsysmonsources/extsysmonsensor.cpp index e8b5c50..b910aec 100644 --- a/sources/extsysmonsources/extsysmonsensor.cpp +++ b/sources/extsysmonsources/extsysmonsensor.cpp @@ -33,8 +33,8 @@ ExtSysMonSensor::ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QStr loadProperties(); - connect(this, &SensorObject::subscribedChanged, [this](bool _state) { changeSubscription(_state); }); - connect(m_timer, &QTimer::timeout, [this]() { update(); }); + connect(this, &SensorObject::subscribedChanged, this, &ExtSysMonSensor::changeSubscription); + connect(m_timer, &QTimer::timeout, this, &ExtSysMonSensor::update); } @@ -61,21 +61,22 @@ void ExtSysMonSensor::changeSubscription(bool _subscribed) void ExtSysMonSensor::update() { - for (auto &source : m_source->sources()) { - auto property = sensor(source); - if (!property->isSubscribed()) + for (auto sensor : sensors()) { + if (!sensor->isSubscribed()) continue; // skip properties which are not explicitly subscribed - auto value = m_source->data(source); - property->setValue(value); + auto value = m_source->data(sensor->id()); + sensor->setValue(value); } } void ExtSysMonSensor::loadProperties() { - for (auto &source : m_source->sources()) { - auto info = m_source->initialData(source); + auto sensors = m_source->sources(); + for (auto sensor = sensors.cbegin(); sensor != sensors.cend(); ++sensor) { + auto source = sensor.key(); + auto info = sensor.value(); auto property = new KSysGuard::SensorProperty(source, info->name, this); property->setUnit(info->unit); diff --git a/sources/extsysmonsources/extsysmonsensor.h b/sources/extsysmonsources/extsysmonsensor.h index e7fcf23..26d85f7 100644 --- a/sources/extsysmonsources/extsysmonsensor.h +++ b/sources/extsysmonsources/extsysmonsensor.h @@ -31,6 +31,8 @@ public: explicit ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QString &_id, const QString &_name, AbstractExtSysMonSource *_source); ~ExtSysMonSensor() override; + +public slots: void changeSubscription(bool _subscribed); void update(); diff --git a/sources/extsysmonsources/loadsource.cpp b/sources/extsysmonsources/loadsource.cpp index c2062ff..2287752 100644 --- a/sources/extsysmonsources/loadsource.cpp +++ b/sources/extsysmonsources/loadsource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "loadsource.h" -#include -#include - #include #include "awdebug.h" @@ -34,12 +30,6 @@ LoadSource::LoadSource(QObject *_parent, const QStringList &_args) } -LoadSource::~LoadSource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; -} - - QVariant LoadSource::data(const QString &_source) { qCDebug(LOG_ESS) << "Source" << _source; @@ -48,28 +38,12 @@ QVariant LoadSource::data(const QString &_source) } -KSysGuard::SensorInfo *LoadSource::initialData(const QString &_source) const +QHash LoadSource::sources() const { - qCDebug(LOG_ESS) << "Source" << _source; + auto result = QHash(); - auto data = new KSysGuard::SensorInfo(); - if (_source.startsWith("load")) { - data->min = 0; - data->max = 0; - data->name = "Simple sources for load tests"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitNone; - } + for (auto i = 0; i < 1000; i++) + result.insert(QString("load%1").arg(i), makeSensorInfo("Simple sources for load tests", QVariant::Int)); - return data; -} - - -QStringList LoadSource::sources() const -{ - QStringList sources; - for (int i = 0; i < 1000; i++) - sources.append(QString("load%1").arg(i)); - - return sources; + return result; } diff --git a/sources/extsysmonsources/loadsource.h b/sources/extsysmonsources/loadsource.h index 6fdbb63..6d2effe 100644 --- a/sources/extsysmonsources/loadsource.h +++ b/sources/extsysmonsources/loadsource.h @@ -28,9 +28,8 @@ class LoadSource : public AbstractExtSysMonSource public: explicit LoadSource(QObject *_parent, const QStringList &_args); - ~LoadSource() override; + ~LoadSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; }; diff --git a/sources/extsysmonsources/networksource.cpp b/sources/extsysmonsources/networksource.cpp index 3d62b42..ebb8372 100644 --- a/sources/extsysmonsources/networksource.cpp +++ b/sources/extsysmonsources/networksource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "networksource.h" -#include -#include - #include #include @@ -60,25 +56,6 @@ QVariant NetworkSource::data(const QString &_source) } -KSysGuard::SensorInfo *NetworkSource::initialData(const QString &_source) const -{ - qCDebug(LOG_ESS) << "Source" << _source; - - auto data = new KSysGuard::SensorInfo(); - if (_source == "device") { - data->name = "Current network device name"; - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "ssid") { - data->name = "Current SSID name"; - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } - - return data; -} - - void NetworkSource::run() { m_values["device"] = NetworkSource::getCurrentDevice(); @@ -88,13 +65,14 @@ void NetworkSource::run() } -QStringList NetworkSource::sources() const +QHash NetworkSource::sources() const { - QStringList sources; - sources.append("device"); - sources.append("ssid"); + auto result = QHash(); - return sources; + result.insert("device", makeSensorInfo("Current network device name", QVariant::String)); + result.insert("ssid", makeSensorInfo("Current SSID name", QVariant::String)); + + return result; } diff --git a/sources/extsysmonsources/networksource.h b/sources/extsysmonsources/networksource.h index 60b42b9..6332712 100644 --- a/sources/extsysmonsources/networksource.h +++ b/sources/extsysmonsources/networksource.h @@ -32,9 +32,8 @@ public: explicit NetworkSource(QObject *_parent, const QStringList &_args); ~NetworkSource() override; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private slots: void updateSsid(); diff --git a/sources/extsysmonsources/playersource.cpp b/sources/extsysmonsources/playersource.cpp index f95f2aa..8ae9204 100644 --- a/sources/extsysmonsources/playersource.cpp +++ b/sources/extsysmonsources/playersource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "playersource.h" -#include -#include - #include #include #include @@ -77,11 +73,10 @@ QString PlayerSource::getAutoMpris() } QStringList arguments = listServices.arguments().first().toStringList(); - for (auto &arg : arguments) { - if (!arg.startsWith("org.mpris.MediaPlayer2.")) + for (auto &service : arguments) { + if (!service.startsWith("org.mpris.MediaPlayer2.")) continue; - qCInfo(LOG_ESS) << "Service found" << arg; - QString service = arg; + qCInfo(LOG_ESS) << "Service found" << service; service.remove("org.mpris.MediaPlayer2."); return service; } @@ -90,65 +85,6 @@ QString PlayerSource::getAutoMpris() } -KSysGuard::SensorInfo *PlayerSource::initialData(const QString &_source) const -{ - qCDebug(LOG_ESS) << "Source" << _source; - - auto data = new KSysGuard::SensorInfo(); - if (_source == "album") { - data->name = "Current song album"; - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "salbum") { - data->name = QString("Current song album (%1 symbols)").arg(m_symbols); - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "dalbum") { - data->name = QString("Current song album (%1 symbols, dynamic)").arg(m_symbols); - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "artist") { - data->name = "Current song artist"; - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "sartist") { - data->name = QString("Current song artist (%1 symbols)").arg(m_symbols); - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "dartist") { - data->name = QString("Current song artist (%1 symbols, dynamic)").arg(m_symbols); - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "duration") { - data->min = 0; - data->max = 0; - data->name = "Current song duration"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitSecond; - } else if (_source == "progress") { - data->min = 0; - data->max = 0; - data->name = "Current song progress"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitSecond; - } else if (_source == "title") { - data->name = "Current song title"; - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "stitle") { - data->name = QString("Current song title (%1 symbols)").arg(m_symbols); - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } else if (_source == "dtitle") { - data->name = QString("Current song title (%1 symbols, dynamic)").arg(m_symbols); - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } - - return data; -} - - void PlayerSource::run() { // initial data @@ -176,22 +112,29 @@ void PlayerSource::run() } -QStringList PlayerSource::sources() const +QHash PlayerSource::sources() const { - QStringList sources; - sources.append("album"); - sources.append("dalbum"); - sources.append("salbum"); - sources.append("artist"); - sources.append("dartist"); - sources.append("sartist"); - sources.append("duration"); - sources.append("progress"); - sources.append("title"); - sources.append("dtitle"); - sources.append("stitle"); + auto result = QHash(); - return sources; + result.insert("album", makeSensorInfo("Current song album", QVariant::String)); + result.insert("salbum", + makeSensorInfo(QString("Current song album (%1 symbols)").arg(m_symbols), QVariant::String)); + result.insert("dalbum", + makeSensorInfo(QString("Current song album (%1 symbols, dynamic)").arg(m_symbols), QVariant::String)); + result.insert("artist", makeSensorInfo("Current song artist", QVariant::String)); + result.insert("sartist", + makeSensorInfo(QString("Current song artist (%1 symbols)").arg(m_symbols), QVariant::String)); + result.insert("dartist", makeSensorInfo(QString("Current song artist (%1 symbols, dynamic)").arg(m_symbols), + QVariant::String)); + result.insert("duration", makeSensorInfo("Current song duration", QVariant::Int, KSysGuard::UnitSecond)); + result.insert("progress", makeSensorInfo("Current song progress", QVariant::Int, KSysGuard::UnitSecond)); + result.insert("title", makeSensorInfo("Current song title", QVariant::String)); + result.insert("stitle", + makeSensorInfo(QString("Current song title (%1 symbols)").arg(m_symbols), QVariant::String)); + result.insert("dtitle", + makeSensorInfo(QString("Current song title (%1 symbols, dynamic)").arg(m_symbols), QVariant::String)); + + return result; } @@ -199,7 +142,7 @@ QString PlayerSource::buildString(const QString &_current, const QString &_value { qCDebug(LOG_ESS) << "Current value" << _current << "received" << _value << "will be stripped after" << _s; - int index = _value.indexOf(_current); + auto index = _value.indexOf(_current); if ((_current.isEmpty()) || ((index + _s + 1) > _value.length())) return QString("%1").arg(_value.left(_s), -_s, QLatin1Char(' ')); else @@ -230,7 +173,7 @@ void PlayerSource::mpdSocketConnected() void PlayerSource::mpdSocketReadyRead() { - QString qoutput = QString::fromUtf8(m_mpdSocket.readAll()).trimmed(); + auto qoutput = QString::fromUtf8(m_mpdSocket.readAll()).trimmed(); qCInfo(LOG_ESS) << "Output" << qoutput; // parse @@ -307,9 +250,8 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris) // /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get // string:'org.mpris.MediaPlayer2.Player' string:'Metadata' auto args = QVariantList({"org.mpris.MediaPlayer2.Player", "Metadata"}); - QDBusMessage request - = QDBusMessage::createMethodCall(QString("org.mpris.MediaPlayer2.%1").arg(_mpris), "/org/mpris/MediaPlayer2", - "org.freedesktop.DBus.Properties", "Get"); + auto request = QDBusMessage::createMethodCall(QString("org.mpris.MediaPlayer2.%1").arg(_mpris), + "/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties", "Get"); request.setArguments(args); auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT); if ((response.type() != QDBusMessage::ReplyMessage) || (response.arguments().isEmpty())) { diff --git a/sources/extsysmonsources/playersource.h b/sources/extsysmonsources/playersource.h index 52b13ef..efb879e 100644 --- a/sources/extsysmonsources/playersource.h +++ b/sources/extsysmonsources/playersource.h @@ -37,9 +37,8 @@ public: ~PlayerSource() override; QVariant data(const QString &_source) override; static QString getAutoMpris(); - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; // additional method to build dynamic tags static QString buildString(const QString &_current, const QString &_value, int _s); static QString stripString(const QString &_value, int _s); diff --git a/sources/extsysmonsources/processessource.cpp b/sources/extsysmonsources/processessource.cpp index e5792c0..99117a9 100644 --- a/sources/extsysmonsources/processessource.cpp +++ b/sources/extsysmonsources/processessource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "processessource.h" -#include -#include - #include #include "awdebug.h" @@ -34,12 +30,6 @@ ProcessesSource::ProcessesSource(QObject *_parent, const QStringList &_args) } -ProcessesSource::~ProcessesSource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; -} - - QVariant ProcessesSource::data(const QString &_source) { qCDebug(LOG_ESS) << "Source" << _source; @@ -51,39 +41,12 @@ QVariant ProcessesSource::data(const QString &_source) } -KSysGuard::SensorInfo *ProcessesSource::initialData(const QString &_source) const -{ - qCDebug(LOG_ESS) << "Source" << _source; - - auto data = new KSysGuard::SensorInfo(); - if (_source == "running") { - data->min = 0; - data->max = 0; - data->name = "Count of running processes"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitNone; - } else if (_source == "list") { - data->name = "All running processes list"; - data->variantType = QVariant::StringList; - data->unit = KSysGuard::UnitNone; - } else if (_source == "count") { - data->min = 0; - data->max = 0; - data->name = "Total count of processes"; - data->variantType = QVariant::Int; - data->unit = KSysGuard::UnitNone; - } - - return data; -} - - void ProcessesSource::run() { - QStringList allDirectories = QDir("/proc").entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); - QStringList directories = allDirectories.filter(QRegularExpression("(\\d+)")); - QStringList running; + auto allDirectories = QDir("/proc").entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); + auto directories = allDirectories.filter(QRegularExpression("(\\d+)")); + QStringList running; for (auto &dir : directories) { QFile statusFile(QString("/proc/%1/status").arg(dir)); if (!statusFile.open(QIODevice::ReadOnly | QIODevice::Text)) @@ -92,7 +55,7 @@ void ProcessesSource::run() if (!cmdFile.open(QIODevice::ReadOnly | QIODevice::Text)) continue; - QString output = statusFile.readAll(); + auto output = statusFile.readAll(); if (output.contains("running")) running.append(cmdFile.readAll()); statusFile.close(); @@ -105,12 +68,13 @@ void ProcessesSource::run() } -QStringList ProcessesSource::sources() const +QHash ProcessesSource::sources() const { - QStringList sources; - sources.append("running"); - sources.append("list"); - sources.append("count"); + auto result = QHash(); - return sources; + result.insert("running", makeSensorInfo("Count of running processes", QVariant::Int)); + result.insert("list", makeSensorInfo("All running processes list", QVariant::StringList)); + result.insert("count", makeSensorInfo("Total count of processes", QVariant::Int)); + + return result; } diff --git a/sources/extsysmonsources/processessource.h b/sources/extsysmonsources/processessource.h index 45c97b9..a3dd662 100644 --- a/sources/extsysmonsources/processessource.h +++ b/sources/extsysmonsources/processessource.h @@ -28,11 +28,10 @@ class ProcessesSource : public AbstractExtSysMonSource public: explicit ProcessesSource(QObject *_parent, const QStringList &_args); - ~ProcessesSource() override; + ~ProcessesSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: // configuration and values diff --git a/sources/extsysmonsources/quotessource.cpp b/sources/extsysmonsources/quotessource.cpp index 042b367..3af2d1e 100644 --- a/sources/extsysmonsources/quotessource.cpp +++ b/sources/extsysmonsources/quotessource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "quotessource.h" -#include -#include - #include "awdebug.h" #include "extquotes.h" @@ -33,13 +29,6 @@ QuotesSource::QuotesSource(QObject *_parent, const QStringList &_args) m_extQuotes = new ExtItemAggregator(nullptr, "quotes"); m_extQuotes->initSockets(); - m_sources = getSources(); -} - - -QuotesSource::~QuotesSource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; } @@ -47,82 +36,35 @@ QVariant QuotesSource::data(const QString &_source) { qCDebug(LOG_ESS) << "Source" << _source; - int ind = index(_source); + auto ind = index(_source); if (!m_values.contains(_source)) { - QVariantHash data = m_extQuotes->itemByTagNumber(ind)->run(); + auto data = m_extQuotes->itemByTagNumber(ind)->run(); for (auto &key : data.keys()) m_values[key] = data[key]; } - QVariant value = m_values.take(_source); - return value; + + return m_values.take(_source); } -KSysGuard::SensorInfo *QuotesSource::initialData(const QString &_source) const +QHash QuotesSource::sources() const { - qCDebug(LOG_ESS) << "Source" << _source; + auto result = QHash(); - int ind = index(_source); - auto data = new KSysGuard::SensorInfo; - if (_source.startsWith("pricechg")) { - 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("price")) { - 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("percpricechg")) { - 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("volumechg")) { - 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("volume")) { - 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("percvolumechg")) { - 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; -} - - -QStringList QuotesSource::sources() const -{ - return m_sources; -} - - -QStringList QuotesSource::getSources() -{ - QStringList sources; for (auto &item : m_extQuotes->activeItems()) { - sources.append(item->tag("price")); - sources.append(item->tag("pricechg")); - sources.append(item->tag("percpricechg")); - sources.append(item->tag("volume")); - sources.append(item->tag("volumechg")); - sources.append(item->tag("percvolumechg")); + result.insert(item->tag("pricechg"), + makeSensorInfo(QString("Absolute price changes for '%1'").arg(item->uniq()), QVariant::Double)); + result.insert(item->tag("price"), + makeSensorInfo(QString("Price for '%1'").arg(item->uniq()), QVariant::Double)); + result.insert(item->tag("percpricechg"), makeSensorInfo(QString("Price changes for '%1'").arg(item->uniq()), + QVariant::Double, KSysGuard::UnitPercent, 0, 100)); + result.insert(item->tag("volumechg"), + makeSensorInfo(QString("Absolute volume changes for '%1'").arg(item->uniq()), QVariant::Double)); + result.insert(item->tag("volume"), + makeSensorInfo(QString("Volume for '%1'").arg(item->uniq()), QVariant::Double)); + result.insert(item->tag("percvolumechg"), makeSensorInfo(QString("Volume changes for '%1'").arg(item->uniq()), + QVariant::Double, KSysGuard::UnitPercent, 0, 100)); } - return sources; + return result; } diff --git a/sources/extsysmonsources/quotessource.h b/sources/extsysmonsources/quotessource.h index 87ac633..36a6386 100644 --- a/sources/extsysmonsources/quotessource.h +++ b/sources/extsysmonsources/quotessource.h @@ -31,16 +31,13 @@ class QuotesSource : public AbstractExtSysMonSource public: explicit QuotesSource(QObject *_parent, const QStringList &_args); - ~QuotesSource() override; + ~QuotesSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: - QStringList getSources(); // configuration and values ExtItemAggregator *m_extQuotes = nullptr; - QStringList m_sources; QVariantHash m_values; }; diff --git a/sources/extsysmonsources/requestsource.cpp b/sources/extsysmonsources/requestsource.cpp index 2ac9eec..e510477 100644 --- a/sources/extsysmonsources/requestsource.cpp +++ b/sources/extsysmonsources/requestsource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "requestsource.h" -#include -#include - #include "awdebug.h" #include "extnetworkrequest.h" @@ -33,13 +29,6 @@ RequestSource::RequestSource(QObject *_parent, const QStringList &_args) m_extNetRequest = new ExtItemAggregator(nullptr, "requests"); m_extNetRequest->initSockets(); - m_sources = getSources(); -} - - -RequestSource::~RequestSource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; } @@ -47,44 +36,24 @@ QVariant RequestSource::data(const QString &_source) { qCDebug(LOG_ESS) << "Source" << _source; - int ind = index(_source); + auto ind = index(_source); if (!m_values.contains(_source)) { - QVariantHash data = m_extNetRequest->itemByTagNumber(ind)->run(); + auto data = m_extNetRequest->itemByTagNumber(ind)->run(); for (auto &key : data.keys()) m_values[key] = data[key]; } - QVariant value = m_values.take(_source); - return value; + + return m_values.take(_source); } -KSysGuard::SensorInfo *RequestSource::initialData(const QString &_source) const +QHash RequestSource::sources() const { - qCDebug(LOG_ESS) << "Source" << _source; + auto result = QHash(); - int ind = index(_source); - auto data = new KSysGuard::SensorInfo(); - if (_source.startsWith("response")) { - data->name = QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq()); - data->variantType = QVariant::String; - data->unit = KSysGuard::UnitNone; - } - - return data; -} - - -QStringList RequestSource::sources() const -{ - return m_sources; -} - - -QStringList RequestSource::getSources() -{ - QStringList sources; for (auto &item : m_extNetRequest->activeItems()) - sources.append(item->tag("response")); + result.insert(item->tag("response"), + makeSensorInfo(QString("Network response for %1").arg(item->uniq()), QVariant::String)); - return sources; + return result; } diff --git a/sources/extsysmonsources/requestsource.h b/sources/extsysmonsources/requestsource.h index c63e1ca..d3e0c9d 100644 --- a/sources/extsysmonsources/requestsource.h +++ b/sources/extsysmonsources/requestsource.h @@ -31,16 +31,13 @@ class RequestSource : public AbstractExtSysMonSource public: explicit RequestSource(QObject *_parent, const QStringList &_args); - ~RequestSource() override; + ~RequestSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: - QStringList getSources(); // configuration and values ExtItemAggregator *m_extNetRequest = nullptr; - QStringList m_sources; QVariantHash m_values; }; diff --git a/sources/extsysmonsources/systeminfosource.cpp b/sources/extsysmonsources/systeminfosource.cpp index 4a5dbe1..f6f2867 100644 --- a/sources/extsysmonsources/systeminfosource.cpp +++ b/sources/extsysmonsources/systeminfosource.cpp @@ -38,12 +38,6 @@ SystemInfoSource::SystemInfoSource(QObject *_parent, const QStringList &_args) } -SystemInfoSource::~SystemInfoSource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; -} - - QVariant SystemInfoSource::data(const QString &_source) { qCDebug(LOG_ESS) << "Source" << _source; @@ -54,29 +48,6 @@ QVariant SystemInfoSource::data(const QString &_source) } -KSysGuard::SensorInfo *SystemInfoSource::initialData(const QString &_source) const -{ - qCDebug(LOG_ESS) << "Source" << _source; - - auto data = new KSysGuard::SensorInfo(); - if (_source == "brightness") { - data->min = 0.0; - data->max = 100.0; - data->name = "Screen brightness"; - data->variantType = QVariant::Double; - data->unit = KSysGuard::UnitPercent; - } else if (_source == "volume") { - data->min = 0.0; - data->max = 100.0; - data->name = "Master volume"; - data->variantType = QVariant::Double; - data->unit = KSysGuard::UnitPercent; - } - - return data; -} - - void SystemInfoSource::run() { m_values["brightness"] = SystemInfoSource::getCurrentBrightness(); @@ -84,13 +55,14 @@ void SystemInfoSource::run() } -QStringList SystemInfoSource::sources() const +QHash SystemInfoSource::sources() const { - QStringList sources; - sources.append("brightness"); - sources.append("volume"); + auto result = QHash(); - return sources; + result.insert("brightness", makeSensorInfo("Screen brightness", QVariant::Double, KSysGuard::UnitPercent, 0, 100)); + result.insert("volume", makeSensorInfo("Master volume", QVariant::Double, KSysGuard::UnitNone)); + + return result; } @@ -144,7 +116,7 @@ double SystemInfoSource::getCurrentVolume() } currentControl.replace(":", "_").replace(".", "_").replace("-", "_"); - auto path = QString("/Mixers/%1/%2").arg(currentMixer).arg(currentControl); + auto path = QString("/Mixers/%1/%2").arg(currentMixer, currentControl); return fromDBusVariant(sendDBusRequest("org.kde.kmix", path, "org.freedesktop.DBus.Properties", "Get", QVariantList({"org.kde.KMix.Control", "volume"}))) .toDouble(); diff --git a/sources/extsysmonsources/systeminfosource.h b/sources/extsysmonsources/systeminfosource.h index b34532a..7da804a 100644 --- a/sources/extsysmonsources/systeminfosource.h +++ b/sources/extsysmonsources/systeminfosource.h @@ -28,11 +28,10 @@ class SystemInfoSource : public AbstractExtSysMonSource public: explicit SystemInfoSource(QObject *_parent, const QStringList &_args); - ~SystemInfoSource() override; + ~SystemInfoSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: // configuration and values diff --git a/sources/extsysmonsources/timesource.cpp b/sources/extsysmonsources/timesource.cpp index 9e02dea..89e142b 100644 --- a/sources/extsysmonsources/timesource.cpp +++ b/sources/extsysmonsources/timesource.cpp @@ -17,9 +17,6 @@ #include "timesource.h" -#include -#include - #include "awdebug.h" @@ -43,20 +40,11 @@ QVariant TimeSource::data(const QString &_source) } -KSysGuard::SensorInfo *TimeSource::initialData(const QString &_source) const +QHash TimeSource::sources() const { - qCDebug(LOG_ESS) << "Source" << _source; + auto result = QHash(); - auto data = new KSysGuard::SensorInfo(); - data->name = "Current time"; - data->variantType = QVariant::LongLong; - data->unit = KSysGuard::UnitSecond; + result.insert("now", makeSensorInfo("Current time", QVariant::LongLong, KSysGuard::UnitSecond)); - return data; -} - - -QStringList TimeSource::sources() const -{ - return QStringList({"now"}); + return result; } diff --git a/sources/extsysmonsources/timesource.h b/sources/extsysmonsources/timesource.h index 18e51e9..ab30b3c 100644 --- a/sources/extsysmonsources/timesource.h +++ b/sources/extsysmonsources/timesource.h @@ -28,8 +28,8 @@ class TimeSource : public AbstractExtSysMonSource public: explicit TimeSource(QObject *_parent, const QStringList &_args); + ~TimeSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; }; diff --git a/sources/extsysmonsources/upgradesource.cpp b/sources/extsysmonsources/upgradesource.cpp index f278bcf..ba99d63 100644 --- a/sources/extsysmonsources/upgradesource.cpp +++ b/sources/extsysmonsources/upgradesource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "upgradesource.h" -#include -#include - #include "awdebug.h" #include "extupgrade.h" @@ -33,13 +29,6 @@ UpgradeSource::UpgradeSource(QObject *_parent, const QStringList &_args) m_extUpgrade = new ExtItemAggregator(nullptr, "upgrade"); m_extUpgrade->initSockets(); - m_sources = getSources(); -} - - -UpgradeSource::~UpgradeSource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; } @@ -52,30 +41,13 @@ QVariant UpgradeSource::data(const QString &_source) } -KSysGuard::SensorInfo *UpgradeSource::initialData(const QString &_source) const +QHash UpgradeSource::sources() const { - qCDebug(LOG_ESS) << "Source" << _source; + auto result = QHash(); - 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; -} - - -QStringList UpgradeSource::sources() const -{ - return m_sources; -} - - -QStringList UpgradeSource::getSources() -{ - QStringList sources; for (auto &item : m_extUpgrade->activeItems()) - sources.append(item->tag("pkgcount")); + result.insert(item->tag("pkgcount"), + makeSensorInfo(QString("Package manager '%1' metadata").arg(item->uniq()), QVariant::Int)); - return sources; + return result; } diff --git a/sources/extsysmonsources/upgradesource.h b/sources/extsysmonsources/upgradesource.h index 566056c..d977e9e 100644 --- a/sources/extsysmonsources/upgradesource.h +++ b/sources/extsysmonsources/upgradesource.h @@ -31,15 +31,12 @@ class UpgradeSource : public AbstractExtSysMonSource public: explicit UpgradeSource(QObject *_parent, const QStringList &_args); - ~UpgradeSource() override; + ~UpgradeSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: - QStringList getSources(); // configuration and values ExtItemAggregator *m_extUpgrade = nullptr; - QStringList m_sources; }; diff --git a/sources/extsysmonsources/weathersource.cpp b/sources/extsysmonsources/weathersource.cpp index ee76e56..066f24a 100644 --- a/sources/extsysmonsources/weathersource.cpp +++ b/sources/extsysmonsources/weathersource.cpp @@ -15,12 +15,8 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "weathersource.h" -#include -#include - #include "awdebug.h" #include "extweather.h" @@ -33,13 +29,6 @@ WeatherSource::WeatherSource(QObject *_parent, const QStringList &_args) m_extWeather = new ExtItemAggregator(nullptr, "weather"); m_extWeather->initSockets(); - m_sources = getSources(); -} - - -WeatherSource::~WeatherSource() -{ - qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; } @@ -47,76 +36,34 @@ QVariant WeatherSource::data(const QString &_source) { qCDebug(LOG_ESS) << "Source" << _source; - int ind = index(_source); + auto ind = index(_source); if (!m_values.contains(_source)) { auto data = m_extWeather->itemByTagNumber(ind)->run(); m_values.insert(data); } + return m_values.take(_source); } -KSysGuard::SensorInfo *WeatherSource::initialData(const QString &_source) const +QHash WeatherSource::sources() const { - qCDebug(LOG_ESS) << "Source" << _source; + auto result = QHash(); - int ind = index(_source); - auto data = new KSysGuard::SensorInfo(); - if (_source.startsWith("weatherId")) { - 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")) { - 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("humidity")) { - 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("pressure")) { - 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("temperature")) { - 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("timestamp")) { - data->name = QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq()); - data->variantType = QVariant::DateTime; - data->unit = KSysGuard::UnitNone; - } - - return data; -} - - -QStringList WeatherSource::sources() const -{ - return m_sources; -} - - -QStringList WeatherSource::getSources() -{ - QStringList sources; for (auto &item : m_extWeather->activeItems()) { - sources.append(item->tag("weatherId")); - sources.append(item->tag("weather")); - sources.append(item->tag("humidity")); - sources.append(item->tag("pressure")); - sources.append(item->tag("temperature")); - sources.append(item->tag("timestamp")); + result.insert(item->tag("weatherId"), makeSensorInfo(QString("Numeric weather ID for '%1'").arg(item->uniq()), + QVariant::Int, KSysGuard::UnitNone, 0, 1000)); + result.insert(item->tag("weather"), + makeSensorInfo(QString("ID string map for '%1'").arg(item->uniq()), QVariant::String)); + result.insert(item->tag("humidity"), makeSensorInfo(QString("Humidity for '%1'").arg(item->uniq()), + QVariant::Int, KSysGuard::UnitPercent, 0, 100)); + result.insert(item->tag("pressure"), + makeSensorInfo(QString("Atmospheric pressure for '%1'").arg(item->uniq()), QVariant::Int)); + result.insert(item->tag("temperature"), makeSensorInfo(QString("Temperature for '%1'").arg(item->uniq()), + QVariant::Double, KSysGuard::UnitCelsius)); + result.insert(item->tag("timestamp"), makeSensorInfo(QString("Timestamp for '%1'").arg(item->uniq()), + QVariant::DateTime, KSysGuard::UnitNone)); } - return sources; + return result; } diff --git a/sources/extsysmonsources/weathersource.h b/sources/extsysmonsources/weathersource.h index d704471..3aa97b2 100644 --- a/sources/extsysmonsources/weathersource.h +++ b/sources/extsysmonsources/weathersource.h @@ -31,16 +31,13 @@ class WeatherSource : public AbstractExtSysMonSource public: explicit WeatherSource(QObject *_parent, const QStringList &_args); - ~WeatherSource() override; + ~WeatherSource() override = default; QVariant data(const QString &_source) override; - [[nodiscard]] KSysGuard::SensorInfo *initialData(const QString &_source) const override; void run() override{}; - [[nodiscard]] QStringList sources() const override; + [[nodiscard]] QHash sources() const override; private: - QStringList getSources(); // configuration and values ExtItemAggregator *m_extWeather = nullptr; - QStringList m_sources; QVariantHash m_values; };