mirror of
				https://github.com/arcan1s/awesome-widgets.git
				synced 2025-11-04 06:43:41 +00:00 
			
		
		
		
	refactor: simplify sources processing
This commit is contained in:
		@ -20,13 +20,9 @@
 | 
			
		||||
#include <QObject>
 | 
			
		||||
#include <QRegularExpression>
 | 
			
		||||
#include <QVariant>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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<QString, KSysGuard::SensorInfo *> 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 &);
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "batterysource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include <QDir>
 | 
			
		||||
 | 
			
		||||
#include <cmath>
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> BatterySource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    return m_sources;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    // 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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    static double approximate(const QList<int> &_trend);
 | 
			
		||||
 | 
			
		||||
@ -17,9 +17,6 @@
 | 
			
		||||
 | 
			
		||||
#include "customsource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#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<ExtScript>(nullptr, "scripts");
 | 
			
		||||
    m_extScripts = new ExtItemAggregator<ExtScript>(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<QString, KSysGuard::SensorInfo *> CustomSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    qCDebug(LOG_ESS) << "Source" << _source;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QStringList getSources();
 | 
			
		||||
    // configuration and values
 | 
			
		||||
    ExtItemAggregator<ExtScript> *m_extScripts = nullptr;
 | 
			
		||||
    QStringList m_sources;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -18,8 +18,6 @@
 | 
			
		||||
#include "desktopsource.h"
 | 
			
		||||
 | 
			
		||||
#include <KWindowSystem/KWindowSystem>
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
#include <taskmanager/virtualdesktopinfo.h>
 | 
			
		||||
 | 
			
		||||
#include "awdebug.h"
 | 
			
		||||
@ -65,42 +63,14 @@ QVariant DesktopSource::data(const QString &_source)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
KSysGuard::SensorInfo *DesktopSource::initialData(const QString &_source) const
 | 
			
		||||
QHash<QString, KSysGuard::SensorInfo *> DesktopSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    qCDebug(LOG_ESS) << "Source" << _source;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    TaskManager::VirtualDesktopInfo *m_vdi = nullptr;
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "loadsource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include <QRandomGenerator>
 | 
			
		||||
 | 
			
		||||
#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<QString, KSysGuard::SensorInfo *> LoadSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    qCDebug(LOG_ESS) << "Source" << _source;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "networksource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include <QNetworkInterface>
 | 
			
		||||
#include <QProcess>
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> NetworkSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    QStringList sources;
 | 
			
		||||
    sources.append("device");
 | 
			
		||||
    sources.append("ssid");
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    return sources;
 | 
			
		||||
    result.insert("device", makeSensorInfo("Current network device name", QVariant::String));
 | 
			
		||||
    result.insert("ssid", makeSensorInfo("Current SSID name", QVariant::String));
 | 
			
		||||
 | 
			
		||||
    return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
    void updateSsid();
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "playersource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include <QDBusArgument>
 | 
			
		||||
#include <QDBusConnection>
 | 
			
		||||
#include <QDBusConnectionInterface>
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> 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<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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())) {
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> 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);
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "processessource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include <QDir>
 | 
			
		||||
 | 
			
		||||
#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<QString, KSysGuard::SensorInfo *> ProcessesSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    QStringList sources;
 | 
			
		||||
    sources.append("running");
 | 
			
		||||
    sources.append("list");
 | 
			
		||||
    sources.append("count");
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    // configuration and values
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "quotessource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include "awdebug.h"
 | 
			
		||||
#include "extquotes.h"
 | 
			
		||||
 | 
			
		||||
