massive refactoring

This commit is contained in:
2017-05-05 17:55:52 +03:00
parent 6e62ceaac7
commit d0c96ce829
152 changed files with 3041 additions and 3219 deletions

View File

@ -28,18 +28,18 @@ class AbstractExtSysMonSource : public QObject
Q_OBJECT
public:
explicit AbstractExtSysMonSource(QObject *parent, const QStringList &)
: QObject(parent){};
explicit AbstractExtSysMonSource(QObject *_parent, const QStringList &)
: QObject(_parent){};
virtual ~AbstractExtSysMonSource(){};
virtual QVariant data(const QString &source) = 0;
virtual QVariantMap initialData(const QString &source) const = 0;
virtual QVariant data(const QString &_source) = 0;
virtual QVariantMap initialData(const QString &_source) const = 0;
virtual void run() = 0;
virtual QStringList sources() const = 0;
// used by extensions
int index(const QString &source) const
int index(const QString &_source) const
{
QRegExp rx(QString("\\d+"));
rx.indexIn(source);
QRegExp rx("\\d+");
rx.indexIn(_source);
return rx.cap().toInt();
}

View File

@ -23,13 +23,13 @@
#include "awdebug.h"
BatterySource::BatterySource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
BatterySource::BatterySource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 1);
Q_ASSERT(_args.count() == 1);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_acpiPath = args.at(0);
m_acpiPath = _args.at(0);
m_sources = getSources();
}
@ -43,11 +43,11 @@ BatterySource::~BatterySource()
QStringList BatterySource::getSources()
{
QStringList sources;
sources.append(QString("battery/ac"));
sources.append(QString("battery/bat"));
sources.append("battery/ac");
sources.append("battery/bat");
m_batteriesCount
= QDir(m_acpiPath)
.entryList(QStringList() << QString("BAT*"),
.entryList(QStringList({"BAT*"}),
QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name)
.count();
qCInfo(LOG_ESS) << "Init batteries count as" << m_batteriesCount;
@ -59,40 +59,40 @@ QStringList BatterySource::getSources()
}
QVariant BatterySource::data(const QString &source)
QVariant BatterySource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
if (!m_values.contains(source))
if (!m_values.contains(_source))
run();
QVariant value = m_values.take(source);
QVariant value = m_values.take(_source);
return value;
}
QVariantMap BatterySource::initialData(const QString &source) const
QVariantMap BatterySource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
if (source == QString("battery/ac")) {
data[QString("min")] = false;
data[QString("max")] = true;
data[QString("name")] = QString("Is AC online or not");
data[QString("type")] = QString("bool");
data[QString("units")] = QString("");
} else if (source == QString("battery/bat")) {
data[QString("min")] = 0;
data[QString("max")] = 100;
data[QString("name")] = QString("Average battery usage");
data[QString("type")] = QString("integer");
data[QString("units")] = QString("%");
if (_source == "battery/ac") {
data["min"] = false;
data["max"] = true;
data["name"] = "Is AC online or not";
data["type"] = "bool";
data["units"] = "";
} else if (_source == "battery/bat") {
data["min"] = 0;
data["max"] = 100;
data["name"] = "Average battery usage";
data["type"] = "integer";
data["units"] = "%";
} else {
data[QString("min")] = 0;
data[QString("max")] = 100;
data[QString("name")] = QString("Battery %1 usage").arg(index(source));
data[QString("type")] = QString("integer");
data[QString("units")] = QString("%");
data["min"] = 0;
data["max"] = 100;
data["name"] = QString("Battery %1 usage").arg(index(_source));
data["type"] = "integer";
data["units"] = "%";
}
return data;
@ -104,7 +104,7 @@ void BatterySource::run()
// adaptor
QFile acFile(QString("%1/AC/online").arg(m_acpiPath));
if (acFile.open(QIODevice::ReadOnly | QIODevice::Text))
m_values[QString("battery/ac")]
m_values["battery/ac"]
= (QString(acFile.readLine()).trimmed().toInt() == 1);
acFile.close();
@ -130,8 +130,7 @@ void BatterySource::run()
currentLevelFile.close();
fullLevelFile.close();
}
m_values[QString("battery/bat")]
= static_cast<int>(100 * currentLevel / fullLevel);
m_values["battery/bat"] = static_cast<int>(100 * currentLevel / fullLevel);
}

View File

@ -28,11 +28,11 @@ class BatterySource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit BatterySource(QObject *parent, const QStringList &args);
explicit BatterySource(QObject *_parent, const QStringList &_args);
virtual ~BatterySource();
QStringList getSources();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run();
QStringList sources() const;

View File

@ -22,14 +22,13 @@
#include "extscript.h"
CustomSource::CustomSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
CustomSource::CustomSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_extScripts
= new ExtItemAggregator<ExtScript>(nullptr, QString("scripts"));
m_extScripts = new ExtItemAggregator<ExtScript>(nullptr, "scripts");
m_extScripts->initSockets();
m_sources = getSources();
}
@ -43,27 +42,30 @@ CustomSource::~CustomSource()
}
QVariant CustomSource::data(const QString &source)
QVariant CustomSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
// there are only one value
return m_extScripts->itemByTagNumber(index(source))->run().values().first();
return m_extScripts->itemByTagNumber(index(_source))
->run()
.values()
.first();
}
QVariantMap CustomSource::initialData(const QString &source) const
QVariantMap CustomSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
data["min"] = "";
data["max"] = "";
data["name"]
= QString("Custom command '%1' output")
.arg(m_extScripts->itemByTagNumber(index(source))->uniq());
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
.arg(m_extScripts->itemByTagNumber(index(_source))->uniq());
data["type"] = "QString";
data["units"] = "";
return data;
}
@ -79,7 +81,7 @@ QStringList CustomSource::getSources()
{
QStringList sources;
for (auto &item : m_extScripts->activeItems())
sources.append(QString("custom/%1").arg(item->tag(QString("custom"))));
sources.append(QString("custom/%1").arg(item->tag("custom")));
return sources;
}

View File

@ -31,10 +31,10 @@ class CustomSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit CustomSource(QObject *parent, const QStringList &args);
explicit CustomSource(QObject *_parent, const QStringList &_args);
virtual ~CustomSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;

View File