@ -33,13 +29,6 @@ QuotesSource::QuotesSource(QObject *_parent, const QStringList &_args)
 | 
			
		||||
 | 
			
		||||
    m_extQuotes = new ExtItemAggregator<ExtQuotes>(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<QString, KSysGuard::SensorInfo *> QuotesSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    qCDebug(LOG_ESS) << "Source" << _source;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QStringList getSources();
 | 
			
		||||
    // configuration and values
 | 
			
		||||
    ExtItemAggregator<ExtQuotes> *m_extQuotes = nullptr;
 | 
			
		||||
    QStringList m_sources;
 | 
			
		||||
    QVariantHash m_values;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "requestsource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include "awdebug.h"
 | 
			
		||||
#include "extnetworkrequest.h"
 | 
			
		||||
 | 
			
		||||
@ -33,13 +29,6 @@ RequestSource::RequestSource(QObject *_parent, const QStringList &_args)
 | 
			
		||||
 | 
			
		||||
    m_extNetRequest = new ExtItemAggregator<ExtNetworkRequest>(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<QString, KSysGuard::SensorInfo *> RequestSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    qCDebug(LOG_ESS) << "Source" << _source;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QStringList getSources();
 | 
			
		||||
    // configuration and values
 | 
			
		||||
    ExtItemAggregator<ExtNetworkRequest> *m_extNetRequest = nullptr;
 | 
			
		||||
    QStringList m_sources;
 | 
			
		||||
    QVariantHash m_values;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> SystemInfoSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    QStringList sources;
 | 
			
		||||
    sources.append("brightness");
 | 
			
		||||
    sources.append("volume");
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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();
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    // configuration and values
 | 
			
		||||
 | 
			
		||||
@ -17,9 +17,6 @@
 | 
			
		||||
 | 
			
		||||
#include "timesource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include "awdebug.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -43,20 +40,11 @@ QVariant TimeSource::data(const QString &_source)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
KSysGuard::SensorInfo *TimeSource::initialData(const QString &_source) const
 | 
			
		||||
QHash<QString, KSysGuard::SensorInfo *> TimeSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    qCDebug(LOG_ESS) << "Source" << _source;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "upgradesource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include "awdebug.h"
 | 
			
		||||
#include "extupgrade.h"
 | 
			
		||||
 | 
			
		||||
@ -33,13 +29,6 @@ UpgradeSource::UpgradeSource(QObject *_parent, const QStringList &_args)
 | 
			
		||||
 | 
			
		||||
    m_extUpgrade = new ExtItemAggregator<ExtUpgrade>(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<QString, KSysGuard::SensorInfo *> UpgradeSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    qCDebug(LOG_ESS) << "Source" << _source;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QStringList getSources();
 | 
			
		||||
    // configuration and values
 | 
			
		||||
    ExtItemAggregator<ExtUpgrade> *m_extUpgrade = nullptr;
 | 
			
		||||
    QStringList m_sources;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -15,12 +15,8 @@
 | 
			
		||||
 *   along with awesome-widgets. If not, see http://www.gnu.org/licenses/  *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "weathersource.h"
 | 
			
		||||
 | 
			
		||||
#include <ksysguard/formatter/Unit.h>
 | 
			
		||||
#include <ksysguard/systemstats/SensorInfo.h>
 | 
			
		||||
 | 
			
		||||
#include "awdebug.h"
 | 
			
		||||
#include "extweather.h"
 | 
			
		||||
 | 
			
		||||
@ -33,13 +29,6 @@ WeatherSource::WeatherSource(QObject *_parent, const QStringList &_args)
 | 
			
		||||
 | 
			
		||||
    m_extWeather = new ExtItemAggregator<ExtWeather>(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<QString, KSysGuard::SensorInfo *> WeatherSource::sources() const
 | 
			
		||||
{
 | 
			
		||||
    qCDebug(LOG_ESS) << "Source" << _source;
 | 
			
		||||
    auto result = QHash<QString, KSysGuard::SensorInfo *>();
 | 
			
		||||
 | 
			
		||||
    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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<QString, KSysGuard::SensorInfo *> sources() const override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    QStringList getSources();
 | 
			
		||||
    // configuration and values
 | 
			
		||||
    ExtItemAggregator<ExtWeather> *m_extWeather = nullptr;
 | 
			
		||||
    QStringList m_sources;
 | 
			
		||||
    QVariantHash m_values;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user