@ -23,10 +23,10 @@
#include "awdebug.h"
DesktopSource::DesktopSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
DesktopSource::DesktopSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
}
@ -37,23 +37,23 @@ DesktopSource::~DesktopSource()
}
QVariant DesktopSource::data(const QString &source)
QVariant DesktopSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
int current = KWindowSystem::currentDesktop();
int total = KWindowSystem::numberOfDesktops();
if (source == QString("desktop/current/name")) {
if (_source == "desktop/current/name") {
return KWindowSystem::desktopName(current);
} else if (source == QString("desktop/current/number")) {
} else if (_source == "desktop/current/number") {
return current;
} else if (source == QString("desktop/total/name")) {
} else if (_source == "desktop/total/name") {
QStringList desktops;
for (int i = 1; i < total + 1; i++)
desktops.append(KWindowSystem::desktopName(i));
return desktops;
} else if (source == QString("desktop/total/number")) {
} else if (_source == "desktop/total/number") {
return total;
}
@ -61,35 +61,35 @@ QVariant DesktopSource::data(const QString &source)
}
QVariantMap DesktopSource::initialData(const QString &source) const
QVariantMap DesktopSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
if (source == QString("desktop/current/name")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")] = QString("Current desktop name");
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("desktop/current/number")) {
data[QString("min")] = 0;
data[QString("max")] = 0;
data[QString("name")] = QString("Current desktop number");
data[QString("type")] = QString("integer");
data[QString("units")] = QString("");
} else if (source == QString("desktop/total/name")) {
data[QString("min")] = QStringList();
data[QString("max")] = QStringList();
data[QString("name")] = QString("All desktops by name");
data[QString("type")] = QString("QStringList");
data[QString("units")] = QString("");
} else if (source == QString("desktop/total/number")) {
data[QString("min")] = 0;
data[QString("max")] = 0;
data[QString("name")] = QString("Desktops count");
data[QString("type")] = QString("integer");
data[QString("units")] = QString("");
if (_source == "desktop/current/name") {
data["min"] = "";
data["max"] = "";
data["name"] = "Current desktop name";
data["type"] = "QString";
data["units"] = "";
} else if (_source == "desktop/current/number") {
data["min"] = 0;
data["max"] = 0;
data["name"] = "Current desktop number";
data["type"] = "integer";
data["units"] = "";
} else if (_source == "desktop/total/name") {
data["min"] = QStringList();
data["max"] = QStringList();
data["name"] = "All desktops by name";
data["type"] = "QStringList";
data["units"] = "";
} else if (_source == "desktop/total/number") {
data["min"] = 0;
data["max"] = 0;
data["name"] = "Desktops count";
data["type"] = "integer";
data["units"] = "";
}
return data;
@ -99,10 +99,10 @@ QVariantMap DesktopSource::initialData(const QString &source) const
QStringList DesktopSource::sources() const
{
QStringList sources;
sources.append(QString("desktop/current/name"));
sources.append(QString("desktop/current/number"));
sources.append(QString("desktop/total/name"));
sources.append(QString("desktop/total/number"));
sources.append("desktop/current/name");
sources.append("desktop/current/number");
sources.append("desktop/total/name");
sources.append("desktop/total/number");
return sources;
}

View File

@ -28,10 +28,10 @@ class DesktopSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit DesktopSource(QObject *parent, const QStringList &args);
explicit DesktopSource(QObject *_parent, const QStringList &_args);
virtual ~DesktopSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;
};

View File

@ -25,13 +25,13 @@
#include "awdebug.h"
GPULoadSource::GPULoadSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
GPULoadSource::GPULoadSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 1);
Q_ASSERT(_args.count() == 1);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_device = args.at(0);
m_device = _args.at(0);
m_process = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
@ -54,8 +54,8 @@ GPULoadSource::~GPULoadSource()
QString GPULoadSource::autoGpu()
{
QString gpu = QString("disable");
QFile moduleFile(QString("/proc/modules"));
QString gpu = "disable";
QFile moduleFile("/proc/modules");
if (!moduleFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
qCWarning(LOG_AW) << "Could not open file as text"
<< moduleFile.fileName();
@ -64,38 +64,38 @@ QString GPULoadSource::autoGpu()
QString output = moduleFile.readAll();
moduleFile.close();
if (output.contains(QString("fglrx")))
gpu = QString("ati");
else if (output.contains(QString("nvidia")))
gpu = QString("nvidia");
if (output.contains("fglrx"))
gpu = "ati";
else if (output.contains("nvidia"))
gpu = "nvidia";
qCInfo(LOG_ESM) << "Device" << gpu;
return gpu;
}
QVariant GPULoadSource::data(const QString &source)
QVariant GPULoadSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
if (source == QString("gpu/load"))
if (_source == "gpu/load")
run();
return m_values[source];
return m_values[_source];
}
QVariantMap GPULoadSource::initialData(const QString &source) const
QVariantMap GPULoadSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
if (source == QString("gpu/load")) {
data[QString("min")] = 0.0;
data[QString("max")] = 100.0;
data[QString("name")] = QString("GPU usage");
data[QString("type")] = QString("float");
data[QString("units")] = QString("%");
if (_source == "gpu/load") {
data["min"] = 0.0;
data["max"] = 100.0;
data["name"] = "GPU usage";
data["type"] = "float";
data["units"] = "%";
}
return data;
@ -104,12 +104,11 @@ QVariantMap GPULoadSource::initialData(const QString &source) const
void GPULoadSource::run()
{
if ((m_device != QString("nvidia")) && (m_device != QString("ati")))
if ((m_device != "nvidia") && (m_device != "ati"))
return;
// build cmd
QString cmd = m_device == QString("nvidia")
? QString("nvidia-smi -q -x")
: QString("aticonfig --od-getclocks");
QString cmd = m_device == "nvidia" ? "nvidia-smi -q -x"
: "aticonfig --od-getclocks";
qCInfo(LOG_ESS) << "cmd" << cmd;
m_process->start(cmd);
@ -119,7 +118,7 @@ void GPULoadSource::run()
QStringList GPULoadSource::sources() const
{
QStringList sources;
sources.append(QString("gpu/load"));
sources.append("gpu/load");
return sources;
}
@ -137,24 +136,22 @@ void GPULoadSource::updateValue()
.trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput;
if (m_device == QString("nvidia")) {
for (auto &str : qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
if (!str.contains(QString("<gpu_util>")))
if (m_device == "nvidia") {
for (auto &str : qoutput.split('\n', QString::SkipEmptyParts)) {
if (!str.contains("<gpu_util>"))
continue;
QString load = str.remove(QString("<gpu_util>"))
.remove(QString("</gpu_util>"))
.remove(QChar('%'));
m_values[QString("gpu/load")] = load.toFloat();
auto load
= str.remove("<gpu_util>").remove("</gpu_util>").remove('%');
m_values["gpu/load"] = load.toFloat();
break;
}
} else if (m_device == QString("ati")) {
for (auto &str : qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
if (!str.contains(QString("load")))
} else if (m_device == "ati") {
for (auto &str : qoutput.split('\n', QString::SkipEmptyParts)) {
if (!str.contains("load"))
continue;
QString load
= str.split(QChar(' '), QString::SkipEmptyParts)[3].remove(
QChar('%'));
m_values[QString("gpu/load")] = load.toFloat();
= str.split(' ', QString::SkipEmptyParts)[3].remove('%');
m_values["gpu/load"] = load.toFloat();
break;
}
}

View File

@ -30,11 +30,11 @@ class GPULoadSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit GPULoadSource(QObject *parent, const QStringList &args);
explicit GPULoadSource(QObject *_parent, const QStringList &_args);
virtual ~GPULoadSource();
static QString autoGpu();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run();
QStringList sources() const;

View File

@ -25,14 +25,14 @@
#include "awdebug.h"
GPUTemperatureSource::GPUTemperatureSource(QObject *parent,
const QStringList &args)
: AbstractExtSysMonSource(parent, args)
GPUTemperatureSource::GPUTemperatureSource(QObject *_parent,
const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 1);
Q_ASSERT(_args.count() == 1);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_device = args.at(0);
m_device = _args.at(0);
m_process = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
@ -53,50 +53,28 @@ GPUTemperatureSource::~GPUTemperatureSource()
}
QString GPUTemperatureSource::autoGpu()
QVariant GPUTemperatureSource::data(const QString &_source)
{
QString gpu = QString("disable");
QFile moduleFile(QString("/proc/modules"));
if (!moduleFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
qCWarning(LOG_AW) << "Could not open file as text"
<< moduleFile.fileName();
return gpu;
}
qCDebug(LOG_ESS) << "Source" << _source;
QString output = moduleFile.readAll();
moduleFile.close();
if (output.contains(QString("fglrx")))
gpu = QString("ati");
else if (output.contains(QString("nvidia")))
gpu = QString("nvidia");
qCInfo(LOG_ESM) << "Device" << gpu;
return gpu;
}
QVariant GPUTemperatureSource::data(const QString &source)
{
qCDebug(LOG_ESS) << "Source" << source;
if (source == QString("gpu/temperature"))
if (_source == "gpu/temperature")
run();
return m_values[source];
return m_values[_source];
}
QVariantMap GPUTemperatureSource::initialData(const QString &source) const
QVariantMap GPUTemperatureSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
if (source == QString("gpu/temperature")) {
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")] = QString("GPU temperature");
data[QString("type")] = QString("float");
data[QString("units")] = QString("°C");
if (_source == "gpu/temperature") {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = "GPU temperature";
data["type"] = "float";
data["units"] = "°C";
}
return data;
@ -105,12 +83,11 @@ QVariantMap GPUTemperatureSource::initialData(const QString &source) const
void GPUTemperatureSource::run()
{
if ((m_device != QString("nvidia")) && (m_device != QString("ati")))
if ((m_device != "nvidia") && (m_device != "ati"))
return;
// build cmd
QString cmd = m_device == QString("nvidia")
? QString("nvidia-smi -q -x")
: QString("aticonfig --od-gettemperature");
QString cmd = m_device == "nvidia" ? "nvidia-smi -q -x"
: "aticonfig --od-gettemperature";
qCInfo(LOG_ESS) << "cmd" << cmd;
m_process->start(cmd);
@ -120,7 +97,7 @@ void GPUTemperatureSource::run()
QStringList GPUTemperatureSource::sources() const
{
QStringList sources;
sources.append(QString("gpu/temperature"));
sources.append("gpu/temperature");
return sources;
}
@ -138,21 +115,20 @@ void GPUTemperatureSource::updateValue()
.trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput;
if (m_device == QString("nvidia")) {
for (auto &str : qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
if (!str.contains(QString("<gpu_temp>")))
if (m_device == "nvidia") {
for (auto &str : qoutput.split('\n', QString::SkipEmptyParts)) {
if (!str.contains("<gpu_temp>"))
continue;
QString temp = str.remove(QString("<gpu_temp>"))
.remove(QString("C</gpu_temp>"));
m_values[QString("gpu/temperature")] = temp.toFloat();
QString temp = str.remove("<gpu_temp>").remove("C</gpu_temp>");
m_values["gpu/temperature"] = temp.toFloat();
break;
}
} else if (m_device == QString("ati")) {
for (auto &str : qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
if (!str.contains(QString("Temperature")))
} else if (m_device == "ati") {
for (auto &str : qoutput.split('\n', QString::SkipEmptyParts)) {
if (!str.contains("Temperature"))
continue;
QString temp = str.split(QChar(' '), QString::SkipEmptyParts).at(4);
m_values[QString("gpu/temperature")] = temp.toFloat();
QString temp = str.split(' ', QString::SkipEmptyParts).at(4);
m_values["gpu/temperature"] = temp.toFloat();
break;
}
}

View File

@ -30,11 +30,10 @@ class GPUTemperatureSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit GPUTemperatureSource(QObject *parent, const QStringList &args);
explicit GPUTemperatureSource(QObject *_parent, const QStringList &_args);
virtual ~GPUTemperatureSource();
static QString autoGpu();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run();
QStringList sources() const;

View File

@ -25,17 +25,17 @@
#include "awdebug.h"
HDDTemperatureSource::HDDTemperatureSource(QObject *parent,
const QStringList &args)
: AbstractExtSysMonSource(parent, args)
HDDTemperatureSource::HDDTemperatureSource(QObject *_parent,
const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 2);
Q_ASSERT(_args.count() == 2);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_devices = args.at(0).split(QChar(','), QString::SkipEmptyParts);
m_cmd = args.at(1);
m_devices = _args.at(0).split(',', QString::SkipEmptyParts);
m_cmd = _args.at(1);
m_smartctl = m_cmd.contains(QString("smartctl"));
m_smartctl = m_cmd.contains("smartctl");
qCInfo(LOG_ESS) << "Parse as smartctl" << m_smartctl;
for (auto &device : m_devices) {
@ -65,9 +65,8 @@ HDDTemperatureSource::~HDDTemperatureSource()
QStringList HDDTemperatureSource::allHdd()
{
QStringList allDevices
= QDir(QString("/dev")).entryList(QDir::System, QDir::Name);
QStringList devices = allDevices.filter(QRegExp(QString("^[hms]d[a-z]$")));
QStringList allDevices = QDir("/dev").entryList(QDir::System, QDir::Name);
QStringList devices = allDevices.filter(QRegExp("^[hms]d[a-z]$"));
for (int i = 0; i < devices.count(); i++)
devices[i] = QString("/dev/%1").arg(devices.at(i));
@ -76,11 +75,11 @@ QStringList HDDTemperatureSource::allHdd()
}
QVariant HDDTemperatureSource::data(const QString &source)
QVariant HDDTemperatureSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QString device = source;
QString device = _source;
device.remove("hdd/temperature");
// run cmd
if (m_processes[device]->state() == QProcess::NotRunning)
@ -90,18 +89,18 @@ QVariant HDDTemperatureSource::data(const QString &source)
}
QVariantMap HDDTemperatureSource::initialData(const QString &source) const
QVariantMap HDDTemperatureSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QString device = source;
QString device = _source;
device.remove("hdd/temperature");
QVariantMap data;
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")] = QString("HDD '%1' temperature").arg(device);
data[QString("type")] = QString("float");
data[QString("units")] = QString("°C");
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("HDD '%1' temperature").arg(device);
data["type"] = "float";
data["units"] = "°C";
return data;
}
@ -117,41 +116,40 @@ QStringList HDDTemperatureSource::sources() const
}
void HDDTemperatureSource::updateValue(const QString &device)
void HDDTemperatureSource::updateValue(const QString &_device)
{
qCDebug(LOG_ESS) << "Called with device" << device;
qCDebug(LOG_ESS) << "Called with device" << _device;
qCInfo(LOG_ESS) << "Cmd returns" << m_processes[device]->exitCode();
qCInfo(LOG_ESS) << "Cmd returns" << m_processes[_device]->exitCode();
QString qdebug
= QTextCodec::codecForMib(106)
->toUnicode(m_processes[device]->readAllStandardError())
->toUnicode(m_processes[_device]->readAllStandardError())
.trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput
= QTextCodec::codecForMib(106)
->toUnicode(m_processes[device]->readAllStandardOutput())
->toUnicode(m_processes[_device]->readAllStandardOutput())
.trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput;
// parse
if (m_smartctl) {
QStringList lines = qoutput.split(QChar('\n'), QString::SkipEmptyParts);
QStringList lines = qoutput.split('\n', QString::SkipEmptyParts);
for (auto &str : lines) {
if (!str.startsWith(QString("194")))
if (!str.startsWith("194"))
continue;
if (str.split(QChar(' '), QString::SkipEmptyParts).count() < 9)
if (str.split(' ', QString::SkipEmptyParts).count() < 9)
continue;
m_values[device] = str.split(QChar(' '), QString::SkipEmptyParts)
.at(9)
.toFloat();
m_values[_device]
= str.split(' ', QString::SkipEmptyParts).at(9).toFloat();
break;
}
} else {
QStringList lines = qoutput.split(QChar(':'), QString::SkipEmptyParts);
QStringList lines = qoutput.split(':', QString::SkipEmptyParts);
if (lines.count() >= 3) {
QString temp = lines.at(2);
temp.remove(QChar(0260)).remove(QChar('C'));
m_values[device] = temp.toFloat();
temp.remove(QChar(0260)).remove('C');
m_values[_device] = temp.toFloat();
}
}

View File

@ -30,16 +30,16 @@ class HDDTemperatureSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit HDDTemperatureSource(QObject *parent, const QStringList &args);
explicit HDDTemperatureSource(QObject *_parent, const QStringList &_args);
virtual ~HDDTemperatureSource();
static QStringList allHdd();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;
private slots:
void updateValue(const QString &device);
void updateValue(const QString &_device);
private:
// properties

View File

@ -18,14 +18,18 @@
#include "loadsource.h"
#include <QTime>
#include "awdebug.h"
LoadSource::LoadSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
LoadSource::LoadSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
qsrand(static_cast<uint>(QTime::currentTime().msec()));
}
@ -35,27 +39,25 @@ LoadSource::~LoadSource()
}
QVariant LoadSource::data(const QString &source)
QVariant LoadSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
auto data = source;
data.remove("load/load");
return data.toInt();
return qrand();
}
QVariantMap LoadSource::initialData(const QString &source) const
QVariantMap LoadSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
if (source.startsWith(QString("load/load"))) {
data[QString("min")] = 0;
data[QString("max")] = 0;
data[QString("name")] = QString("Simple sources for load tests");
data[QString("type")] = QString("int");
data[QString("units")] = QString("");
if (_source.startsWith("load/load")) {
data["min"] = 0;
data["max"] = 0;
data["name"] = "Simple sources for load tests";
data["type"] = "int";
data["units"] = "";
}
return data;

View File

@ -28,10 +28,10 @@ class LoadSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit LoadSource(QObject *parent, const QStringList &args);
explicit LoadSource(QObject *_parent, const QStringList &_args);
virtual ~LoadSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;
};

View File

@ -23,10 +23,10 @@
#include "awdebug.h"
NetworkSource::NetworkSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
NetworkSource::NetworkSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
}
@ -37,12 +37,12 @@ NetworkSource::~NetworkSource()
}
QVariant NetworkSource::data(const QString &source)
QVariant NetworkSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
if (source == QString("network/current/name")) {
QString device = QString("lo");
if (_source == "network/current/name") {
QString device = "lo";
QList<QNetworkInterface> rawInterfaceList
= QNetworkInterface::allInterfaces();
qCInfo(LOG_ESS) << "Devices" << rawInterfaceList;
@ -63,17 +63,17 @@ QVariant NetworkSource::data(const QString &source)
}
QVariantMap NetworkSource::initialData(const QString &source) const
QVariantMap NetworkSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
if (source == QString("network/current/name")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")] = QString("Current network device name");
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
if (_source == "network/current/name") {
data["min"] = "";
data["max"] = "";
data["name"] = "Current network device name";
data["type"] = "QString";
data["units"] = "";
}
return data;
@ -83,7 +83,7 @@ QVariantMap NetworkSource::initialData(const QString &source) const
QStringList NetworkSource::sources() const
{
QStringList sources;
sources.append(QString("network/current/name"));
sources.append("network/current/name");
return sources;
}

View File

@ -28,10 +28,10 @@ class NetworkSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit NetworkSource(QObject *parent, const QStringList &args);
explicit NetworkSource(QObject *_parent, const QStringList &_args);
virtual ~NetworkSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;
};

View File

@ -28,17 +28,17 @@
#include "awdebug.h"
PlayerSource::PlayerSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
PlayerSource::PlayerSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 5);
Q_ASSERT(_args.count() == 5);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_player = args.at(0);
m_mpdAddress = args.at(1);
m_mpdPort = args.at(2).toInt();
m_mpris = args.at(3);
m_symbols = args.at(4).toInt();
m_player = _args.at(0);
m_mpdAddress = _args.at(1);
m_mpdPort = _args.at(2).toInt();
m_mpris = _args.at(3);
m_symbols = _args.at(4).toInt();
connect(&m_mpdSocket, SIGNAL(connected()), this,
SLOT(mpdSocketConnected()));
@ -58,13 +58,13 @@ PlayerSource::~PlayerSource()
}
QVariant PlayerSource::data(const QString &source)
QVariant PlayerSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
if (!m_values.contains(source))
if (!m_values.contains(_source))
run();
QVariant value = m_values.take(source);
QVariant value = m_values.take(_source);
return value;
}
@ -72,104 +72,101 @@ QVariant PlayerSource::data(const QString &source)
QString PlayerSource::getAutoMpris() const
{
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(
QDBus::BlockWithGui, QString("ListNames"));
QDBus::BlockWithGui, "ListNames");
if (listServices.arguments().isEmpty())
return QString();
return "";
QStringList arguments = listServices.arguments().first().toStringList();
for (auto &arg : arguments) {
if (!arg.startsWith(QString("org.mpris.MediaPlayer2.")))
if (!arg.startsWith("org.mpris.MediaPlayer2."))
continue;
qCInfo(LOG_ESS) << "Service found" << arg;
QString service = arg;
service.remove(QString("org.mpris.MediaPlayer2."));
service.remove("org.mpris.MediaPlayer2.");
return service;
}
return QString();
return "";
}
QVariantMap PlayerSource::initialData(const QString &source) const
QVariantMap PlayerSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
if (source == QString("player/album")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")] = QString("Current song album");
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("player/salbum")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
if (_source == "player/album") {
data["min"] = "";
data["max"] = "";
data["name"] = "Current song album";
data["type"] = "QString";
data["units"] = "";
} else if (_source == "player/salbum") {
data["min"] = "";
data["max"] = "";
data["name"]
= QString("Current song album (%1 symbols)").arg(m_symbols);
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("player/dalbum")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
= QString("Current song album (%1 symbols, dynamic)")
.arg(m_symbols);
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("player/artist")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")] = QString("Current song artist");
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("player/sartist")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
data["type"] = "QString";
data["units"] = "";
} else if (_source == "player/dalbum") {
data["min"] = "";
data["max"] = "";
data["name"] = QString("Current song album (%1 symbols, dynamic)")
.arg(m_symbols);
data["type"] = "QString";
data["units"] = "";
} else if (_source == "player/artist") {
data["min"] = "";
data["max"] = "";
data["name"] = "Current song artist";
data["type"] = "QString";
data["units"] = "";
} else if (_source == "player/sartist") {
data["min"] = "";
data["max"] = "";
data["name"]
= QString("Current song artist (%1 symbols)").arg(m_symbols);
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("player/dartist")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
= QString("Current song artist (%1 symbols, dynamic)")
.arg(m_symbols);
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("player/duration")) {
data[QString("min")] = 0;
data[QString("max")] = 0;
data[QString("name")] = QString("Current song duration");
data[QString("type")] = QString("integer");
data[QString("units")] = QString("s");
} else if (source == QString("player/progress")) {
data[QString("min")] = 0;
data[QString("max")] = 0;
data[QString("name")] = QString("Current song progress");
data[QString("type")] = QString("integer");
data[QString("units")] = QString("s");
} else if (source == QString("player/title")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")] = QString("Current song title");
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("player/stitle")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
data["type"] = "QString";
data["units"] = "";
} else if (_source == "player/dartist") {
data["min"] = "";
data["max"] = "";
data["name"] = QString("Current song artist (%1 symbols, dynamic)")
.arg(m_symbols);
data["type"] = "QString";
data["units"] = "";
} else if (_source == "player/duration") {
data["min"] = 0;
data["max"] = 0;
data["name"] = "Current song duration";
data["type"] = "integer";
data["units"] = "s";
} else if (_source == "player/progress") {
data["min"] = 0;
data["max"] = 0;
data["name"] = "Current song progress";
data["type"] = "integer";
data["units"] = "s";
} else if (_source == "player/title") {
data["min"] = "";
data["max"] = "";
data["name"] = "Current song title";
data["type"] = "QString";
data["units"] = "";
} else if (_source == "player/stitle") {
data["min"] = "";
data["max"] = "";
data["name"]
= QString("Current song title (%1 symbols)").arg(m_symbols);
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source == QString("player/dtitle")) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
= QString("Current song title (%1 symbols, dynamic)")
.arg(m_symbols);
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
data["type"] = "QString";
data["units"] = "";
} else if (_source == "player/dtitle") {
data["min"] = "";
data["max"] = "";
data["name"] = QString("Current song title (%1 symbols, dynamic)")
.arg(m_symbols);
data["type"] = "QString";
data["units"] = "";
}
return data;
@ -179,14 +176,13 @@ QVariantMap PlayerSource::initialData(const QString &source) const
void PlayerSource::run()
{
// initial data
if (m_player == QString("mpd")) {
if (m_player == "mpd") {
// mpd
m_values = getPlayerMpdInfo();
} else if (m_player == QString("mpris")) {
} else if (m_player == "mpris") {
// players which supports mpris
if (m_dbusMutex.tryLock()) {
QString mpris
= m_mpris == QString("auto") ? getAutoMpris() : m_mpris;
QString mpris = m_mpris == "auto" ? getAutoMpris() : m_mpris;
m_values = getPlayerMprisInfo(mpris);
m_dbusMutex.unlock();
}
@ -194,64 +190,65 @@ void PlayerSource::run()
// dymanic properties
// solid
m_values[QString("player/salbum")]
= stripString(m_values[QString("player/album")].toString(), m_symbols);
m_values[QString("player/sartist")]
= stripString(m_values[QString("player/artist")].toString(), m_symbols);
m_values[QString("player/stitle")]
= stripString(m_values[QString("player/title")].toString(), m_symbols);
m_values["player/salbum"]
= stripString(m_values["player/album"].toString(), m_symbols);
m_values["player/sartist"]
= stripString(m_values["player/artist"].toString(), m_symbols);
m_values["player/stitle"]
= stripString(m_values["player/title"].toString(), m_symbols);
// dynamic
m_values[QString("player/dalbum")]
= buildString(m_values[QString("player/dalbum")].toString(),
m_values[QString("player/album")].toString(), m_symbols);
m_values[QString("player/dartist")]
= buildString(m_values[QString("player/dartist")].toString(),
m_values[QString("player/artist")].toString(), m_symbols);
m_values[QString("player/dtitle")]
= buildString(m_values[QString("player/dtitle")].toString(),
m_values[QString("player/title")].toString(), m_symbols);
m_values["player/dalbum"]
= buildString(m_values["player/dalbum"].toString(),
m_values["player/album"].toString(), m_symbols);
m_values["player/dartist"]
= buildString(m_values["player/dartist"].toString(),
m_values["player/artist"].toString(), m_symbols);
m_values["player/dtitle"]
= buildString(m_values["player/dtitle"].toString(),
m_values["player/title"].toString(), m_symbols);
}
QStringList PlayerSource::sources() const
{
QStringList sources;
sources.append(QString("player/album"));
sources.append(QString("player/dalbum"));
sources.append(QString("player/salbum"));
sources.append(QString("player/artist"));
sources.append(QString("player/dartist"));
sources.append(QString("player/sartist"));
sources.append(QString("player/duration"));
sources.append(QString("player/progress"));
sources.append(QString("player/title"));
sources.append(QString("player/dtitle"));
sources.append(QString("player/stitle"));
sources.append("player/album");
sources.append("player/dalbum");
sources.append("player/salbum");
sources.append("player/artist");
sources.append("player/dartist");
sources.append("player/sartist");
sources.append("player/duration");
sources.append("player/progress");
sources.append("player/title");
sources.append("player/dtitle");
sources.append("player/stitle");
return sources;
}
QString PlayerSource::buildString(const QString &current, const QString &value,
const int s)
QString PlayerSource::buildString(const QString &_current,
const QString &_value, const int _s)
{
qCDebug(LOG_ESS) << "Current value" << current << "received" << value
<< "will be stripped after" << s;
qCDebug(LOG_ESS) << "Current value" << _current << "received" << _value
<< "will be stripped after" << _s;
int index = value.indexOf(current);
if ((current.isEmpty()) || ((index + s + 1) > value.count()))
return QString("%1").arg(value.left(s), -s, QLatin1Char(' '));
int index = _value.indexOf(_current);
if ((_current.isEmpty()) || ((index + _s + 1) > _value.count()))
return QString("%1").arg(_value.left(_s), -_s, QLatin1Char(' '));
else
return QString("%1").arg(value.mid(index + 1, s), -s, QLatin1Char(' '));
return QString("%1").arg(_value.mid(index + 1, _s), -_s,
QLatin1Char(' '));
}
QString PlayerSource::stripString(const QString &value, const int s)
QString PlayerSource::stripString(const QString &_value, const int _s)
{
qCDebug(LOG_ESS) << "New value" << value << "will be stripped after" << s;
qCDebug(LOG_ESS) << "New value" << _value << "will be stripped after" << _s;
return value.count() > s ? QString("%1\u2026").arg(value.left(s - 1))
: value.leftJustified(s, QLatin1Char(' '));
return _value.count() > _s ? QString("%1\u2026").arg(_value.left(_s - 1))
: _value.leftJustified(_s, QLatin1Char(' '));
}
@ -276,20 +273,18 @@ void PlayerSource::mpdSocketReadyRead()
qCInfo(LOG_ESS) << "Output" << qoutput;
// parse
for (auto &str : qoutput.split(QChar('\n'), QString::SkipEmptyParts)) {
if (str.split(QString(": "), QString::SkipEmptyParts).count() == 2) {
for (auto &str : qoutput.split('\n', QString::SkipEmptyParts)) {
if (str.split(": ", QString::SkipEmptyParts).count() == 2) {
// "Metadata: data"
QString metadata = str.split(QString(": "), QString::SkipEmptyParts)
.first()
.toLower();
QString data = str.split(QString(": "), QString::SkipEmptyParts)
.last()
.trimmed();
QString metadata
= str.split(": ", QString::SkipEmptyParts).first().toLower();
QString data
= str.split(": ", QString::SkipEmptyParts).last().trimmed();
// there are one more time...
if ((metadata == QString("time")) && (data.contains(QChar(':')))) {
QStringList times = data.split(QString(":"));
m_mpdCached[QString("player/duration")] = times.at(0).toInt();
m_mpdCached[QString("player/progress")] = times.at(1).toInt();
if ((metadata == "time") && (data.contains(':'))) {
QStringList times = data.split(':');
m_mpdCached["player/duration"] = times.at(0).toInt();
m_mpdCached["player/progress"] = times.at(1).toInt();
} else if (m_metadata.contains(metadata)) {
m_mpdCached[QString("player/%1").arg(metadata)] = data;
}
@ -300,9 +295,9 @@ void PlayerSource::mpdSocketReadyRead()
}
void PlayerSource::mpdSocketWritten(const qint64 bytes)
void PlayerSource::mpdSocketWritten(const qint64 _bytes)
{
qCDebug(LOG_ESS) << "Bytes written" << bytes << "to"
qCDebug(LOG_ESS) << "Bytes written" << _bytes << "to"
<< m_mpdSocket.peerName();
}
@ -310,11 +305,11 @@ void PlayerSource::mpdSocketWritten(const qint64 bytes)
QVariantHash PlayerSource::defaultInfo() const
{
QVariantHash info;
info[QString("player/album")] = QString("unknown");
info[QString("player/artist")] = QString("unknown");
info[QString("player/duration")] = 0;
info[QString("player/progress")] = 0;
info[QString("player/title")] = QString("unknown");
info["player/album"] = "unknown";
info["player/artist"] = "unknown";
info["player/duration"] = 0;
info["player/progress"] = 0;
info["player/title"] = "unknown";
return info;
}
@ -337,12 +332,12 @@ QVariantHash PlayerSource::getPlayerMpdInfo()
}
QVariantHash PlayerSource::getPlayerMprisInfo(const QString &mpris) const
QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris) const
{
qCDebug(LOG_ESS) << "MPRIS" << mpris;
qCDebug(LOG_ESS) << "MPRIS" << _mpris;
QVariantHash info = defaultInfo();
if (mpris.isEmpty())
if (_mpris.isEmpty())
return info;
QDBusConnection bus = QDBusConnection::sessionBus();
@ -354,12 +349,11 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &mpris) const
// dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.vlc
// /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get
// string:'org.mpris.MediaPlayer2.Player' string:'Metadata'
QVariantList args = QVariantList()
<< QString("org.mpris.MediaPlayer2.Player")
<< QString("Metadata");
QVariantList args
= QVariantList({"org.mpris.MediaPlayer2.Player", "Metadata"});
QDBusMessage request = QDBusMessage::createMethodCall(
QString("org.mpris.MediaPlayer2.%1").arg(mpris),
QString("/org/mpris/MediaPlayer2"), QString(""), QString("Get"));
QString("org.mpris.MediaPlayer2.%1").arg(_mpris),
"/org/mpris/MediaPlayer2", "", "Get");
request.setArguments(args);
QDBusMessage response
= bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT);
@ -374,19 +368,16 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &mpris) const
.value<QDBusVariant>()
.variant()
.value<QDBusArgument>());
info[QString("player/album")]
= map.value(QString("xesam:album"), QString("unknown"));
info["player/album"] = map.value("xesam:album", "unknown");
// artist is array
info[QString("player/artist")]
= map.value(QString("xesam:artist"), QString("unknown")).toString();
info[QString("player/duration")]
= map.value(QString("mpris:length"), 0).toInt() / (1000 * 1000);
info[QString("player/title")]
= map.value(QString("xesam:title"), QString("unknown"));
info["player/artist"] = map.value("xesam:artist", "unknown").toString();
info["player/duration"]
= map.value("mpris:length", 0).toInt() / (1000 * 1000);
info["player/title"] = map.value("xesam:title", "unknown");
}
// position
args[1] = QString("Position");
args[1] = "Position";
request.setArguments(args);
response = bus.call(request, QDBus::BlockWithGui);
if ((response.type() != QDBusMessage::ReplyMessage)
@ -394,12 +385,12 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &mpris) const
qCWarning(LOG_ESS) << "Error message" << response.errorMessage();
} else {
// this cast is simpler than the previous one ;)
info[QString("player/progress")] = response.arguments()
.first()
.value<QDBusVariant>()
.variant()
.toLongLong()
/ (1000 * 1000);
info["player/progress"] = response.arguments()
.first()
.value<QDBusVariant>()
.variant()
.toLongLong()
/ (1000 * 1000);
}
return info;

View File

@ -34,29 +34,29 @@ class PlayerSource : public AbstractExtSysMonSource
public:
const char *MPD_STATUS_REQUEST = "currentsong\nstatus\n";
explicit PlayerSource(QObject *parent, const QStringList &args);
explicit PlayerSource(QObject *_parent, const QStringList &_args);
virtual ~PlayerSource();
QVariant data(const QString &source);
QVariant data(const QString &_source);
QString getAutoMpris() const;
QVariantMap initialData(const QString &source) const;
QVariantMap initialData(const QString &_source) const;
void run();
QStringList sources() const;
// additional method to build dynamic tags
static QString buildString(const QString &current, const QString &value,
const int s);
static QString stripString(const QString &value, const int s);
static QString buildString(const QString &_current, const QString &_value,
const int _s);
static QString stripString(const QString &_value, const int _s);
// additional test method
bool isMpdSocketConnected() const;
private slots:
void mpdSocketConnected();
void mpdSocketReadyRead();
void mpdSocketWritten(const qint64 bytes);
void mpdSocketWritten(const qint64 _bytes);
private:
inline QVariantHash defaultInfo() const;
QVariantHash getPlayerMpdInfo();
QVariantHash getPlayerMprisInfo(const QString &mpris) const;
QVariantHash getPlayerMprisInfo(const QString &_mpris) const;
QTcpSocket m_mpdSocket;
// configuration and values
QString m_mpdAddress;
@ -66,9 +66,7 @@ private:
QMutex m_dbusMutex;
QString m_player;
int m_symbols;
QStringList m_metadata = QStringList()
<< QString("album") << QString("artist")
<< QString("title");
QStringList m_metadata = QStringList({"album", "artist", "title"});
QVariantHash m_values;
};

View File

@ -23,10 +23,10 @@
#include "awdebug.h"
ProcessesSource::ProcessesSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
ProcessesSource::ProcessesSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
}
@ -37,40 +37,40 @@ ProcessesSource::~ProcessesSource()
}
QVariant ProcessesSource::data(const QString &source)
QVariant ProcessesSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
if (!m_values.contains(source))
if (!m_values.contains(_source))
run();
QVariant value = m_values.take(source);
QVariant value = m_values.take(_source);
return value;
}
QVariantMap ProcessesSource::initialData(const QString &source) const
QVariantMap ProcessesSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
if (source == QString("ps/running/count")) {
data[QString("min")] = 0;
data[QString("max")] = 0;
data[QString("name")] = QString("Count of running processes");
data[QString("type")] = QString("integer");
data[QString("units")] = QString("");
} else if (source == QString("ps/running/list")) {
data[QString("min")] = QStringList();
data[QString("max")] = QStringList();
data[QString("name")] = QString("All running processes list");
data[QString("type")] = QString("QStringList");
data[QString("units")] = QString("");
} else if (source == QString("ps/total/count")) {
data[QString("min")] = 0;
data[QString("max")] = 0;
data[QString("name")] = QString("Total count of processes");
data[QString("type")] = QString("integer");
data[QString("units")] = QString("");
if (_source == "ps/running/count") {
data["min"] = 0;
data["max"] = 0;
data["name"] = "Count of running processes";
data["type"] = "integer";
data["units"] = "";
} else if (_source == "ps/running/list") {
data["min"] = QStringList();
data["max"] = QStringList();
data["name"] = "All running processes list";
data["type"] = "QStringList";
data["units"] = "";
} else if (_source == "ps/total/count") {
data["min"] = 0;
data["max"] = 0;
data["name"] = "Total count of processes";
data["type"] = "integer";
data["units"] = "";
}
return data;
@ -79,10 +79,9 @@ QVariantMap ProcessesSource::initialData(const QString &source) const
void ProcessesSource::run()
{
QStringList allDirectories
= QDir(QString("/proc"))
.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
QStringList directories = allDirectories.filter(QRegExp(QString("(\\d+)")));
QStringList allDirectories = QDir("/proc").entryList(
QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
QStringList directories = allDirectories.filter(QRegExp("(\\d+)"));
QStringList running;
for (auto &dir : directories) {
@ -94,24 +93,24 @@ void ProcessesSource::run()
continue;
QString output = statusFile.readAll();
if (output.contains(QString("running")))
if (output.contains("running"))
running.append(cmdFile.readAll());
statusFile.close();
cmdFile.close();
}
m_values[QString("ps/running/count")] = running.count();
m_values[QString("ps/running/list")] = running;
m_values[QString("ps/total/count")] = directories.count();
m_values["ps/running/count"] = running.count();
m_values["ps/running/list"] = running;
m_values["ps/total/count"] = directories.count();
}
QStringList ProcessesSource::sources() const
{
QStringList sources;
sources.append(QString("ps/running/count"));
sources.append(QString("ps/running/list"));
sources.append(QString("ps/total/count"));
sources.append("ps/running/count");
sources.append("ps/running/list");
sources.append("ps/total/count");
return sources;
}

View File

@ -28,10 +28,10 @@ class ProcessesSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit ProcessesSource(QObject *parent, const QStringList &args);
explicit ProcessesSource(QObject *_parent, const QStringList &_args);
virtual ~ProcessesSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run();
QStringList sources() const;

View File

@ -22,13 +22,13 @@
#include "extquotes.h"
QuotesSource::QuotesSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
QuotesSource::QuotesSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_extQuotes = new ExtItemAggregator<ExtQuotes>(nullptr, QString("quotes"));
m_extQuotes = new ExtItemAggregator<ExtQuotes>(nullptr, "quotes");
m_extQuotes->initSockets();
m_sources = getSources();
}
@ -42,13 +42,13 @@ QuotesSource::~QuotesSource()
}
QVariant QuotesSource::data(const QString &source)
QVariant QuotesSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
int ind = index(source);
auto service = source;
service.remove(QString("quotes/"));
int ind = index(_source);
auto service = _source;
service.remove("quotes/");
if (!m_values.contains(service)) {
QVariantHash data = m_extQuotes->itemByTagNumber(ind)->run();
for (auto &key : data.keys())
@ -59,84 +59,75 @@ QVariant QuotesSource::data(const QString &source)
}
QVariantMap QuotesSource::initialData(const QString &source) const
QVariantMap QuotesSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
int ind = index(source);
int ind = index(_source);
QVariantMap data;
if (source.startsWith(QString("quotes/askchg"))) {
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")]
= QString("Absolute ask changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("quotes/ask"))) {
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")]
= QString("Ask for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("quotes/percaskchg"))) {
data[QString("min")] = -100.0;
data[QString("max")] = 100.0;
data[QString("name")]
= QString("Ask changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("quotes/bidchg"))) {
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")]
= QString("Absolute bid changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("quotes/bid"))) {
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")]
= QString("Bid for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("quotes/percbidchg"))) {
data[QString("min")] = -100.0;
data[QString("max")] = 100.0;
data[QString("name")]
= QString("Bid changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("quotes/pricechg"))) {
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")]
= QString("Absolute prie changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("quotes/price"))) {
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")]
= QString("Price for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("quotes/percpricechg"))) {
data[QString("min")] = -100.0;
data[QString("max")] = 100.0;
data[QString("name")]
= QString("Price changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("double");
data[QString("units")] = QString("");
if (_source.startsWith("quotes/askchg")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("Absolute ask changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/ask")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("Ask for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/percaskchg")) {
data["min"] = -100.0;
data["max"] = 100.0;
data["name"] = QString("Ask changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/bidchg")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("Absolute bid changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/bid")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("Bid for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/percbidchg")) {
data["min"] = -100.0;
data["max"] = 100.0;
data["name"] = QString("Bid changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/pricechg")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("Absolute prie changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/price")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("Price for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
} else if (_source.startsWith("quotes/percpricechg")) {
data["min"] = -100.0;
data["max"] = 100.0;
data["name"] = QString("Price changes for '%1'")
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double";
data["units"] = "";
}
return data;
@ -153,19 +144,15 @@ QStringList QuotesSource::getSources()
{
QStringList sources;
for (auto &item : m_extQuotes->activeItems()) {
sources.append(QString("quotes/%1").arg(item->tag(QString("ask"))));
sources.append(QString("quotes/%1").arg(item->tag(QString("askchg"))));
sources.append(
QString("quotes/%1").arg(item->tag(QString("percaskchg"))));
sources.append(QString("quotes/%1").arg(item->tag(QString("bid"))));
sources.append(QString("quotes/%1").arg(item->tag(QString("bidchg"))));
sources.append(
QString("quotes/%1").arg(item->tag(QString("percbidchg"))));
sources.append(QString("quotes/%1").arg(item->tag(QString("price"))));
sources.append(
QString("quotes/%1").arg(item->tag(QString("pricechg"))));
sources.append(
QString("quotes/%1").arg(item->tag(QString("percpricechg"))));
sources.append(QString("quotes/%1").arg(item->tag("ask")));
sources.append(QString("quotes/%1").arg(item->tag("askchg")));
sources.append(QString("quotes/%1").arg(item->tag("percaskchg")));
sources.append(QString("quotes/%1").arg(item->tag("bid")));
sources.append(QString("quotes/%1").arg(item->tag("bidchg")));
sources.append(QString("quotes/%1").arg(item->tag("percbidchg")));
sources.append(QString("quotes/%1").arg(item->tag("price")));
sources.append(QString("quotes/%1").arg(item->tag("pricechg")));
sources.append(QString("quotes/%1").arg(item->tag("percpricechg")));
}
return sources;

View File

@ -31,10 +31,10 @@ class QuotesSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit QuotesSource(QObject *parent, const QStringList &args);
explicit QuotesSource(QObject *_parent, const QStringList &_args);
virtual ~QuotesSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;

View File

@ -22,14 +22,14 @@
#include "extnetworkrequest.h"
RequestSource::RequestSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
RequestSource::RequestSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_extNetRequest = new ExtItemAggregator<ExtNetworkRequest>(
nullptr, QString("requests"));
m_extNetRequest
= new ExtItemAggregator<ExtNetworkRequest>(nullptr, "requests");
m_extNetRequest->initSockets();
m_sources = getSources();
}
@ -43,12 +43,12 @@ RequestSource::~RequestSource()
}
QVariant RequestSource::data(const QString &source)
QVariant RequestSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
int ind = index(source);
auto service = source;
int ind = index(_source);
auto service = _source;
service.remove("network/");
if (!m_values.contains(service)) {
QVariantHash data = m_extNetRequest->itemByTagNumber(ind)->run();
@ -60,20 +60,19 @@ QVariant RequestSource::data(const QString &source)
}
QVariantMap RequestSource::initialData(const QString &source) const
QVariantMap RequestSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
int ind = index(source);
int ind = index(_source);
QVariantMap data;
if (source.startsWith(QString("network/response"))) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
= QString("Network response for %1")
.arg(m_extNetRequest->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
if (_source.startsWith("network/response")) {
data["min"] = "";
data["max"] = "";
data["name"] = QString("Network response for %1")
.arg(m_extNetRequest->itemByTagNumber(ind)->uniq());
data["type"] = "QString";
data["units"] = "";
}
return data;
@ -90,8 +89,7 @@ QStringList RequestSource::getSources()
{
QStringList sources;
for (auto &item : m_extNetRequest->activeItems())
sources.append(
QString("network/%1").arg(item->tag(QString("response"))));
sources.append(QString("network/%1").arg(item->tag("response")));
return sources;
}

View File

@ -31,10 +31,10 @@ class RequestSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit RequestSource(QObject *parent, const QStringList &args);
explicit RequestSource(QObject *_parent, const QStringList &_args);
virtual ~RequestSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;

View File

@ -22,14 +22,13 @@
#include "extupgrade.h"
UpgradeSource::UpgradeSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
UpgradeSource::UpgradeSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_extUpgrade
= new ExtItemAggregator<ExtUpgrade>(nullptr, QString("upgrade"));
m_extUpgrade = new ExtItemAggregator<ExtUpgrade>(nullptr, "upgrade");
m_extUpgrade->initSockets();
m_sources = getSources();
}
@ -43,27 +42,30 @@ UpgradeSource::~UpgradeSource()
}
QVariant UpgradeSource::data(const QString &source)
QVariant UpgradeSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
// there are only one value
return m_extUpgrade->itemByTagNumber(index(source))->run().values().first();
return m_extUpgrade->itemByTagNumber(index(_source))
->run()
.values()
.first();
}
QVariantMap UpgradeSource::initialData(const QString &source) const
QVariantMap UpgradeSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
QVariantMap data;
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
data["min"] = "";
data["max"] = "";
data["name"]
= QString("Package manager '%1' metadata")
.arg(m_extUpgrade->itemByTagNumber(index(source))->uniq());
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
.arg(m_extUpgrade->itemByTagNumber(index(_source))->uniq());
data["type"] = "QString";
data["units"] = "";
return data;
}
@ -79,8 +81,7 @@ QStringList UpgradeSource::getSources()
{
QStringList sources;
for (auto &item : m_extUpgrade->activeItems())
sources.append(
QString("upgrade/%1").arg(item->tag(QString("pkgcount"))));
sources.append(QString("upgrade/%1").arg(item->tag("pkgcount")));
return sources;
}

View File

@ -31,10 +31,10 @@ class UpgradeSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit UpgradeSource(QObject *parent, const QStringList &args);
explicit UpgradeSource(QObject *_parent, const QStringList &_args);
virtual ~UpgradeSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;

View File

@ -22,14 +22,13 @@
#include "extweather.h"
WeatherSource::WeatherSource(QObject *parent, const QStringList &args)
: AbstractExtSysMonSource(parent, args)
WeatherSource::WeatherSource(QObject *_parent, const QStringList &_args)
: AbstractExtSysMonSource(_parent, _args)
{
Q_ASSERT(args.count() == 0);
Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_extWeather
= new ExtItemAggregator<ExtWeather>(nullptr, QString("weather"));
m_extWeather = new ExtItemAggregator<ExtWeather>(nullptr, "weather");
m_extWeather->initSockets();
m_sources = getSources();
}
@ -43,12 +42,12 @@ WeatherSource::~WeatherSource()
}
QVariant WeatherSource::data(const QString &source)
QVariant WeatherSource::data(const QString &_source)
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
int ind = index(source);
auto service = source;
int ind = index(_source);
auto service = _source;
service.remove("weather/");
if (!m_values.contains(service)) {
QVariantHash data = m_extWeather->itemByTagNumber(ind)->run();
@ -60,60 +59,54 @@ QVariant WeatherSource::data(const QString &source)
}
QVariantMap WeatherSource::initialData(const QString &source) const
QVariantMap WeatherSource::initialData(const QString &_source) const
{
qCDebug(LOG_ESS) << "Source" << source;
qCDebug(LOG_ESS) << "Source" << _source;
int ind = index(source);
int ind = index(_source);
QVariantMap data;
if (source.startsWith(QString("weather/weatherId"))) {
data[QString("min")] = 0;
data[QString("max")] = 1000;
data[QString("name")]
= QString("Numeric weather ID for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("integer");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("weather/weather"))) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
= QString("ID string map for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
} else if (source.startsWith(QString("weather/humidity"))) {
data[QString("min")] = 0;
data[QString("max")] = 100;
data[QString("name")]
= QString("Humidity for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("integer");
data[QString("units")] = QString("%");
} else if (source.startsWith(QString("weather/pressure"))) {
data[QString("min")] = 0;
data[QString("max")] = 0;
data[QString("name")]
= QString("Atmospheric pressure for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("integer");
data[QString("units")] = QString("mb");
} else if (source.startsWith(QString("weather/temperature"))) {
data[QString("min")] = 0.0;
data[QString("max")] = 0.0;
data[QString("name")]
= QString("Temperature for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("float");
data[QString("units")] = QString("°C");
} else if (source.startsWith(QString("weather/timestamp"))) {
data[QString("min")] = QString("");
data[QString("max")] = QString("");
data[QString("name")]
= QString("Timestamp for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data[QString("type")] = QString("QString");
data[QString("units")] = QString("");
if (_source.startsWith("weather/weatherId")) {
data["min"] = 0;
data["max"] = 1000;
data["name"] = QString("Numeric weather ID for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "integer";
data["units"] = "";
} else if (_source.startsWith("weather/weather")) {
data["min"] = "";
data["max"] = "";
data["name"] = QString("ID string map for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "QString";
data["units"] = "";
} else if (_source.startsWith("weather/humidity")) {
data["min"] = 0;
data["max"] = 100;
data["name"] = QString("Humidity for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "integer";
data["units"] = "%";
} else if (_source.startsWith("weather/pressure")) {
data["min"] = 0;
data["max"] = 0;
data["name"] = QString("Atmospheric pressure for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "integer";
data["units"] = "mb";
} else if (_source.startsWith("weather/temperature")) {
data["min"] = 0.0;
data["max"] = 0.0;
data["name"] = QString("Temperature for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "float";
data["units"] = "°C";
} else if (_source.startsWith("weather/timestamp")) {
data["min"] = "";
data["max"] = "";
data["name"] = QString("Timestamp for '%1'")
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "QString";
data["units"] = "";
}
return data;
@ -130,18 +123,12 @@ QStringList WeatherSource::getSources()
{
QStringList sources;
for (auto &item : m_extWeather->activeItems()) {
sources.append(
QString("weather/%1").arg(item->tag(QString("weatherId"))));
sources.append(
QString("weather/%1").arg(item->tag(QString("weather"))));
sources.append(
QString("weather/%1").arg(item->tag(QString("humidity"))));
sources.append(
QString("weather/%1").arg(item->tag(QString("pressure"))));
sources.append(
QString("weather/%1").arg(item->tag(QString("temperature"))));
sources.append(
QString("weather/%1").arg(item->tag(QString("timestamp"))));
sources.append(QString("weather/%1").arg(item->tag("weatherId")));
sources.append(QString("weather/%1").arg(item->tag("weather")));
sources.append(QString("weather/%1").arg(item->tag("humidity")));
sources.append(QString("weather/%1").arg(item->tag("pressure")));
sources.append(QString("weather/%1").arg(item->tag("temperature")));
sources.append(QString("weather/%1").arg(item->tag("timestamp")));
}
return sources;

View File

@ -31,10 +31,10 @@ class WeatherSource : public AbstractExtSysMonSource
Q_OBJECT
public:
explicit WeatherSource(QObject *parent, const QStringList &args);
explicit WeatherSource(QObject *_parent, const QStringList &_args);
virtual ~WeatherSource();
QVariant data(const QString &source);
QVariantMap initialData(const QString &source) const;
QVariant data(const QString &_source);
QVariantMap initialData(const QString &_source) const;
void run(){};
QStringList sources() const;