mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-04-24 15:37:23 +00:00
do not derive from qwidget in aggregates
This commit is contained in:
parent
33a41bb6c0
commit
67640cccdc
@ -18,6 +18,7 @@
|
|||||||
#include "awdataengineaggregator.h"
|
#include "awdataengineaggregator.h"
|
||||||
|
|
||||||
#include <QDBusConnection>
|
#include <QDBusConnection>
|
||||||
|
#include <ksysguard/formatter/Unit.h>
|
||||||
#include <ksysguard/systemstats/DBusInterface.h>
|
#include <ksysguard/systemstats/DBusInterface.h>
|
||||||
|
|
||||||
#include "awdebug.h"
|
#include "awdebug.h"
|
||||||
@ -33,15 +34,12 @@ AWDataEngineAggregator::AWDataEngineAggregator(QObject *_parent)
|
|||||||
qDBusRegisterMetaType<KSysGuard::SensorDataList>();
|
qDBusRegisterMetaType<KSysGuard::SensorDataList>();
|
||||||
qDBusRegisterMetaType<QHash<QString, KSysGuard::SensorInfo>>();
|
qDBusRegisterMetaType<QHash<QString, KSysGuard::SensorInfo>>();
|
||||||
|
|
||||||
m_interface = new KSysGuard::SystemStats::DBusInterface(
|
m_interface = new KSysGuard::SystemStats::DBusInterface();
|
||||||
KSysGuard::SystemStats::ServiceName, KSysGuard::SystemStats::ObjectPath, QDBusConnection::sessionBus(), this);
|
|
||||||
|
|
||||||
connect(m_interface, SIGNAL(newSensorData(KSysGuard::SensorDataList)), this,
|
connect(m_interface, &KSysGuard::SystemStats::DBusInterface::newSensorData, this, &AWDataEngineAggregator::updateData);
|
||||||
SLOT(updateData(KSysGuard::SensorDataList)));
|
connect(m_interface, &KSysGuard::SystemStats::DBusInterface::sensorMetaDataChanged, this, &AWDataEngineAggregator::updateSensors);
|
||||||
connect(m_interface, SIGNAL(sensorMetaDataChanged(const QHash<QString, KSysGuard::SensorInfo> &)), this,
|
connect(m_interface, &KSysGuard::SystemStats::DBusInterface::sensorAdded, this, &AWDataEngineAggregator::sensorAdded);
|
||||||
SLOT(updateSensors(const QHash<QString, KSysGuard::SensorInfo> &)));
|
connect(m_interface, &KSysGuard::SystemStats::DBusInterface::sensorRemoved, this, &AWDataEngineAggregator::sensorRemoved);
|
||||||
connect(m_interface, SIGNAL(sensorAdded(const QString &)), this, SLOT(sensorAdded(const QString &)));
|
|
||||||
connect(m_interface, SIGNAL(sensorRemoved(const QString &)), this, SLOT(sensorRemoved(const QString &)));
|
|
||||||
|
|
||||||
loadSources();
|
loadSources();
|
||||||
}
|
}
|
||||||
@ -52,6 +50,7 @@ AWDataEngineAggregator::~AWDataEngineAggregator()
|
|||||||
qCDebug(LOG_AW) << __PRETTY_FUNCTION__;
|
qCDebug(LOG_AW) << __PRETTY_FUNCTION__;
|
||||||
|
|
||||||
disconnectSources();
|
disconnectSources();
|
||||||
|
m_interface->deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -61,6 +60,12 @@ void AWDataEngineAggregator::disconnectSources()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool AWDataEngineAggregator::isValidSensor(const KSysGuard::SensorInfo &_sensor)
|
||||||
|
{
|
||||||
|
return _sensor.unit != KSysGuard::UnitInvalid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void AWDataEngineAggregator::loadSources()
|
void AWDataEngineAggregator::loadSources()
|
||||||
{
|
{
|
||||||
auto response = m_interface->allSensors();
|
auto response = m_interface->allSensors();
|
||||||
@ -68,14 +73,12 @@ void AWDataEngineAggregator::loadSources()
|
|||||||
|
|
||||||
auto sensors = response.value();
|
auto sensors = response.value();
|
||||||
updateSensors(sensors);
|
updateSensors(sensors);
|
||||||
for (auto &sensor : sensors.keys())
|
|
||||||
sensorAdded(sensor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AWDataEngineAggregator::reconnectSources(const int interval)
|
void AWDataEngineAggregator::reconnectSources(const int interval)
|
||||||
{
|
{
|
||||||
qCDebug(LOG_AW) << "Reconnect all sources with update interval" << interval;
|
qCDebug(LOG_AW) << "Reconnect all sensors with update interval" << interval;
|
||||||
|
|
||||||
disconnectSources();
|
disconnectSources();
|
||||||
m_interface->subscribe(m_sensors.keys());
|
m_interface->subscribe(m_sensors.keys());
|
||||||
@ -84,7 +87,7 @@ void AWDataEngineAggregator::reconnectSources(const int interval)
|
|||||||
|
|
||||||
void AWDataEngineAggregator::dropSource(const QString &_source)
|
void AWDataEngineAggregator::dropSource(const QString &_source)
|
||||||
{
|
{
|
||||||
qCDebug(LOG_AW) << "Disconnect source" << _source;
|
qCDebug(LOG_AW) << "Disconnect sensor" << _source;
|
||||||
|
|
||||||
m_interface->unsubscribe({_source});
|
m_interface->unsubscribe({_source});
|
||||||
}
|
}
|
||||||
@ -94,6 +97,15 @@ void AWDataEngineAggregator::sensorAdded(const QString &_sensor)
|
|||||||
{
|
{
|
||||||
qCDebug(LOG_AW) << "New sensor added" << _sensor;
|
qCDebug(LOG_AW) << "New sensor added" << _sensor;
|
||||||
|
|
||||||
|
// check if sensor is actually valid
|
||||||
|
auto response = m_interface->sensors({_sensor});
|
||||||
|
response.waitForFinished();
|
||||||
|
auto info = response.value();
|
||||||
|
if (info.count() != 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
qCWarning(LOG_AW) << info.keys();
|
||||||
|
|
||||||
m_interface->subscribe({_sensor});
|
m_interface->subscribe({_sensor});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,6 +126,9 @@ void AWDataEngineAggregator::updateData(KSysGuard::SensorDataList _data)
|
|||||||
|
|
||||||
void AWDataEngineAggregator::updateSensors(const QHash<QString, KSysGuard::SensorInfo> &_sensors)
|
void AWDataEngineAggregator::updateSensors(const QHash<QString, KSysGuard::SensorInfo> &_sensors)
|
||||||
{
|
{
|
||||||
for (auto sensor = _sensors.cbegin(); sensor != _sensors.cend(); ++sensor)
|
for (auto sensor = _sensors.cbegin(); sensor != _sensors.cend(); ++sensor) {
|
||||||
|
if (!isValidSensor(sensor.value()))
|
||||||
|
continue;
|
||||||
m_sensors.insert(sensor.key(), sensor.value());
|
m_sensors.insert(sensor.key(), sensor.value());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ public:
|
|||||||
explicit AWDataEngineAggregator(QObject *_parent = nullptr);
|
explicit AWDataEngineAggregator(QObject *_parent = nullptr);
|
||||||
~AWDataEngineAggregator() override;
|
~AWDataEngineAggregator() override;
|
||||||
void disconnectSources();
|
void disconnectSources();
|
||||||
|
[[nodiscard]] bool isValidSensor(const KSysGuard::SensorInfo &_sensor);
|
||||||
void loadSources();
|
void loadSources();
|
||||||
void reconnectSources(const int interval);
|
void reconnectSources(const int interval);
|
||||||
|
|
||||||
|
@ -92,14 +92,14 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
|
|||||||
auto netRegExp = QRegularExpression("^network/.*/(download|upload)$");
|
auto netRegExp = QRegularExpression("^network/.*/(download|upload)$");
|
||||||
auto netTotalRegExp = QRegularExpression("^network/.*/(totalDownload|totalUpload)$");
|
auto netTotalRegExp = QRegularExpression("^network/.*/(totalDownload|totalUpload)$");
|
||||||
|
|
||||||
if (_source == "battery/ac") {
|
if (_source == "extsysmon/battery/ac") {
|
||||||
// AC
|
// AC
|
||||||
m_map.insert(_source, "ac");
|
m_map.insert(_source, "ac");
|
||||||
m_formatter["ac"] = AWKeysAggregator::FormatterType::ACFormat;
|
m_formatter["ac"] = AWKeysAggregator::FormatterType::ACFormat;
|
||||||
} else if (_source.startsWith("battery/")) {
|
} else if (_source.startsWith("extsysmon/battery/")) {
|
||||||
// battery stats
|
// battery stats
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("battery/");
|
key.remove("extsysmon/battery/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = _source.contains("rate") ? AWKeysAggregator::FormatterType::Float
|
m_formatter[key] = _source.contains("rate") ? AWKeysAggregator::FormatterType::Float
|
||||||
: AWKeysAggregator::FormatterType::IntegerThree;
|
: AWKeysAggregator::FormatterType::IntegerThree;
|
||||||
@ -124,21 +124,21 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
|
|||||||
key = QString("cpucl%1").arg(key);
|
key = QString("cpucl%1").arg(key);
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::Integer;
|
m_formatter[key] = AWKeysAggregator::FormatterType::Integer;
|
||||||
} else if (_source.startsWith("custom")) {
|
} else if (_source.startsWith("extsysmon/custom")) {
|
||||||
// custom
|
// custom
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("custom/");
|
key.remove("extsysmon/custom/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source == "desktop/current/name") {
|
} else if (_source == "extsysmon/desktop/current/name") {
|
||||||
// current desktop name
|
// current desktop name
|
||||||
m_map.insert(_source, "desktop");
|
m_map.insert(_source, "desktop");
|
||||||
m_formatter["desktop"] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter["desktop"] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source == "desktop/current/number") {
|
} else if (_source == "extsysmon/desktop/current/number") {
|
||||||
// current desktop number
|
// current desktop number
|
||||||
m_map.insert(_source, "ndesktop");
|
m_map.insert(_source, "ndesktop");
|
||||||
m_formatter["ndesktop"] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter["ndesktop"] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source == "desktop/total/number") {
|
} else if (_source == "extsysmon/desktop/total/number") {
|
||||||
// desktop count
|
// desktop count
|
||||||
m_map.insert(_source, "tdesktops");
|
m_map.insert(_source, "tdesktops");
|
||||||
m_formatter["tdesktops"] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter["tdesktops"] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
@ -162,11 +162,11 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
|
|||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::Integer;
|
m_formatter[key] = AWKeysAggregator::FormatterType::Integer;
|
||||||
}
|
}
|
||||||
} else if (_source == "gpu/load") {
|
} else if (_source == "extsysmon/gpuload/load") {
|
||||||
// gpu load
|
// gpu load
|
||||||
m_map.insert(_source, "gpu");
|
m_map.insert(_source, "gpu");
|
||||||
m_formatter["gpu"] = AWKeysAggregator::FormatterType::Float;
|
m_formatter["gpu"] = AWKeysAggregator::FormatterType::Float;
|
||||||
} else if (_source == "gpu/temperature") {
|
} else if (_source == "extsysmon/gputemp/temperature") {
|
||||||
// gpu temperature
|
// gpu temperature
|
||||||
m_map.insert(_source, "gputemp");
|
m_map.insert(_source, "gputemp");
|
||||||
m_formatter["gputemp"] = AWKeysAggregator::FormatterType::Temperature;
|
m_formatter["gputemp"] = AWKeysAggregator::FormatterType::Temperature;
|
||||||
@ -213,7 +213,7 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
|
|||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::MemGBFormat;
|
m_formatter[key] = AWKeysAggregator::FormatterType::MemGBFormat;
|
||||||
}
|
}
|
||||||
} else if (_source.startsWith("hdd/temperature")) {
|
} else if (_source.startsWith("extsysmon/hdd/temperature")) {
|
||||||
// hdd temperature
|
// hdd temperature
|
||||||
QString device = _source;
|
QString device = _source;
|
||||||
device.remove("hdd/temperature");
|
device.remove("hdd/temperature");
|
||||||
@ -254,18 +254,18 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
|
|||||||
// gb
|
// gb
|
||||||
m_map.insert(_source, "memusedgb");
|
m_map.insert(_source, "memusedgb");
|
||||||
m_formatter["memusedgb"] = AWKeysAggregator::FormatterType::MemGBFormat;
|
m_formatter["memusedgb"] = AWKeysAggregator::FormatterType::MemGBFormat;
|
||||||
} else if (_source == "network/current/name") {
|
} else if (_source == "extsysmon/network/device") {
|
||||||
// network device
|
// network device
|
||||||
m_map.insert(_source, "netdev");
|
m_map.insert(_source, "netdev");
|
||||||
m_formatter["netdev"] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter["netdev"] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source == "network/current/ssid") {
|
} else if (_source == "extsysmon/network/ssid") {
|
||||||
// current ssid
|
// current ssid
|
||||||
m_map.insert(_source, "ssid");
|
m_map.insert(_source, "ssid");
|
||||||
m_formatter["ssid"] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter["ssid"] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source.startsWith("network/response")) {
|
} else if (_source.startsWith("extsysmon/requests/response")) {
|
||||||
// network response
|
// network response
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("network/");
|
key.remove("extsysmon/requests/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source.contains(netRegExp)) {
|
} else if (_source.contains(netRegExp)) {
|
||||||
@ -300,34 +300,34 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
|
|||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::MemMBFormat;
|
m_formatter[key] = AWKeysAggregator::FormatterType::MemMBFormat;
|
||||||
}
|
}
|
||||||
} else if (_source.startsWith("upgrade")) {
|
} else if (_source.startsWith("extsysmon/upgrade")) {
|
||||||
// package manager
|
// package manager
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("upgrade/");
|
key.remove("extsysmon/upgrade/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::IntegerThree;
|
m_formatter[key] = AWKeysAggregator::FormatterType::IntegerThree;
|
||||||
} else if (_source.startsWith("player")) {
|
} else if (_source.startsWith("extsysmon/player")) {
|
||||||
// player
|
// player
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("player/");
|
key.remove("extsysmon/player/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source == "ps/running/count") {
|
} else if (_source == "extsysmon/ps/running/count") {
|
||||||
// running processes count
|
// running processes count
|
||||||
m_map.insert(_source, "pscount");
|
m_map.insert(_source, "pscount");
|
||||||
m_formatter["pscount"] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter["pscount"] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source == "ps/running/list") {
|
} else if (_source == "extsysmon/ps/running/list") {
|
||||||
// list of running processes
|
// list of running processes
|
||||||
m_map.insert(_source, "ps");
|
m_map.insert(_source, "ps");
|
||||||
m_formatter["ps"] = AWKeysAggregator::FormatterType::List;
|
m_formatter["ps"] = AWKeysAggregator::FormatterType::List;
|
||||||
} else if (_source == "ps/total/count") {
|
} else if (_source == "extsysmon/ps/total/count") {
|
||||||
// total processes count
|
// total processes count
|
||||||
m_map.insert(_source, "pstot");
|
m_map.insert(_source, "pstot");
|
||||||
m_formatter["pstot"] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter["pstot"] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source.startsWith("quotes")) {
|
} else if (_source.startsWith("extsysmon/quotes")) {
|
||||||
// quotes
|
// quotes
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("quotes/");
|
key.remove("extsysmon/quotes/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::Quotes;
|
m_formatter[key] = AWKeysAggregator::FormatterType::Quotes;
|
||||||
} else if (_source == "memory/swap/free") {
|
} else if (_source == "memory/swap/free") {
|
||||||
@ -377,35 +377,35 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const KSy
|
|||||||
// timestamp
|
// timestamp
|
||||||
m_map.insert(_source, "tstime");
|
m_map.insert(_source, "tstime");
|
||||||
m_formatter["tstime"] = AWKeysAggregator::FormatterType::Timestamp;
|
m_formatter["tstime"] = AWKeysAggregator::FormatterType::Timestamp;
|
||||||
} else if (_source == "system/brightness") {
|
} else if (_source == "extsysmon/system/brightness") {
|
||||||
m_map.insert(_source, "brightness");
|
m_map.insert(_source, "brightness");
|
||||||
m_formatter["brightness"] = AWKeysAggregator::FormatterType::IntegerThree;
|
m_formatter["brightness"] = AWKeysAggregator::FormatterType::IntegerThree;
|
||||||
} else if (_source == "system/volume") {
|
} else if (_source == "extsysmon/system/volume") {
|
||||||
m_map.insert(_source, "volume");
|
m_map.insert(_source, "volume");
|
||||||
m_formatter["volume"] = AWKeysAggregator::FormatterType::IntegerThree;
|
m_formatter["volume"] = AWKeysAggregator::FormatterType::IntegerThree;
|
||||||
} else if (_source == "system/uptime") {
|
} else if (_source == "os/system/uptime") {
|
||||||
// uptime
|
// uptime
|
||||||
m_map.insert(_source, "uptime");
|
m_map.insert(_source, "uptime");
|
||||||
m_formatter["uptime"] = AWKeysAggregator::FormatterType::Uptime;
|
m_formatter["uptime"] = AWKeysAggregator::FormatterType::Uptime;
|
||||||
// custom uptime
|
// custom uptime
|
||||||
m_map.insert(_source, "cuptime");
|
m_map.insert(_source, "cuptime");
|
||||||
m_formatter["cuptime"] = AWKeysAggregator::FormatterType::UptimeCustom;
|
m_formatter["cuptime"] = AWKeysAggregator::FormatterType::UptimeCustom;
|
||||||
} else if (_source.startsWith("weather/temperature")) {
|
} else if (_source.startsWith("extsysmon/weather/temperature")) {
|
||||||
// temperature
|
// temperature
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("weather/");
|
key.remove("extsysmon/weather/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::Temperature;
|
m_formatter[key] = AWKeysAggregator::FormatterType::Temperature;
|
||||||
} else if (_source.startsWith("weather/")) {
|
} else if (_source.startsWith("extsysmon/weather/")) {
|
||||||
// other weather
|
// other weather
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("weather/");
|
key.remove("extsysmon/weather/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
|
m_formatter[key] = AWKeysAggregator::FormatterType::NoFormat;
|
||||||
} else if (_source.startsWith("load/load")) {
|
} else if (_source.startsWith("extsysmon/load/load")) {
|
||||||
// load source
|
// load source
|
||||||
QString key = _source;
|
QString key = _source;
|
||||||
key.remove("load/");
|
key.remove("extsysmon/load/");
|
||||||
m_map.insert(_source, key);
|
m_map.insert(_source, key);
|
||||||
m_formatter[key] = AWKeysAggregator::FormatterType::Temperature;
|
m_formatter[key] = AWKeysAggregator::FormatterType::Temperature;
|
||||||
}
|
}
|
||||||
|
@ -114,8 +114,7 @@ QStringList AWFormatterHelper::rightKeys()
|
|||||||
|
|
||||||
void AWFormatterHelper::editItems()
|
void AWFormatterHelper::editItems()
|
||||||
{
|
{
|
||||||
repaintList();
|
auto ret = exec();
|
||||||
int ret = exec();
|
|
||||||
qCInfo(LOG_AW) << "Dialog returns" << ret;
|
qCInfo(LOG_AW) << "Dialog returns" << ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,20 +199,20 @@ QPair<QString, AWAbstractFormatter::FormatterClass> AWFormatterHelper::readMetad
|
|||||||
|
|
||||||
QSettings settings(_filePath, QSettings::IniFormat);
|
QSettings settings(_filePath, QSettings::IniFormat);
|
||||||
settings.beginGroup("Desktop Entry");
|
settings.beginGroup("Desktop Entry");
|
||||||
QString name = settings.value("Name", _filePath).toString();
|
auto name = settings.value("Name", _filePath).toString();
|
||||||
QString type = settings.value("X-AW-Type", "NoFormat").toString();
|
auto type = settings.value("X-AW-Type", "NoFormat").toString();
|
||||||
AWAbstractFormatter::FormatterClass formatter = defineFormatterClass(type);
|
auto formatter = defineFormatterClass(type);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
return QPair<QString, AWAbstractFormatter::FormatterClass>(name, formatter);
|
return QPair<QString, AWAbstractFormatter::FormatterClass>(name, formatter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AWFormatterHelper::doCreateItem()
|
void AWFormatterHelper::doCreateItem(QListWidget *_widget)
|
||||||
{
|
{
|
||||||
QStringList selection = {"NoFormat", "DateTime", "Float", "List", "Script", "String", "Json"};
|
QStringList selection = {"NoFormat", "DateTime", "Float", "List", "Script", "String", "Json"};
|
||||||
bool ok;
|
bool ok;
|
||||||
QString select = QInputDialog::getItem(this, i18n("Select type"), i18n("Type:"), selection, 0, false, &ok);
|
auto select = QInputDialog::getItem(nullptr, i18n("Select type"), i18n("Type:"), selection, 0, false, &ok);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
qCWarning(LOG_AW) << "No type selected";
|
qCWarning(LOG_AW) << "No type selected";
|
||||||
return;
|
return;
|
||||||
@ -223,18 +222,18 @@ void AWFormatterHelper::doCreateItem()
|
|||||||
AWAbstractFormatter::FormatterClass formatter = defineFormatterClass(select);
|
AWAbstractFormatter::FormatterClass formatter = defineFormatterClass(select);
|
||||||
switch (formatter) {
|
switch (formatter) {
|
||||||
case AWAbstractFormatter::FormatterClass::DateTime:
|
case AWAbstractFormatter::FormatterClass::DateTime:
|
||||||
return createItem<AWDateTimeFormatter>();
|
return createItem<AWDateTimeFormatter>(_widget);
|
||||||
case AWAbstractFormatter::FormatterClass::Float:
|
case AWAbstractFormatter::FormatterClass::Float:
|
||||||
return createItem<AWFloatFormatter>();
|
return createItem<AWFloatFormatter>(_widget);
|
||||||
case AWAbstractFormatter::FormatterClass::List:
|
case AWAbstractFormatter::FormatterClass::List:
|
||||||
return createItem<AWListFormatter>();
|
return createItem<AWListFormatter>(_widget);
|
||||||
case AWAbstractFormatter::FormatterClass::Script:
|
case AWAbstractFormatter::FormatterClass::Script:
|
||||||
return createItem<AWScriptFormatter>();
|
return createItem<AWScriptFormatter>(_widget);
|
||||||
case AWAbstractFormatter::FormatterClass::String:
|
case AWAbstractFormatter::FormatterClass::String:
|
||||||
return createItem<AWStringFormatter>();
|
return createItem<AWStringFormatter>(_widget);
|
||||||
case AWAbstractFormatter::FormatterClass::Json:
|
case AWAbstractFormatter::FormatterClass::Json:
|
||||||
return createItem<AWJsonFormatter>();
|
return createItem<AWJsonFormatter>(_widget);
|
||||||
case AWAbstractFormatter::FormatterClass::NoFormat:
|
case AWAbstractFormatter::FormatterClass::NoFormat:
|
||||||
return createItem<AWNoFormatter>();
|
return createItem<AWNoFormatter>(_widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ private:
|
|||||||
void initFormatters();
|
void initFormatters();
|
||||||
[[nodiscard]] static QPair<QString, AWAbstractFormatter::FormatterClass> readMetadata(const QString &_filePath);
|
[[nodiscard]] static QPair<QString, AWAbstractFormatter::FormatterClass> readMetadata(const QString &_filePath);
|
||||||
// parent methods
|
// parent methods
|
||||||
void doCreateItem() override;
|
void doCreateItem(QListWidget *_widget) override;
|
||||||
// properties
|
// properties
|
||||||
QHash<QString, AWAbstractFormatter *> m_formatters;
|
QHash<QString, AWAbstractFormatter *> m_formatters;
|
||||||
QHash<QString, AWAbstractFormatter *> m_formattersClasses;
|
QHash<QString, AWAbstractFormatter *> m_formattersClasses;
|
||||||
|
@ -56,21 +56,16 @@ AWKeys::AWKeys(QObject *_parent)
|
|||||||
createDBusInterface();
|
createDBusInterface();
|
||||||
|
|
||||||
// update key data if required
|
// update key data if required
|
||||||
connect(m_keyOperator, SIGNAL(updateKeys(const QStringList &)), this, SLOT(reinitKeys(const QStringList &)));
|
connect(m_keyOperator, &AWKeyOperations::updateKeys, this, &AWKeys::reinitKeys);
|
||||||
connect(m_timer, SIGNAL(timeout()), this, SLOT(updateTextData()));
|
connect(m_timer, &QTimer::timeout, this, &AWKeys::updateTextData);
|
||||||
|
|
||||||
// transfer signal from AWDataAggregator object to QML ui
|
// transfer signal from AWDataAggregator object to QML ui
|
||||||
connect(m_dataAggregator, SIGNAL(toolTipPainted(const QString &)), this,
|
connect(m_dataAggregator, &AWDataAggregator::toolTipPainted, [this](const QString &_tooltip) { emit(needToolTipToBeUpdated(_tooltip)); });
|
||||||
SIGNAL(needToolTipToBeUpdated(const QString &)));
|
|
||||||
|
|
||||||
connect(this, SIGNAL(dropSourceFromDataengine(const QString &)), m_dataEngineAggregator,
|
connect(this, &AWKeys::dropSourceFromDataengine, m_dataEngineAggregator, &AWDataEngineAggregator::dropSource);
|
||||||
SLOT(dropSource(const QString &)));
|
connect(m_dataEngineAggregator, &AWDataEngineAggregator::dataUpdated, this, &AWKeys::dataUpdated);
|
||||||
connect(m_dataEngineAggregator,
|
|
||||||
SIGNAL(dataUpdated(const QHash<QString, KSysGuard::SensorInfo> &, const KSysGuard::SensorDataList &)), this,
|
|
||||||
SLOT(dataUpdated(const QHash<QString, KSysGuard::SensorInfo> &, const KSysGuard::SensorDataList &)));
|
|
||||||
// transfer signal from dataengine to update source list
|
// transfer signal from dataengine to update source list
|
||||||
connect(m_dataEngineAggregator, SIGNAL(deviceAdded(const QString &)), m_keyOperator,
|
connect(m_dataEngineAggregator, &AWDataEngineAggregator::deviceAdded, m_keyOperator, &AWKeyOperations::addDevice);
|
||||||
SLOT(addDevice(const QString &)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -373,7 +368,7 @@ void AWKeys::setDataBySource(const QString &_source, const KSysGuard::SensorInfo
|
|||||||
|
|
||||||
// update data or drop source if there are no matches and exit
|
// update data or drop source if there are no matches and exit
|
||||||
if (tags.isEmpty()) {
|
if (tags.isEmpty()) {
|
||||||
qCInfo(LOG_AW) << "Source" << _source << "not found";
|
qCInfo(LOG_AW) << "Sensor" << _source << "not found";
|
||||||
return emit(dropSourceFromDataengine(_source));
|
return emit(dropSourceFromDataengine(_source));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,46 +26,28 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
|
||||||
AbstractExtItemAggregator::AbstractExtItemAggregator(QWidget *_parent, QString _type)
|
AbstractExtItemAggregator::AbstractExtItemAggregator(QObject *_parent, QString _type)
|
||||||
: QDialog(_parent)
|
: QObject(_parent)
|
||||||
, ui(new Ui::AbstractExtItemAggregator)
|
|
||||||
, m_type(std::move(_type))
|
, m_type(std::move(_type))
|
||||||
{
|
{
|
||||||
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
|
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
|
||||||
|
|
||||||
// create directory at $HOME
|
// create directory at $HOME
|
||||||
auto localDir = QString("%1/awesomewidgets/%2")
|
auto localDir = QString("%1/awesomewidgets/%2")
|
||||||
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), type());
|
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), type());
|
||||||
QDir localDirectory;
|
QDir localDirectory;
|
||||||
if (localDirectory.mkpath(localDir))
|
if (localDirectory.mkpath(localDir))
|
||||||
qCInfo(LOG_LIB) << "Created directory" << localDir;
|
qCInfo(LOG_LIB) << "Created directory" << localDir;
|
||||||
|
|
||||||
ui->setupUi(this);
|
|
||||||
copyButton = ui->buttonBox->addButton(i18n("Copy"), QDialogButtonBox::ActionRole);
|
|
||||||
createButton = ui->buttonBox->addButton(i18n("Create"), QDialogButtonBox::ActionRole);
|
|
||||||
deleteButton = ui->buttonBox->addButton(i18n("Remove"), QDialogButtonBox::ActionRole);
|
|
||||||
|
|
||||||
connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(editItemButtonPressed(QAbstractButton *)));
|
|
||||||
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
|
|
||||||
connect(ui->listWidget, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editItemActivated(QListWidgetItem *)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
AbstractExtItemAggregator::~AbstractExtItemAggregator()
|
void AbstractExtItemAggregator::copyItem(QListWidget *_widget)
|
||||||
{
|
{
|
||||||
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
|
auto source = itemFromWidget(_widget);
|
||||||
|
|
||||||
delete ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void AbstractExtItemAggregator::copyItem()
|
|
||||||
{
|
|
||||||
auto source = itemFromWidget();
|
|
||||||
auto fileName = getName();
|
auto fileName = getName();
|
||||||
auto number = uniqNumber();
|
auto number = uniqNumber();
|
||||||
auto dir = QString("%1/awesomewidgets/%2")
|
auto dir = QString("%1/awesomewidgets/%2")
|
||||||
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), m_type);
|
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), m_type);
|
||||||
if ((!source) || (fileName.isEmpty())) {
|
if ((!source) || (fileName.isEmpty())) {
|
||||||
qCWarning(LOG_LIB) << "Nothing to copy";
|
qCWarning(LOG_LIB) << "Nothing to copy";
|
||||||
return;
|
return;
|
||||||
@ -73,16 +55,16 @@ void AbstractExtItemAggregator::copyItem()
|
|||||||
auto filePath = QString("%1/%2").arg(dir, fileName);
|
auto filePath = QString("%1/%2").arg(dir, fileName);
|
||||||
|
|
||||||
auto newItem = source->copy(filePath, number);
|
auto newItem = source->copy(filePath, number);
|
||||||
if (newItem->showConfiguration(this, configArgs()) == 1) {
|
if (newItem->showConfiguration(nullptr, configArgs()) == 1) {
|
||||||
initItems();
|
initItems();
|
||||||
repaintList();
|
repaintList(_widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AbstractExtItemAggregator::deleteItem()
|
void AbstractExtItemAggregator::deleteItem(QListWidget *_widget)
|
||||||
{
|
{
|
||||||
auto source = itemFromWidget();
|
auto source = itemFromWidget(_widget);
|
||||||
if (!source) {
|
if (!source) {
|
||||||
qCWarning(LOG_LIB) << "Nothing to delete";
|
qCWarning(LOG_LIB) << "Nothing to delete";
|
||||||
return;
|
return;
|
||||||
@ -90,30 +72,63 @@ void AbstractExtItemAggregator::deleteItem()
|
|||||||
|
|
||||||
if (source->tryDelete()) {
|
if (source->tryDelete()) {
|
||||||
initItems();
|
initItems();
|
||||||
repaintList();
|
repaintList(_widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AbstractExtItemAggregator::editItem()
|
void AbstractExtItemAggregator::editItem(QListWidget *_widget)
|
||||||
{
|
{
|
||||||
auto source = itemFromWidget();
|
auto source = itemFromWidget(_widget);
|
||||||
if (!source) {
|
if (!source) {
|
||||||
qCWarning(LOG_LIB) << "Nothing to edit";
|
qCWarning(LOG_LIB) << "Nothing to edit";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (source->showConfiguration(this, configArgs()) == 1) {
|
if (source->showConfiguration(nullptr, configArgs()) == 1) {
|
||||||
initItems();
|
initItems();
|
||||||
repaintList();
|
repaintList(_widget);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int AbstractExtItemAggregator::exec()
|
||||||
|
{
|
||||||
|
auto dialog = new QDialog();
|
||||||
|
auto ui = new Ui::AbstractExtItemAggregator();
|
||||||
|
ui->setupUi(dialog);
|
||||||
|
|
||||||
|
auto copyButton = ui->buttonBox->addButton(i18n("Copy"), QDialogButtonBox::ActionRole);
|
||||||
|
auto createButton = ui->buttonBox->addButton(i18n("Create"), QDialogButtonBox::ActionRole);
|
||||||
|
auto deleteButton = ui->buttonBox->addButton(i18n("Remove"), QDialogButtonBox::ActionRole);
|
||||||
|
|
||||||
|
connect(ui->buttonBox, &QDialogButtonBox::clicked, [&](QAbstractButton *_button) {
|
||||||
|
if (dynamic_cast<QPushButton *>(_button) == copyButton)
|
||||||
|
copyItem(ui->listWidget);
|
||||||
|
else if (dynamic_cast<QPushButton *>(_button) == createButton)
|
||||||
|
doCreateItem(ui->listWidget);
|
||||||
|
else if (dynamic_cast<QPushButton *>(_button) == deleteButton)
|
||||||
|
deleteItem(ui->listWidget);
|
||||||
|
else if (ui->buttonBox->buttonRole(_button) == QDialogButtonBox::AcceptRole)
|
||||||
|
editItem(ui->listWidget);
|
||||||
|
});
|
||||||
|
connect(ui->buttonBox, &QDialogButtonBox::rejected, [dialog]() { dialog->reject(); });
|
||||||
|
connect(ui->listWidget, &QListWidget::itemActivated, [&](QListWidgetItem *) { editItem(ui->listWidget); });
|
||||||
|
|
||||||
|
repaintList(ui->listWidget);
|
||||||
|
auto ret = dialog->exec();
|
||||||
|
|
||||||
|
dialog->deleteLater();
|
||||||
|
delete ui;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString AbstractExtItemAggregator::getName()
|
QString AbstractExtItemAggregator::getName()
|
||||||
{
|
{
|
||||||
bool ok;
|
bool ok;
|
||||||
auto name = QInputDialog::getText(this, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, "", &ok);
|
auto name = QInputDialog::getText(nullptr, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, "", &ok);
|
||||||
if ((!ok) || (name.isEmpty()))
|
if ((!ok) || (name.isEmpty()))
|
||||||
return "";
|
return "";
|
||||||
if (!name.endsWith(".desktop"))
|
if (!name.endsWith(".desktop"))
|
||||||
@ -123,9 +138,9 @@ QString AbstractExtItemAggregator::getName()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
AbstractExtItem *AbstractExtItemAggregator::itemFromWidget() const
|
AbstractExtItem *AbstractExtItemAggregator::itemFromWidget(QListWidget *_widget) const
|
||||||
{
|
{
|
||||||
auto widgetItem = ui->listWidget->currentItem();
|
auto widgetItem = _widget->currentItem();
|
||||||
if (!widgetItem)
|
if (!widgetItem)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
@ -144,18 +159,18 @@ AbstractExtItem *AbstractExtItemAggregator::itemFromWidget() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AbstractExtItemAggregator::repaintList() const
|
void AbstractExtItemAggregator::repaintList(QListWidget *_widget) const
|
||||||
{
|
{
|
||||||
ui->listWidget->clear();
|
_widget->clear();
|
||||||
for (auto &_item : items()) {
|
for (auto &_item : items()) {
|
||||||
QString fileName = QFileInfo(_item->fileName()).fileName();
|
QString fileName = QFileInfo(_item->fileName()).fileName();
|
||||||
auto item = new QListWidgetItem(fileName, ui->listWidget);
|
auto item = new QListWidgetItem(fileName, _widget);
|
||||||
QStringList tooltip;
|
QStringList tooltip;
|
||||||
tooltip.append(i18n("Name: %1", _item->name()));
|
tooltip.append(i18n("Name: %1", _item->name()));
|
||||||
tooltip.append(i18n("Comment: %1", _item->comment()));
|
tooltip.append(i18n("Comment: %1", _item->comment()));
|
||||||
tooltip.append(i18n("Identity: %1", _item->uniq()));
|
tooltip.append(i18n("Identity: %1", _item->uniq()));
|
||||||
item->setToolTip(tooltip.join('\n'));
|
item->setToolTip(tooltip.join('\n'));
|
||||||
ui->listWidget->addItem(item);
|
_widget->addItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,22 +215,3 @@ void AbstractExtItemAggregator::setConfigArgs(const QVariant &_configArgs)
|
|||||||
|
|
||||||
m_configArgs = _configArgs;
|
m_configArgs = _configArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AbstractExtItemAggregator::editItemActivated(QListWidgetItem *)
|
|
||||||
{
|
|
||||||
return editItem();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void AbstractExtItemAggregator::editItemButtonPressed(QAbstractButton *_button)
|
|
||||||
{
|
|
||||||
if (dynamic_cast<QPushButton *>(_button) == copyButton)
|
|
||||||
return copyItem();
|
|
||||||
else if (dynamic_cast<QPushButton *>(_button) == createButton)
|
|
||||||
return doCreateItem();
|
|
||||||
else if (dynamic_cast<QPushButton *>(_button) == deleteButton)
|
|
||||||
return deleteItem();
|
|
||||||
else if (ui->buttonBox->buttonRole(_button) == QDialogButtonBox::AcceptRole)
|
|
||||||
return editItem();
|
|
||||||
}
|
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
#ifndef ABSTRACTEXTITEMAGGREGATOR_H
|
#ifndef ABSTRACTEXTITEMAGGREGATOR_H
|
||||||
#define ABSTRACTEXTITEMAGGREGATOR_H
|
#define ABSTRACTEXTITEMAGGREGATOR_H
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
|
||||||
#include "abstractextitem.h"
|
#include "abstractextitem.h"
|
||||||
@ -26,48 +25,45 @@
|
|||||||
|
|
||||||
|
|
||||||
class QAbstractButton;
|
class QAbstractButton;
|
||||||
|
class QListWidget;
|
||||||
class QListWidgetItem;
|
class QListWidgetItem;
|
||||||
namespace Ui
|
|
||||||
{
|
|
||||||
class AbstractExtItemAggregator;
|
|
||||||
}
|
|
||||||
|
|
||||||
class AbstractExtItemAggregator : public QDialog
|
class AbstractExtItemAggregator : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(QVariant configArgs READ configArgs WRITE setConfigArgs)
|
Q_PROPERTY(QVariant configArgs READ configArgs WRITE setConfigArgs)
|
||||||
Q_PROPERTY(QVariant type READ type)
|
Q_PROPERTY(QVariant type READ type)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit AbstractExtItemAggregator(QWidget *_parent, QString _type);
|
explicit AbstractExtItemAggregator(QObject *_parent, QString _type);
|
||||||
~AbstractExtItemAggregator() override;
|
|
||||||
// methods
|
// methods
|
||||||
void copyItem();
|
void copyItem(QListWidget *_widget);
|
||||||
template <class T> void createItem()
|
template <class T> void createItem(QListWidget *_widget)
|
||||||
{
|
{
|
||||||
auto fileName = getName();
|
auto fileName = getName();
|
||||||
int number = uniqNumber();
|
auto number = uniqNumber();
|
||||||
auto dir = QString("%1/awesomewidgets/%2")
|
auto dir = QString("%1/awesomewidgets/%2")
|
||||||
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), m_type);
|
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), m_type);
|
||||||
if (fileName.isEmpty()) {
|
if (fileName.isEmpty()) {
|
||||||
qCWarning(LOG_LIB) << "Nothing to create";
|
qCWarning(LOG_LIB) << "Nothing to create";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto filePath = QString("%1/%2").arg(dir, fileName);
|
auto filePath = QString("%1/%2").arg(dir, fileName);
|
||||||
|
|
||||||
T *newItem = new T(this, filePath);
|
auto newItem = new T(this, filePath);
|
||||||
newItem->setNumber(number);
|
newItem->setNumber(number);
|
||||||
if (newItem->showConfiguration(this, configArgs()) == 1) {
|
if (newItem->showConfiguration(nullptr, configArgs()) == 1) {
|
||||||
initItems();
|
initItems();
|
||||||
repaintList();
|
repaintList(_widget);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
void deleteItem();
|
void deleteItem(QListWidget *_widget);
|
||||||
void editItem();
|
void editItem(QListWidget *_widget);
|
||||||
|
[[nodiscard]] int exec();
|
||||||
QString getName();
|
QString getName();
|
||||||
virtual void initItems() = 0;
|
virtual void initItems() = 0;
|
||||||
[[nodiscard]] AbstractExtItem *itemFromWidget() const;
|
[[nodiscard]] AbstractExtItem *itemFromWidget(QListWidget *_widget) const;
|
||||||
void repaintList() const;
|
void repaintList(QListWidget *_widget) const;
|
||||||
[[nodiscard]] int uniqNumber() const;
|
[[nodiscard]] int uniqNumber() const;
|
||||||
// get methods
|
// get methods
|
||||||
[[nodiscard]] QVariant configArgs() const;
|
[[nodiscard]] QVariant configArgs() const;
|
||||||
@ -77,21 +73,12 @@ public:
|
|||||||
// set methods
|
// set methods
|
||||||
void setConfigArgs(const QVariant &_configArgs);
|
void setConfigArgs(const QVariant &_configArgs);
|
||||||
|
|
||||||
private slots:
|
|
||||||
void editItemActivated(QListWidgetItem *);
|
|
||||||
void editItemButtonPressed(QAbstractButton *_button);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// ui
|
|
||||||
Ui::AbstractExtItemAggregator *ui = nullptr;
|
|
||||||
QPushButton *copyButton = nullptr;
|
|
||||||
QPushButton *createButton = nullptr;
|
|
||||||
QPushButton *deleteButton = nullptr;
|
|
||||||
// properties
|
// properties
|
||||||
QVariant m_configArgs;
|
QVariant m_configArgs;
|
||||||
QString m_type;
|
QString m_type;
|
||||||
// ui methods
|
// ui methods
|
||||||
virtual void doCreateItem() = 0;
|
virtual void doCreateItem(QListWidget *_widget) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -270,4 +270,3 @@ void AWFloatFormatter::translate(void *_ui)
|
|||||||
ui->label_multiplier->setText(i18n("Multiplier"));
|
ui->label_multiplier->setText(i18n("Multiplier"));
|
||||||
ui->label_summand->setText(i18n("Summand"));
|
ui->label_summand->setText(i18n("Summand"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,4 +91,3 @@ void AWNoFormatter::translate(void *_ui)
|
|||||||
ui->label_comment->setText(i18n("Comment"));
|
ui->label_comment->setText(i18n("Comment"));
|
||||||
ui->label_type->setText(i18n("Type"));
|
ui->label_type->setText(i18n("Type"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,4 +214,3 @@ void AWScriptFormatter::translate(void *_ui)
|
|||||||
ui->checkBox_hasReturn->setText(i18n("Has return"));
|
ui->checkBox_hasReturn->setText(i18n("Has return"));
|
||||||
ui->label_code->setText(i18n("Code"));
|
ui->label_code->setText(i18n("Code"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
template <class T> class ExtItemAggregator : public AbstractExtItemAggregator
|
template <class T> class ExtItemAggregator : public AbstractExtItemAggregator
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit ExtItemAggregator(QWidget *_parent, const QString &_type)
|
explicit ExtItemAggregator(QObject *_parent, const QString &_type)
|
||||||
: AbstractExtItemAggregator(_parent, _type)
|
: AbstractExtItemAggregator(_parent, _type)
|
||||||
{
|
{
|
||||||
qSetMessagePattern(AWDebug::LOG_FORMAT);
|
qSetMessagePattern(AWDebug::LOG_FORMAT);
|
||||||
@ -56,8 +56,7 @@ public:
|
|||||||
|
|
||||||
void editItems()
|
void editItems()
|
||||||
{
|
{
|
||||||
repaintList();
|
auto ret = exec();
|
||||||
int ret = exec();
|
|
||||||
qCInfo(LOG_LIB) << "Dialog returns" << ret;
|
qCInfo(LOG_LIB) << "Dialog returns" << ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -123,7 +122,7 @@ private:
|
|||||||
QList<AbstractExtItem *> m_items;
|
QList<AbstractExtItem *> m_items;
|
||||||
QList<T *> m_activeItems;
|
QList<T *> m_activeItems;
|
||||||
|
|
||||||
void doCreateItem() override { return createItem<T>(); }
|
void doCreateItem(QListWidget *_widget) override { return createItem<T>(_widget); }
|
||||||
|
|
||||||
QList<AbstractExtItem *> getItems()
|
QList<AbstractExtItem *> getItems()
|
||||||
{
|
{
|
||||||
@ -137,7 +136,7 @@ private:
|
|||||||
if (!file.endsWith(".desktop"))
|
if (!file.endsWith(".desktop"))
|
||||||
continue;
|
continue;
|
||||||
qCInfo(LOG_LIB) << "Found file" << file << "in" << dir;
|
qCInfo(LOG_LIB) << "Found file" << file << "in" << dir;
|
||||||
QString filePath = QString("%1/%2").arg(dir).arg(file);
|
auto filePath = QString("%1/%2").arg(dir, file);
|
||||||
// check if already exists
|
// check if already exists
|
||||||
if (std::any_of(items.cbegin(), items.cend(),
|
if (std::any_of(items.cbegin(), items.cend(),
|
||||||
[&filePath](AbstractExtItem *item) { return (item->fileName() == filePath); }))
|
[&filePath](AbstractExtItem *item) { return (item->fileName() == filePath); }))
|
||||||
@ -147,8 +146,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// sort items
|
// sort items
|
||||||
std::sort(items.begin(), items.end(),
|
std::sort(items.begin(), items.end(), [](auto *lhs, auto *rhs) { return lhs->number() < rhs->number(); });
|
||||||
[](const AbstractExtItem *lhs, const AbstractExtItem *rhs) { return lhs->number() < rhs->number(); });
|
|
||||||
return items;
|
return items;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -433,7 +433,8 @@ int GraphicalItem::showConfiguration(QWidget *_parent, const QVariant &_args)
|
|||||||
translate(ui);
|
translate(ui);
|
||||||
|
|
||||||
connect(ui->checkBox_custom, &QCheckBox::stateChanged, [this, ui](const int state) { changeValue(ui, state); });
|
connect(ui->checkBox_custom, &QCheckBox::stateChanged, [this, ui](const int state) { changeValue(ui, state); });
|
||||||
connect(ui->comboBox_type, &QComboBox::currentIndexChanged, [this, ui](const int state) { changeCountState(ui, state); });
|
connect(ui->comboBox_type, &QComboBox::currentIndexChanged,
|
||||||
|
[this, ui](const int state) { changeCountState(ui, state); });
|
||||||
connect(ui->toolButton_activeColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); });
|
connect(ui->toolButton_activeColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); });
|
||||||
connect(ui->toolButton_inactiveColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); });
|
connect(ui->toolButton_inactiveColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); });
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
#include "extsysmon.h"
|
#include "extsysmon.h"
|
||||||
|
|
||||||
#include <KPluginFactory>
|
#include <KPluginFactory>
|
||||||
|
|
||||||
|
#include <QDBusMetaType>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
@ -38,26 +40,13 @@ ExtendedSysMon::ExtendedSysMon(QObject *_parent, const QVariantList &_args)
|
|||||||
qCDebug(LOG_ESM) << metadata;
|
qCDebug(LOG_ESM) << metadata;
|
||||||
|
|
||||||
readConfiguration();
|
readConfiguration();
|
||||||
|
addContainer(new ExtSysMonAggregator("extsysmon", "Extended system monitor", this, m_configuration));
|
||||||
addContainer(new ExtSysMonAggregator("extsysmon", "extsysmon", this, m_configuration));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ExtendedSysMon::~ExtendedSysMon()
|
|
||||||
{
|
|
||||||
qCDebug(LOG_ESM) << __PRETTY_FUNCTION__;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ExtendedSysMon::update()
|
|
||||||
{
|
|
||||||
// m_aggregator->update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ExtendedSysMon::readConfiguration()
|
void ExtendedSysMon::readConfiguration()
|
||||||
{
|
{
|
||||||
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, "plasma-dataengine-extsysmon.conf");
|
auto fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, "plasma-dataengine-extsysmon.conf");
|
||||||
qCInfo(LOG_ESM) << "Configuration file" << fileName;
|
qCInfo(LOG_ESM) << "Configuration file" << fileName;
|
||||||
QSettings settings(fileName, QSettings::IniFormat);
|
QSettings settings(fileName, QSettings::IniFormat);
|
||||||
QHash<QString, QString> rawConfig;
|
QHash<QString, QString> rawConfig;
|
||||||
@ -90,13 +79,13 @@ QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QStri
|
|||||||
else if ((_rawConfig["GPUDEV"] != "ati") && (_rawConfig["GPUDEV"] != "nvidia"))
|
else if ((_rawConfig["GPUDEV"] != "ati") && (_rawConfig["GPUDEV"] != "nvidia"))
|
||||||
_rawConfig["GPUDEV"] = GPULoadSource::autoGpu();
|
_rawConfig["GPUDEV"] = GPULoadSource::autoGpu();
|
||||||
// hdddev
|
// hdddev
|
||||||
QStringList allHddDevices = HDDTemperatureSource::allHdd();
|
auto allHddDevices = HDDTemperatureSource::allHdd();
|
||||||
if (_rawConfig["HDDDEV"] == "all") {
|
if (_rawConfig["HDDDEV"] == "all") {
|
||||||
_rawConfig["HDDDEV"] = allHddDevices.join(',');
|
_rawConfig["HDDDEV"] = allHddDevices.join(',');
|
||||||
} else if (_rawConfig["HDDDEV"] == "disable") {
|
} else if (_rawConfig["HDDDEV"] == "disable") {
|
||||||
_rawConfig["HDDDEV"] = "";
|
_rawConfig["HDDDEV"] = "";
|
||||||
} else {
|
} else {
|
||||||
QStringList deviceList = _rawConfig["HDDDEV"].split(',', Qt::SkipEmptyParts);
|
auto deviceList = _rawConfig["HDDDEV"].split(',', Qt::SkipEmptyParts);
|
||||||
QStringList devices;
|
QStringList devices;
|
||||||
auto diskRegexp = QRegularExpression("^/dev/[hms]d[a-z]$");
|
auto diskRegexp = QRegularExpression("^/dev/[hms]d[a-z]$");
|
||||||
for (auto &device : deviceList)
|
for (auto &device : deviceList)
|
||||||
|
@ -27,12 +27,8 @@ class ExtendedSysMon : public KSysGuard::SensorPlugin
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ExtendedSysMon(QObject *_parent, const QVariantList &_args);
|
explicit ExtendedSysMon(QObject *_parent, const QVariantList &_args);
|
||||||
~ExtendedSysMon() override;
|
|
||||||
|
|
||||||
[[nodiscard]] QString providerName() const override { return QStringLiteral("extsysmon"); }
|
[[nodiscard]] QString providerName() const override { return QStringLiteral("extsysmon"); }
|
||||||
|
|
||||||
void update() override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// configuration
|
// configuration
|
||||||
QHash<QString, QString> m_configuration;
|
QHash<QString, QString> m_configuration;
|
||||||
|
@ -46,73 +46,52 @@ ExtSysMonAggregator::ExtSysMonAggregator(const QString &_id, const QString &_nam
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ExtSysMonAggregator::createSensor(const QString &_id, const QString &_name, AbstractExtSysMonSource *_source)
|
||||||
|
{
|
||||||
|
qCDebug(LOG_ESM) << "Register sensor" << _name << "with id" << _id;
|
||||||
|
|
||||||
|
addObject(new ExtSysMonSensor(this, _id, _name, _source));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void ExtSysMonAggregator::init(const QHash<QString, QString> &_config)
|
void ExtSysMonAggregator::init(const QHash<QString, QString> &_config)
|
||||||
{
|
{
|
||||||
qCDebug(LOG_ESM) << "Configuration" << _config;
|
qCDebug(LOG_ESM) << "Configuration" << _config;
|
||||||
|
|
||||||
// battery
|
// battery
|
||||||
auto batteryItem = new BatterySource(this, {_config["ACPIPATH"]});
|
createSensor("battery", i18n("Battery"), new BatterySource(this, {_config["ACPIPATH"]}));
|
||||||
for (auto &source : batteryItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, batteryItem));
|
|
||||||
// custom
|
// custom
|
||||||
auto customItem = new CustomSource(this, {});
|
createSensor("custom", i18n("Scripts"), new CustomSource(this, {}));
|
||||||
for (auto &source : customItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, customItem));
|
|
||||||
// desktop
|
// desktop
|
||||||
auto desktopItem = new DesktopSource(this, {});
|
// FIXME causes segfault
|
||||||
for (auto &source : desktopItem->sources())
|
createSensor("desktop", i18n("Desktop"), new DesktopSource(this, {}));
|
||||||
addObject(new ExtSysMonSensor(this, source, desktopItem));
|
|
||||||
// gpu load
|
// gpu load
|
||||||
auto gpuLoadItem = new GPULoadSource(this, {_config["GPUDEV"]});
|
createSensor("gpuload", i18n("GPU load"), new GPULoadSource(this, {_config["GPUDEV"]}));
|
||||||
for (auto &source : gpuLoadItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, gpuLoadItem));
|
|
||||||
// gpu temperature
|
// gpu temperature
|
||||||
auto gpuTempItem = new GPUTemperatureSource(this, {_config["GPUDEV"]});
|
createSensor("gputemp", i18n("GPU temperature"), new GPUTemperatureSource(this, {_config["GPUDEV"]}));
|
||||||
for (auto &source : gpuTempItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, gpuTempItem));
|
|
||||||
// hdd temperature
|
// hdd temperature
|
||||||
auto hddTempItem
|
createSensor("hdd", i18n("HDD temperature"),
|
||||||
= new HDDTemperatureSource(this, {_config["HDDDEV"], _config["HDDTEMPCMD"]});
|
new HDDTemperatureSource(this, {_config["HDDDEV"], _config["HDDTEMPCMD"]}));
|
||||||
for (auto &source : hddTempItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, hddTempItem));
|
|
||||||
// network
|
// network
|
||||||
auto networkItem = new NetworkSource(this, QStringList());
|
createSensor("network", i18n("Network"), new NetworkSource(this, {}));
|
||||||
for (auto &source : networkItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, networkItem));
|
|
||||||
// player
|
// player
|
||||||
auto playerItem
|
createSensor("player", i18n("Music player"),
|
||||||
= new PlayerSource(this, {_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"],
|
new PlayerSource(this, {_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"], _config["MPRIS"],
|
||||||
_config["MPRIS"], _config["PLAYERSYMBOLS"]});
|
_config["PLAYERSYMBOLS"]}));
|
||||||
for (auto &source : playerItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, playerItem));
|
|
||||||
// processes
|
// processes
|
||||||
auto processesItem = new ProcessesSource(this, {});
|
createSensor("ps", i18n("Processes"), new ProcessesSource(this, {}));
|
||||||
for (auto &source : processesItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, processesItem));
|
|
||||||
// network request
|
// network request
|
||||||
auto requestItem = new RequestSource(this, {});
|
createSensor("requests", i18n("Network requests"), new RequestSource(this, {}));
|
||||||
for (auto &source : requestItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, requestItem));
|
|
||||||
// quotes
|
// quotes
|
||||||
auto quotesItem = new QuotesSource(this, {});
|
createSensor("quotes", i18n("Quotes"), new QuotesSource(this, {}));
|
||||||
for (auto &source : quotesItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, quotesItem));
|
|
||||||
// system
|
// system
|
||||||
auto systemItem = new SystemInfoSource(this, {});
|
createSensor("system", i18n("System"), new SystemInfoSource(this, {}));
|
||||||
for (auto &source : systemItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, systemItem));
|
|
||||||
// upgrade
|
// upgrade
|
||||||
auto upgradeItem = new UpgradeSource(this, {});
|
createSensor("upgrade", i18n("Upgrades"), new UpgradeSource(this, {}));
|
||||||
for (auto &source : upgradeItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, upgradeItem));
|
|
||||||
// weather
|
// weather
|
||||||
auto weatherItem = new WeatherSource(this, {});
|
createSensor("weather", i18n("Weather"), new WeatherSource(this, {}));
|
||||||
for (auto &source : weatherItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, weatherItem));
|
|
||||||
#ifdef BUILD_LOAD
|
#ifdef BUILD_LOAD
|
||||||
// additional load source
|
// additional load source
|
||||||
auto loadItem = new LoadSource(this, QStringList());
|
createSensor("load", i18n("Load"), new LoadSource(this, {}));
|
||||||
for (auto &source : loadItem->sources())
|
|
||||||
addObject(new ExtSysMonSensor(this, source, loadItem));
|
|
||||||
#endif /* BUILD_LOAD */
|
#endif /* BUILD_LOAD */
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,10 @@
|
|||||||
|
|
||||||
#include "abstractextsysmonsource.h"
|
#include "abstractextsysmonsource.h"
|
||||||
|
|
||||||
|
|
||||||
|
class AbstractExtSysMonSource;
|
||||||
|
class ExtSysMonSensor;
|
||||||
|
|
||||||
class ExtSysMonAggregator : public KSysGuard::SensorContainer
|
class ExtSysMonAggregator : public KSysGuard::SensorContainer
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -32,6 +36,7 @@ public:
|
|||||||
const QHash<QString, QString> &_config);
|
const QHash<QString, QString> &_config);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void createSensor(const QString &_id, const QString &_name, AbstractExtSysMonSource *_source);
|
||||||
void init(const QHash<QString, QString> &_config);
|
void init(const QHash<QString, QString> &_config);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,12 +48,12 @@ BatterySource::~BatterySource()
|
|||||||
QStringList BatterySource::getSources()
|
QStringList BatterySource::getSources()
|
||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
sources.append("battery/ac");
|
sources.append("ac");
|
||||||
sources.append("battery/bat");
|
sources.append("bat");
|
||||||
sources.append("battery/batleft");
|
sources.append("batleft");
|
||||||
sources.append("battery/batnow");
|
sources.append("batnow");
|
||||||
sources.append("battery/batrate");
|
sources.append("batrate");
|
||||||
sources.append("battery/battotal");
|
sources.append("battotal");
|
||||||
|
|
||||||
auto directory = QDir(m_acpiPath);
|
auto directory = QDir(m_acpiPath);
|
||||||
|
|
||||||
@ -63,11 +63,11 @@ QStringList BatterySource::getSources()
|
|||||||
qCInfo(LOG_ESS) << "Init batteries count as" << m_batteriesCount;
|
qCInfo(LOG_ESS) << "Init batteries count as" << m_batteriesCount;
|
||||||
|
|
||||||
for (int i = 0; i < m_batteriesCount; i++) {
|
for (int i = 0; i < m_batteriesCount; i++) {
|
||||||
sources.append(QString("battery/bat%1").arg(i));
|
sources.append(QString("bat%1").arg(i));
|
||||||
sources.append(QString("battery/batleft%1").arg(i));
|
sources.append(QString("batleft%1").arg(i));
|
||||||
sources.append(QString("battery/batnow%1").arg(i));
|
sources.append(QString("batnow%1").arg(i));
|
||||||
sources.append(QString("battery/batrate%1").arg(i));
|
sources.append(QString("batrate%1").arg(i));
|
||||||
sources.append(QString("battery/battotal%1").arg(i));
|
sources.append(QString("battotal%1").arg(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,8 +82,7 @@ QVariant BatterySource::data(const QString &_source)
|
|||||||
|
|
||||||
if (!m_values.contains(_source))
|
if (!m_values.contains(_source))
|
||||||
run();
|
run();
|
||||||
QVariant value = m_values.take(_source);
|
return m_values.take(_source);
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -92,65 +91,65 @@ KSysGuard::SensorInfo *BatterySource::initialData(const QString &_source) const
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source == "battery/ac") {
|
if (_source == "ac") {
|
||||||
data->name = "Is AC online or not";
|
data->name = "Is AC online or not";
|
||||||
data->variantType = QVariant::Bool;
|
data->variantType = QVariant::Bool;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "battery/bat") {
|
} else if (_source == "bat") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 100;
|
data->max = 100;
|
||||||
data->name = "Average battery usage";
|
data->name = "Average battery usage";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitPercent;
|
data->unit = KSysGuard::UnitPercent;
|
||||||
} else if (_source == "battery/batleft") {
|
} else if (_source == "batleft") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Battery discharge time";
|
data->name = "Battery discharge time";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitSecond;
|
data->unit = KSysGuard::UnitSecond;
|
||||||
} else if (_source == "battery/batnow") {
|
} else if (_source == "batnow") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Current battery capacity";
|
data->name = "Current battery capacity";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "battery/batrate") {
|
} else if (_source == "batrate") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Average battery discharge rate";
|
data->name = "Average battery discharge rate";
|
||||||
data->variantType = QVariant::Double;
|
data->variantType = QVariant::Double;
|
||||||
data->unit = KSysGuard::UnitRate;
|
data->unit = KSysGuard::UnitRate;
|
||||||
} else if (_source == "battery/battotal") {
|
} else if (_source == "battotal") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Full battery capacity";
|
data->name = "Full battery capacity";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("battery/batleft")) {
|
} else if (_source.startsWith("batleft")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = QString("Battery %1 discharge time").arg(index(_source));
|
data->name = QString("Battery %1 discharge time").arg(index(_source));
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitSecond;
|
data->unit = KSysGuard::UnitSecond;
|
||||||
} else if (_source.startsWith("battery/batnow")) {
|
} else if (_source.startsWith("batnow")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = QString("Battery %1 capacity").arg(index(_source));
|
data->name = QString("Battery %1 capacity").arg(index(_source));
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("battery/battotal")) {
|
} else if (_source.startsWith("battotal")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = QString("Battery %1 full capacity").arg(index(_source));
|
data->name = QString("Battery %1 full capacity").arg(index(_source));
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("battery/batrate")) {
|
} else if (_source.startsWith("batrate")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = QString("Battery %1 discharge rate").arg(index(_source));
|
data->name = QString("Battery %1 discharge rate").arg(index(_source));
|
||||||
data->variantType = QVariant::Double;
|
data->variantType = QVariant::Double;
|
||||||
data->unit = KSysGuard::UnitRate;
|
data->unit = KSysGuard::UnitRate;
|
||||||
} else if (_source.startsWith("battery/bat")) {
|
} else if (_source.startsWith("bat")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 100;
|
data->max = 100;
|
||||||
data->name = QString("Battery %1 usage").arg(index(_source));
|
data->name = QString("Battery %1 usage").arg(index(_source));
|
||||||
@ -167,7 +166,7 @@ void BatterySource::run()
|
|||||||
// adaptor
|
// adaptor
|
||||||
QFile acFile(QString("%1/AC/online").arg(m_acpiPath));
|
QFile acFile(QString("%1/AC/online").arg(m_acpiPath));
|
||||||
if (acFile.open(QIODevice::ReadOnly | QIODevice::Text))
|
if (acFile.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||||
m_values["battery/ac"] = (QString(acFile.readLine()).trimmed().toInt() == 1);
|
m_values["ac"] = (QString(acFile.readLine()).trimmed().toInt() == 1);
|
||||||
acFile.close();
|
acFile.close();
|
||||||
|
|
||||||
// batteries
|
// batteries
|
||||||
@ -178,28 +177,27 @@ void BatterySource::run()
|
|||||||
if (currentLevelFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if (currentLevelFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
auto value = QString(currentLevelFile.readLine()).toInt();
|
auto value = QString(currentLevelFile.readLine()).toInt();
|
||||||
m_trend[i + 1].append(value);
|
m_trend[i + 1].append(value);
|
||||||
m_values[QString("battery/batnow%1").arg(i)] = value;
|
m_values[QString("batnow%1").arg(i)] = value;
|
||||||
}
|
}
|
||||||
currentLevelFile.close();
|
currentLevelFile.close();
|
||||||
// total
|
// total
|
||||||
QFile fullLevelFile(QString("%1/BAT%2/energy_full").arg(m_acpiPath).arg(i));
|
QFile fullLevelFile(QString("%1/BAT%2/energy_full").arg(m_acpiPath).arg(i));
|
||||||
if (fullLevelFile.open(QIODevice::ReadOnly | QIODevice::Text))
|
if (fullLevelFile.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||||
m_values[QString("battery/battotal%1").arg(i)] = QString(fullLevelFile.readLine()).toInt();
|
m_values[QString("battotal%1").arg(i)] = QString(fullLevelFile.readLine()).toInt();
|
||||||
fullLevelFile.close();
|
fullLevelFile.close();
|
||||||
|
|
||||||
m_values[QString("battery/bat%1").arg(i)]
|
m_values[QString("bat%1").arg(i)] = static_cast<int>(100 * m_values[QString("batnow%1").arg(i)].toFloat()
|
||||||
= static_cast<int>(100 * m_values[QString("battery/batnow%1").arg(i)].toFloat()
|
/ m_values[QString("battotal%1").arg(i)].toFloat());
|
||||||
/ m_values[QString("battery/battotal%1").arg(i)].toFloat());
|
|
||||||
// accumulate
|
// accumulate
|
||||||
currentLevel += m_values[QString("battery/batnow%1").arg(i)].toFloat();
|
currentLevel += m_values[QString("batnow%1").arg(i)].toFloat();
|
||||||
fullLevel += m_values[QString("battery/battotal%1").arg(i)].toFloat();
|
fullLevel += m_values[QString("battotal%1").arg(i)].toFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
// total
|
// total
|
||||||
m_trend[0].append(static_cast<int>(currentLevel));
|
m_trend[0].append(static_cast<int>(currentLevel));
|
||||||
m_values["battery/batnow"] = static_cast<int>(currentLevel);
|
m_values["batnow"] = static_cast<int>(currentLevel);
|
||||||
m_values["battery/battotal"] = static_cast<int>(fullLevel);
|
m_values["battotal"] = static_cast<int>(fullLevel);
|
||||||
m_values["battery/bat"] = static_cast<int>(100 * currentLevel / fullLevel);
|
m_values["bat"] = static_cast<int>(100 * currentLevel / fullLevel);
|
||||||
|
|
||||||
calculateRates();
|
calculateRates();
|
||||||
}
|
}
|
||||||
@ -245,15 +243,14 @@ void BatterySource::calculateRates()
|
|||||||
|
|
||||||
for (int i = 0; i < m_batteriesCount; i++) {
|
for (int i = 0; i < m_batteriesCount; i++) {
|
||||||
auto approx = approximate(m_trend[i + 1]);
|
auto approx = approximate(m_trend[i + 1]);
|
||||||
m_values[QString("battery/batrate%1").arg(i)] = approx / interval;
|
m_values[QString("batrate%1").arg(i)] = approx / interval;
|
||||||
m_values[QString("battery/batleft%1").arg(i)]
|
m_values[QString("batleft%1").arg(i)] = interval * m_values[QString("batnow%1").arg(i)].toFloat() / approx;
|
||||||
= interval * m_values[QString("battery/batnow%1").arg(i)].toFloat() / approx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// total
|
// total
|
||||||
auto approx = approximate(m_trend[0]);
|
auto approx = approximate(m_trend[0]);
|
||||||
m_values["battery/batrate"] = approx / interval;
|
m_values["batrate"] = approx / interval;
|
||||||
m_values["battery/batleft"] = interval * m_values["battery/batnow"].toFloat() / approx;
|
m_values["batleft"] = interval * m_values["batnow"].toFloat() / approx;
|
||||||
|
|
||||||
// old data cleanup
|
// old data cleanup
|
||||||
for (auto &trend : m_trend.keys()) {
|
for (auto &trend : m_trend.keys()) {
|
||||||
|
@ -74,7 +74,7 @@ QStringList CustomSource::getSources()
|
|||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
for (auto &item : m_extScripts->activeItems())
|
for (auto &item : m_extScripts->activeItems())
|
||||||
sources.append(QString("custom/%1").arg(item->tag("custom")));
|
sources.append(item->tag("custom"));
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
@ -51,13 +51,13 @@ QVariant DesktopSource::data(const QString &_source)
|
|||||||
auto decrement = KWindowSystem::isPlatformX11() ? 1 : 0;
|
auto decrement = KWindowSystem::isPlatformX11() ? 1 : 0;
|
||||||
auto current = nativeIndex - decrement;
|
auto current = nativeIndex - decrement;
|
||||||
|
|
||||||
if (_source == "desktop/current/name") {
|
if (_source == "current/name") {
|
||||||
return m_vdi->desktopNames().at(current);
|
return m_vdi->desktopNames().at(current);
|
||||||
} else if (_source == "desktop/current/number") {
|
} else if (_source == "current/number") {
|
||||||
return current + 1;
|
return current + 1;
|
||||||
} else if (_source == "desktop/total/name") {
|
} else if (_source == "total/name") {
|
||||||
return m_vdi->desktopNames();
|
return m_vdi->desktopNames();
|
||||||
} else if (_source == "desktop/total/number") {
|
} else if (_source == "total/number") {
|
||||||
return m_vdi->numberOfDesktops();
|
return m_vdi->numberOfDesktops();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,20 +70,20 @@ KSysGuard::SensorInfo *DesktopSource::initialData(const QString &_source) const
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source == "desktop/current/name") {
|
if (_source == "current/name") {
|
||||||
data->name = "Current desktop name";
|
data->name = "Current desktop name";
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "desktop/current/number") {
|
} else if (_source == "current/number") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->name = "Current desktop number";
|
data->name = "Current desktop number";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "desktop/total/name") {
|
} else if (_source == "total/name") {
|
||||||
data->name = "All desktops by name";
|
data->name = "All desktops by name";
|
||||||
data->variantType = QVariant::StringList;
|
data->variantType = QVariant::StringList;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "desktop/total/number") {
|
} else if (_source == "total/number") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->name = "Desktops count";
|
data->name = "Desktops count";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
@ -97,10 +97,10 @@ KSysGuard::SensorInfo *DesktopSource::initialData(const QString &_source) const
|
|||||||
QStringList DesktopSource::sources() const
|
QStringList DesktopSource::sources() const
|
||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
sources.append("desktop/current/name");
|
sources.append("current/name");
|
||||||
sources.append("desktop/current/number");
|
sources.append("current/number");
|
||||||
sources.append("desktop/total/name");
|
sources.append("total/name");
|
||||||
sources.append("desktop/total/number");
|
sources.append("total/number");
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
@ -17,23 +17,67 @@
|
|||||||
|
|
||||||
#include "extsysmonsensor.h"
|
#include "extsysmonsensor.h"
|
||||||
|
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
#include "abstractextsysmonsource.h"
|
#include "abstractextsysmonsource.h"
|
||||||
#include "awdebug.h"
|
#include "awdebug.h"
|
||||||
|
|
||||||
|
|
||||||
ExtSysMonSensor::ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QString &_id,
|
ExtSysMonSensor::ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QString &_id, const QString &_name,
|
||||||
AbstractExtSysMonSource *_source)
|
AbstractExtSysMonSource *_source)
|
||||||
: KSysGuard::SensorObject(_id, _parent)
|
: KSysGuard::SensorObject(_id, _name, _parent)
|
||||||
|
, m_source(_source)
|
||||||
|
, m_timer(new QTimer(this))
|
||||||
{
|
{
|
||||||
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
|
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
|
||||||
|
|
||||||
m_source = _source;
|
loadProperties();
|
||||||
|
|
||||||
|
connect(this, &SensorObject::subscribedChanged, [this](bool _state) { changeSubscription(_state); });
|
||||||
|
connect(m_timer, &QTimer::timeout, [this]() { update(); });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ExtSysMonSensor::~ExtSysMonSensor()
|
||||||
|
{
|
||||||
|
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
|
||||||
|
|
||||||
|
m_timer->stop();
|
||||||
|
m_timer->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ExtSysMonSensor::changeSubscription(bool _subscribed)
|
||||||
|
{
|
||||||
|
qCDebug(LOG_ESS) << "Subscription changed to" << _subscribed;
|
||||||
|
|
||||||
|
if (_subscribed) {
|
||||||
|
m_timer->start(1000);
|
||||||
|
} else {
|
||||||
|
m_timer->stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ExtSysMonSensor::update()
|
||||||
|
{
|
||||||
for (auto &source : m_source->sources()) {
|
for (auto &source : m_source->sources()) {
|
||||||
auto property = new KSysGuard::SensorProperty(source, this);
|
auto property = sensor(source);
|
||||||
|
if (!property->isSubscribed())
|
||||||
|
continue; // skip properties which are not explicitly subscribed
|
||||||
|
|
||||||
|
auto value = m_source->data(source);
|
||||||
|
qCWarning(LOG_ESS) << source << value;
|
||||||
|
property->setValue(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ExtSysMonSensor::loadProperties()
|
||||||
|
{
|
||||||
|
for (auto &source : m_source->sources()) {
|
||||||
auto info = m_source->initialData(source);
|
auto info = m_source->initialData(source);
|
||||||
property->setName(info->name);
|
auto property = new KSysGuard::SensorProperty(source, info->name, this);
|
||||||
|
|
||||||
property->setUnit(info->unit);
|
property->setUnit(info->unit);
|
||||||
property->setVariantType(info->variantType);
|
property->setVariantType(info->variantType);
|
||||||
@ -41,15 +85,6 @@ ExtSysMonSensor::ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QStr
|
|||||||
property->setMin(info->min);
|
property->setMin(info->min);
|
||||||
property->setMax(info->max);
|
property->setMax(info->max);
|
||||||
|
|
||||||
m_properties[source] = property;
|
addProperty(property);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ExtSysMonSensor::update()
|
|
||||||
{
|
|
||||||
for (auto &source : m_properties.keys()) {
|
|
||||||
auto value = m_source->data(source);
|
|
||||||
m_properties[source]->setValue(value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,19 +22,23 @@
|
|||||||
|
|
||||||
|
|
||||||
class AbstractExtSysMonSource;
|
class AbstractExtSysMonSource;
|
||||||
|
class QTimer;
|
||||||
|
|
||||||
class ExtSysMonSensor : public KSysGuard::SensorObject
|
class ExtSysMonSensor : public KSysGuard::SensorObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QString &_id, AbstractExtSysMonSource *_source);
|
explicit ExtSysMonSensor(KSysGuard::SensorContainer *_parent, const QString &_id, const QString &_name,
|
||||||
~ExtSysMonSensor() override = default;
|
AbstractExtSysMonSource *_source);
|
||||||
|
~ExtSysMonSensor() override;
|
||||||
|
void changeSubscription(bool _subscribed);
|
||||||
void update();
|
void update();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QHash<QString, KSysGuard::SensorProperty *> m_properties;
|
void loadProperties();
|
||||||
AbstractExtSysMonSource *m_source = nullptr;
|
AbstractExtSysMonSource *m_source = nullptr;
|
||||||
|
QTimer *m_timer = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ QVariant GPULoadSource::data(const QString &_source)
|
|||||||
{
|
{
|
||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
if (_source == "gpu/load")
|
if (_source == "load")
|
||||||
run();
|
run();
|
||||||
|
|
||||||
return m_values[_source];
|
return m_values[_source];
|
||||||
@ -87,7 +87,7 @@ KSysGuard::SensorInfo *GPULoadSource::initialData(const QString &_source) const
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source == "gpu/load") {
|
if (_source == "load") {
|
||||||
data->min = 0.0;
|
data->min = 0.0;
|
||||||
data->max = 100.0;
|
data->max = 100.0;
|
||||||
data->name = "GPU usage";
|
data->name = "GPU usage";
|
||||||
@ -115,7 +115,7 @@ void GPULoadSource::run()
|
|||||||
QStringList GPULoadSource::sources() const
|
QStringList GPULoadSource::sources() const
|
||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
sources.append("gpu/load");
|
sources.append("load");
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
@ -134,7 +134,7 @@ void GPULoadSource::updateValue()
|
|||||||
if (!str.contains("<gpu_util>"))
|
if (!str.contains("<gpu_util>"))
|
||||||
continue;
|
continue;
|
||||||
auto load = str.remove("<gpu_util>").remove("</gpu_util>").remove('%');
|
auto load = str.remove("<gpu_util>").remove("</gpu_util>").remove('%');
|
||||||
m_values["gpu/load"] = load.toFloat();
|
m_values["load"] = load.toFloat();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (m_device == "ati") {
|
} else if (m_device == "ati") {
|
||||||
@ -142,7 +142,7 @@ void GPULoadSource::updateValue()
|
|||||||
if (!str.contains("load"))
|
if (!str.contains("load"))
|
||||||
continue;
|
continue;
|
||||||
QString load = str.split(' ', Qt::SkipEmptyParts)[3].remove('%');
|
QString load = str.split(' ', Qt::SkipEmptyParts)[3].remove('%');
|
||||||
m_values["gpu/load"] = load.toFloat();
|
m_values["load"] = load.toFloat();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ QVariant GPUTemperatureSource::data(const QString &_source)
|
|||||||
{
|
{
|
||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
if (_source == "gpu/temperature")
|
if (_source == "temperature")
|
||||||
run();
|
run();
|
||||||
|
|
||||||
return m_values[_source];
|
return m_values[_source];
|
||||||
@ -67,7 +67,7 @@ KSysGuard::SensorInfo *GPUTemperatureSource::initialData(const QString &_source)
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source == "gpu/temperature") {
|
if (_source == "temperature") {
|
||||||
data->min = 0.0;
|
data->min = 0.0;
|
||||||
data->max = 0.0;
|
data->max = 0.0;
|
||||||
data->name = "GPU temperature";
|
data->name = "GPU temperature";
|
||||||
@ -95,7 +95,7 @@ void GPUTemperatureSource::run()
|
|||||||
QStringList GPUTemperatureSource::sources() const
|
QStringList GPUTemperatureSource::sources() const
|
||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
sources.append("gpu/temperature");
|
sources.append("temperature");
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
@ -114,7 +114,7 @@ void GPUTemperatureSource::updateValue()
|
|||||||
if (!str.contains("<gpu_temp>"))
|
if (!str.contains("<gpu_temp>"))
|
||||||
continue;
|
continue;
|
||||||
QString temp = str.remove("<gpu_temp>").remove("C</gpu_temp>");
|
QString temp = str.remove("<gpu_temp>").remove("C</gpu_temp>");
|
||||||
m_values["gpu/temperature"] = temp.toFloat();
|
m_values["temperature"] = temp.toFloat();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (m_device == "ati") {
|
} else if (m_device == "ati") {
|
||||||
@ -122,7 +122,7 @@ void GPUTemperatureSource::updateValue()
|
|||||||
if (!str.contains("Temperature"))
|
if (!str.contains("Temperature"))
|
||||||
continue;
|
continue;
|
||||||
QString temp = str.split(' ', Qt::SkipEmptyParts).at(4);
|
QString temp = str.split(' ', Qt::SkipEmptyParts).at(4);
|
||||||
m_values["gpu/temperature"] = temp.toFloat();
|
m_values["temperature"] = temp.toFloat();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ 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");
|
device.remove("temperature");
|
||||||
// run cmd
|
// run cmd
|
||||||
if (m_processes[device]->state() == QProcess::NotRunning) {
|
if (m_processes[device]->state() == QProcess::NotRunning) {
|
||||||
auto cmd = m_cmd.first();
|
auto cmd = m_cmd.first();
|
||||||
@ -95,7 +95,7 @@ KSysGuard::SensorInfo *HDDTemperatureSource::initialData(const QString &_source)
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto device = _source;
|
auto device = _source;
|
||||||
device.remove("hdd/temperature");
|
device.remove("temperature");
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
data->min = 0.0;
|
data->min = 0.0;
|
||||||
@ -112,7 +112,7 @@ QStringList HDDTemperatureSource::sources() const
|
|||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
for (auto &device : m_devices)
|
for (auto &device : m_devices)
|
||||||
sources.append(QString("hdd/temperature%1").arg(device));
|
sources.append(QString("temperature%1").arg(device));
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ KSysGuard::SensorInfo *LoadSource::initialData(const QString &_source) const
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source.startsWith("load/load")) {
|
if (_source.startsWith("load")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Simple sources for load tests";
|
data->name = "Simple sources for load tests";
|
||||||
@ -69,7 +69,7 @@ QStringList LoadSource::sources() const
|
|||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
for (int i = 0; i < 1000; i++)
|
for (int i = 0; i < 1000; i++)
|
||||||
sources.append(QString("load/load%1").arg(i));
|
sources.append(QString("load%1").arg(i));
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ NetworkSource::~NetworkSource()
|
|||||||
|
|
||||||
QVariant NetworkSource::data(const QString &_source)
|
QVariant NetworkSource::data(const QString &_source)
|
||||||
{
|
{
|
||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCWarning(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
if (!m_values.contains(_source))
|
if (!m_values.contains(_source))
|
||||||
run();
|
run();
|
||||||
@ -65,11 +65,11 @@ KSysGuard::SensorInfo *NetworkSource::initialData(const QString &_source) const
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source == "network/current/name") {
|
if (_source == "device") {
|
||||||
data->name = "Current network device name";
|
data->name = "Current network device name";
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "network/current/ssid") {
|
} else if (_source == "ssid") {
|
||||||
data->name = "Current SSID name";
|
data->name = "Current SSID name";
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
@ -81,16 +81,16 @@ KSysGuard::SensorInfo *NetworkSource::initialData(const QString &_source) const
|
|||||||
|
|
||||||
void NetworkSource::run()
|
void NetworkSource::run()
|
||||||
{
|
{
|
||||||
m_values["network/current/name"] = NetworkSource::getCurrentDevice();
|
m_values["device"] = NetworkSource::getCurrentDevice();
|
||||||
m_process->start("iwgetid", QStringList() << "-r");
|
m_process->start("iwgetid", {"-r"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QStringList NetworkSource::sources() const
|
QStringList NetworkSource::sources() const
|
||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
sources.append("network/current/name");
|
sources.append("device");
|
||||||
sources.append("network/current/ssid");
|
sources.append("ssid");
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ void NetworkSource::updateSsid()
|
|||||||
QString qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed();
|
QString qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed();
|
||||||
qCInfo(LOG_ESS) << "Output" << qoutput;
|
qCInfo(LOG_ESS) << "Output" << qoutput;
|
||||||
|
|
||||||
m_values["network/current/ssid"] = qoutput;
|
m_values["ssid"] = qoutput;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,51 +95,51 @@ KSysGuard::SensorInfo *PlayerSource::initialData(const QString &_source) const
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source == "player/album") {
|
if (_source == "album") {
|
||||||
data->name = "Current song album";
|
data->name = "Current song album";
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "player/salbum") {
|
} else if (_source == "salbum") {
|
||||||
data->name = QString("Current song album (%1 symbols)").arg(m_symbols);
|
data->name = QString("Current song album (%1 symbols)").arg(m_symbols);
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "player/dalbum") {
|
} else if (_source == "dalbum") {
|
||||||
data->name = QString("Current song album (%1 symbols, dynamic)").arg(m_symbols);
|
data->name = QString("Current song album (%1 symbols, dynamic)").arg(m_symbols);
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "player/artist") {
|
} else if (_source == "artist") {
|
||||||
data->name = "Current song artist";
|
data->name = "Current song artist";
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "player/sartist") {
|
} else if (_source == "sartist") {
|
||||||
data->name = QString("Current song artist (%1 symbols)").arg(m_symbols);
|
data->name = QString("Current song artist (%1 symbols)").arg(m_symbols);
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "player/dartist") {
|
} else if (_source == "dartist") {
|
||||||
data->name = QString("Current song artist (%1 symbols, dynamic)").arg(m_symbols);
|
data->name = QString("Current song artist (%1 symbols, dynamic)").arg(m_symbols);
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "player/duration") {
|
} else if (_source == "duration") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Current song duration";
|
data->name = "Current song duration";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitSecond;
|
data->unit = KSysGuard::UnitSecond;
|
||||||
} else if (_source == "player/progress") {
|
} else if (_source == "progress") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Current song progress";
|
data->name = "Current song progress";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitSecond;
|
data->unit = KSysGuard::UnitSecond;
|
||||||
} else if (_source == "player/title") {
|
} else if (_source == "title") {
|
||||||
data->name = "Current song title";
|
data->name = "Current song title";
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "player/stitle") {
|
} else if (_source == "stitle") {
|
||||||
data->name = QString("Current song title (%1 symbols)").arg(m_symbols);
|
data->name = QString("Current song title (%1 symbols)").arg(m_symbols);
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "player/dtitle") {
|
} else if (_source == "dtitle") {
|
||||||
data->name = QString("Current song title (%1 symbols, dynamic)").arg(m_symbols);
|
data->name = QString("Current song title (%1 symbols, dynamic)").arg(m_symbols);
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
@ -166,33 +166,30 @@ void PlayerSource::run()
|
|||||||
|
|
||||||
// dymanic properties
|
// dymanic properties
|
||||||
// solid
|
// solid
|
||||||
m_values["player/salbum"] = stripString(m_values["player/album"].toString(), m_symbols);
|
m_values["salbum"] = stripString(m_values["album"].toString(), m_symbols);
|
||||||
m_values["player/sartist"] = stripString(m_values["player/artist"].toString(), m_symbols);
|
m_values["sartist"] = stripString(m_values["artist"].toString(), m_symbols);
|
||||||
m_values["player/stitle"] = stripString(m_values["player/title"].toString(), m_symbols);
|
m_values["stitle"] = stripString(m_values["title"].toString(), m_symbols);
|
||||||
// dynamic
|
// dynamic
|
||||||
m_values["player/dalbum"]
|
m_values["dalbum"] = buildString(m_values["dalbum"].toString(), m_values["album"].toString(), m_symbols);
|
||||||
= buildString(m_values["player/dalbum"].toString(), m_values["player/album"].toString(), m_symbols);
|
m_values["dartist"] = buildString(m_values["dartist"].toString(), m_values["artist"].toString(), m_symbols);
|
||||||
m_values["player/dartist"]
|
m_values["dtitle"] = buildString(m_values["dtitle"].toString(), m_values["title"].toString(), m_symbols);
|
||||||
= 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 PlayerSource::sources() const
|
||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
sources.append("player/album");
|
sources.append("album");
|
||||||
sources.append("player/dalbum");
|
sources.append("dalbum");
|
||||||
sources.append("player/salbum");
|
sources.append("salbum");
|
||||||
sources.append("player/artist");
|
sources.append("artist");
|
||||||
sources.append("player/dartist");
|
sources.append("dartist");
|
||||||
sources.append("player/sartist");
|
sources.append("sartist");
|
||||||
sources.append("player/duration");
|
sources.append("duration");
|
||||||
sources.append("player/progress");
|
sources.append("progress");
|
||||||
sources.append("player/title");
|
sources.append("title");
|
||||||
sources.append("player/dtitle");
|
sources.append("dtitle");
|
||||||
sources.append("player/stitle");
|
sources.append("stitle");
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
@ -245,10 +242,10 @@ void PlayerSource::mpdSocketReadyRead()
|
|||||||
// there are one more time...
|
// there are one more time...
|
||||||
if ((metadata == "time") && (data.contains(':'))) {
|
if ((metadata == "time") && (data.contains(':'))) {
|
||||||
QStringList times = data.split(':');
|
QStringList times = data.split(':');
|
||||||
m_mpdCached["player/duration"] = times.at(0).toInt();
|
m_mpdCached["duration"] = times.at(0).toInt();
|
||||||
m_mpdCached["player/progress"] = times.at(1).toInt();
|
m_mpdCached["progress"] = times.at(1).toInt();
|
||||||
} else if (m_metadata.contains(metadata)) {
|
} else if (m_metadata.contains(metadata)) {
|
||||||
m_mpdCached[QString("player/%1").arg(metadata)] = data;
|
m_mpdCached[metadata] = data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -266,11 +263,11 @@ void PlayerSource::mpdSocketWritten(const qint64 _bytes)
|
|||||||
QVariantHash PlayerSource::defaultInfo()
|
QVariantHash PlayerSource::defaultInfo()
|
||||||
{
|
{
|
||||||
QVariantHash info;
|
QVariantHash info;
|
||||||
info["player/album"] = "unknown";
|
info["album"] = "unknown";
|
||||||
info["player/artist"] = "unknown";
|
info["artist"] = "unknown";
|
||||||
info["player/duration"] = 0;
|
info["duration"] = 0;
|
||||||
info["player/progress"] = 0;
|
info["progress"] = 0;
|
||||||
info["player/title"] = "unknown";
|
info["title"] = "unknown";
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
@ -321,11 +318,11 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris)
|
|||||||
// another portion of dirty magic
|
// another portion of dirty magic
|
||||||
auto map = qdbus_cast<QVariantHash>(
|
auto map = qdbus_cast<QVariantHash>(
|
||||||
response.arguments().first().value<QDBusVariant>().variant().value<QDBusArgument>());
|
response.arguments().first().value<QDBusVariant>().variant().value<QDBusArgument>());
|
||||||
info["player/album"] = map.value("xesam:album", "unknown");
|
info["album"] = map.value("xesam:album", "unknown");
|
||||||
// artist is array
|
// artist is array
|
||||||
info["player/artist"] = map.value("xesam:artist", "unknown").toString();
|
info["artist"] = map.value("xesam:artist", "unknown").toString();
|
||||||
info["player/duration"] = map.value("mpris:length", 0).toInt() / (1000 * 1000);
|
info["duration"] = map.value("mpris:length", 0).toInt() / (1000 * 1000);
|
||||||
info["player/title"] = map.value("xesam:title", "unknown");
|
info["title"] = map.value("xesam:title", "unknown");
|
||||||
}
|
}
|
||||||
|
|
||||||
// position
|
// position
|
||||||
@ -336,8 +333,7 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris)
|
|||||||
qCWarning(LOG_ESS) << "Error message" << response.errorMessage();
|
qCWarning(LOG_ESS) << "Error message" << response.errorMessage();
|
||||||
} else {
|
} else {
|
||||||
// this cast is simpler than the previous one ;)
|
// this cast is simpler than the previous one ;)
|
||||||
info["player/progress"]
|
info["progress"] = response.arguments().first().value<QDBusVariant>().variant().toLongLong() / (1000 * 1000);
|
||||||
= response.arguments().first().value<QDBusVariant>().variant().toLongLong() / (1000 * 1000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
|
@ -56,17 +56,17 @@ KSysGuard::SensorInfo *ProcessesSource::initialData(const QString &_source) cons
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source == "ps/running/count") {
|
if (_source == "running/count") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Count of running processes";
|
data->name = "Count of running processes";
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "ps/running/list") {
|
} else if (_source == "running/list") {
|
||||||
data->name = "All running processes list";
|
data->name = "All running processes list";
|
||||||
data->variantType = QVariant::StringList;
|
data->variantType = QVariant::StringList;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source == "ps/total/count") {
|
} else if (_source == "total/count") {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = "Total count of processes";
|
data->name = "Total count of processes";
|
||||||
@ -99,18 +99,18 @@ void ProcessesSource::run()
|
|||||||
cmdFile.close();
|
cmdFile.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_values["ps/running/count"] = running.count();
|
m_values["running/count"] = running.count();
|
||||||
m_values["ps/running/list"] = running;
|
m_values["running/list"] = running;
|
||||||
m_values["ps/total/count"] = directories.count();
|
m_values["total/count"] = directories.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QStringList ProcessesSource::sources() const
|
QStringList ProcessesSource::sources() const
|
||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
sources.append("ps/running/count");
|
sources.append("running/count");
|
||||||
sources.append("ps/running/list");
|
sources.append("running/list");
|
||||||
sources.append("ps/total/count");
|
sources.append("total/count");
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
@ -48,14 +48,12 @@ QVariant QuotesSource::data(const QString &_source)
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
int ind = index(_source);
|
int ind = index(_source);
|
||||||
auto service = _source;
|
if (!m_values.contains(_source)) {
|
||||||
service.remove("quotes/");
|
|
||||||
if (!m_values.contains(service)) {
|
|
||||||
QVariantHash data = m_extQuotes->itemByTagNumber(ind)->run();
|
QVariantHash data = m_extQuotes->itemByTagNumber(ind)->run();
|
||||||
for (auto &key : data.keys())
|
for (auto &key : data.keys())
|
||||||
m_values[key] = data[key];
|
m_values[key] = data[key];
|
||||||
}
|
}
|
||||||
QVariant value = m_values.take(service);
|
QVariant value = m_values.take(_source);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,37 +64,37 @@ KSysGuard::SensorInfo *QuotesSource::initialData(const QString &_source) const
|
|||||||
|
|
||||||
int ind = index(_source);
|
int ind = index(_source);
|
||||||
auto data = new KSysGuard::SensorInfo;
|
auto data = new KSysGuard::SensorInfo;
|
||||||
if (_source.startsWith("quotes/pricechg")) {
|
if (_source.startsWith("pricechg")) {
|
||||||
data->min = 0.0;
|
data->min = 0.0;
|
||||||
data->max = 0.0;
|
data->max = 0.0;
|
||||||
data->name = QString("Absolute price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
data->name = QString("Absolute price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Double;
|
data->variantType = QVariant::Double;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("quotes/price")) {
|
} else if (_source.startsWith("price")) {
|
||||||
data->min = 0.0;
|
data->min = 0.0;
|
||||||
data->max = 0.0;
|
data->max = 0.0;
|
||||||
data->name = QString("Price for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
data->name = QString("Price for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Double;
|
data->variantType = QVariant::Double;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("quotes/percpricechg")) {
|
} else if (_source.startsWith("percpricechg")) {
|
||||||
data->min = -100.0;
|
data->min = -100.0;
|
||||||
data->max = 100.0;
|
data->max = 100.0;
|
||||||
data->name = QString("Price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
data->name = QString("Price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Double;
|
data->variantType = QVariant::Double;
|
||||||
data->unit = KSysGuard::UnitPercent;
|
data->unit = KSysGuard::UnitPercent;
|
||||||
} else if (_source.startsWith("quotes/volumechg")) {
|
} else if (_source.startsWith("volumechg")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = QString("Absolute volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
data->name = QString("Absolute volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("quotes/volume")) {
|
} else if (_source.startsWith("volume")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = QString("Volume for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
data->name = QString("Volume for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("quotes/percvolumechg")) {
|
} else if (_source.startsWith("percvolumechg")) {
|
||||||
data->min = -100.0;
|
data->min = -100.0;
|
||||||
data->max = 100.0;
|
data->max = 100.0;
|
||||||
data->name = QString("Volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
data->name = QString("Volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
|
||||||
@ -118,12 +116,12 @@ QStringList QuotesSource::getSources()
|
|||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
for (auto &item : m_extQuotes->activeItems()) {
|
for (auto &item : m_extQuotes->activeItems()) {
|
||||||
sources.append(QString("quotes/%1").arg(item->tag("price")));
|
sources.append(item->tag("price"));
|
||||||
sources.append(QString("quotes/%1").arg(item->tag("pricechg")));
|
sources.append(item->tag("pricechg"));
|
||||||
sources.append(QString("quotes/%1").arg(item->tag("percpricechg")));
|
sources.append(item->tag("percpricechg"));
|
||||||
sources.append(QString("quotes/%1").arg(item->tag("volume")));
|
sources.append(item->tag("volume"));
|
||||||
sources.append(QString("quotes/%1").arg(item->tag("volumechg")));
|
sources.append(item->tag("volumechg"));
|
||||||
sources.append(QString("quotes/%1").arg(item->tag("percvolumechg")));
|
sources.append(item->tag("percvolumechg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
|
@ -48,14 +48,12 @@ QVariant RequestSource::data(const QString &_source)
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
int ind = index(_source);
|
int ind = index(_source);
|
||||||
auto service = _source;
|
if (!m_values.contains(_source)) {
|
||||||
service.remove("network/");
|
|
||||||
if (!m_values.contains(service)) {
|
|
||||||
QVariantHash data = m_extNetRequest->itemByTagNumber(ind)->run();
|
QVariantHash data = m_extNetRequest->itemByTagNumber(ind)->run();
|
||||||
for (auto &key : data.keys())
|
for (auto &key : data.keys())
|
||||||
m_values[key] = data[key];
|
m_values[key] = data[key];
|
||||||
}
|
}
|
||||||
QVariant value = m_values.take(service);
|
QVariant value = m_values.take(_source);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,7 +64,7 @@ KSysGuard::SensorInfo *RequestSource::initialData(const QString &_source) const
|
|||||||
|
|
||||||
int ind = index(_source);
|
int ind = index(_source);
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source.startsWith("network/response")) {
|
if (_source.startsWith("response")) {
|
||||||
data->name = QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq());
|
data->name = QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
@ -86,7 +84,7 @@ QStringList RequestSource::getSources()
|
|||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
for (auto &item : m_extNetRequest->activeItems())
|
for (auto &item : m_extNetRequest->activeItems())
|
||||||
sources.append(QString("network/%1").arg(item->tag("response")));
|
sources.append(item->tag("response"));
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
@ -59,13 +59,13 @@ KSysGuard::SensorInfo *SystemInfoSource::initialData(const QString &_source) con
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source == "system/brightness") {
|
if (_source == "brightness") {
|
||||||
data->min = 0.0;
|
data->min = 0.0;
|
||||||
data->max = 100.0;
|
data->max = 100.0;
|
||||||
data->name = "Screen brightness";
|
data->name = "Screen brightness";
|
||||||
data->variantType = QVariant::Double;
|
data->variantType = QVariant::Double;
|
||||||
data->unit = KSysGuard::UnitPercent;
|
data->unit = KSysGuard::UnitPercent;
|
||||||
} else if (_source == "system/volume") {
|
} else if (_source == "volume") {
|
||||||
data->min = 0.0;
|
data->min = 0.0;
|
||||||
data->max = 100.0;
|
data->max = 100.0;
|
||||||
data->name = "Master volume";
|
data->name = "Master volume";
|
||||||
@ -79,16 +79,16 @@ KSysGuard::SensorInfo *SystemInfoSource::initialData(const QString &_source) con
|
|||||||
|
|
||||||
void SystemInfoSource::run()
|
void SystemInfoSource::run()
|
||||||
{
|
{
|
||||||
m_values["system/brightness"] = SystemInfoSource::getCurrentBrightness();
|
m_values["brightness"] = SystemInfoSource::getCurrentBrightness();
|
||||||
m_values["system/volume"] = SystemInfoSource::getCurrentVolume();
|
m_values["volume"] = SystemInfoSource::getCurrentVolume();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QStringList SystemInfoSource::sources() const
|
QStringList SystemInfoSource::sources() const
|
||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
sources.append("system/brightness");
|
sources.append("brightness");
|
||||||
sources.append("system/volume");
|
sources.append("volume");
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
@ -100,24 +100,24 @@ QVariant SystemInfoSource::fromDBusVariant(const QVariant &value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float SystemInfoSource::getCurrentBrightness()
|
double SystemInfoSource::getCurrentBrightness()
|
||||||
{
|
{
|
||||||
qCDebug(LOG_ESS) << "Get current brightness";
|
qCDebug(LOG_ESS) << "Get current brightness";
|
||||||
|
|
||||||
auto maxBrightness
|
auto maxBrightness
|
||||||
= sendDBusRequest("org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
|
= sendDBusRequest("org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
|
||||||
"org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightnessMax")
|
"org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightnessMax")
|
||||||
.toFloat();
|
.toDouble();
|
||||||
auto brightness
|
auto brightness
|
||||||
= sendDBusRequest("org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
|
= sendDBusRequest("org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
|
||||||
"org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightness")
|
"org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightness")
|
||||||
.toFloat();
|
.toDouble();
|
||||||
|
|
||||||
return std::round(100.0f * brightness / maxBrightness);
|
return std::round(100.0 * brightness / maxBrightness);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float SystemInfoSource::getCurrentVolume()
|
double SystemInfoSource::getCurrentVolume()
|
||||||
{
|
{
|
||||||
qCDebug(LOG_ESS) << "Get current volume";
|
qCDebug(LOG_ESS) << "Get current volume";
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ float SystemInfoSource::getCurrentVolume()
|
|||||||
|
|
||||||
if (currentMixer.isEmpty()) {
|
if (currentMixer.isEmpty()) {
|
||||||
qCWarning(LOG_ESS) << "Mixer is empty";
|
qCWarning(LOG_ESS) << "Mixer is empty";
|
||||||
return std::numeric_limits<float>::quiet_NaN();
|
return std::numeric_limits<double>::quiet_NaN();
|
||||||
}
|
}
|
||||||
currentMixer.replace(":", "_").replace(".", "_").replace("-", "_");
|
currentMixer.replace(":", "_").replace(".", "_").replace("-", "_");
|
||||||
|
|
||||||
@ -140,14 +140,14 @@ float SystemInfoSource::getCurrentVolume()
|
|||||||
.toString();
|
.toString();
|
||||||
if (currentControl.isEmpty()) {
|
if (currentControl.isEmpty()) {
|
||||||
qCWarning(LOG_ESS) << "Control is empty";
|
qCWarning(LOG_ESS) << "Control is empty";
|
||||||
return std::numeric_limits<float>::quiet_NaN();
|
return std::numeric_limits<double>::quiet_NaN();
|
||||||
}
|
}
|
||||||
currentControl.replace(":", "_").replace(".", "_").replace("-", "_");
|
currentControl.replace(":", "_").replace(".", "_").replace("-", "_");
|
||||||
|
|
||||||
auto path = QString("/Mixers/%1/%2").arg(currentMixer).arg(currentControl);
|
auto path = QString("/Mixers/%1/%2").arg(currentMixer).arg(currentControl);
|
||||||
return fromDBusVariant(sendDBusRequest("org.kde.kmix", path, "org.freedesktop.DBus.Properties", "Get",
|
return fromDBusVariant(sendDBusRequest("org.kde.kmix", path, "org.freedesktop.DBus.Properties", "Get",
|
||||||
QVariantList({"org.kde.KMix.Control", "volume"})))
|
QVariantList({"org.kde.KMix.Control", "volume"})))
|
||||||
.toFloat();
|
.toDouble();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ private:
|
|||||||
// configuration and values
|
// configuration and values
|
||||||
QVariantHash m_values;
|
QVariantHash m_values;
|
||||||
static QVariant fromDBusVariant(const QVariant &value);
|
static QVariant fromDBusVariant(const QVariant &value);
|
||||||
static float getCurrentBrightness();
|
static double getCurrentBrightness();
|
||||||
static float getCurrentVolume();
|
static double getCurrentVolume();
|
||||||
static QVariant sendDBusRequest(const QString &destination, const QString &path, const QString &interface,
|
static QVariant sendDBusRequest(const QString &destination, const QString &path, const QString &interface,
|
||||||
const QString &method, const QVariantList &args = QVariantList());
|
const QString &method, const QVariantList &args = QVariantList());
|
||||||
};
|
};
|
||||||
|
@ -75,7 +75,7 @@ QStringList UpgradeSource::getSources()
|
|||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
for (auto &item : m_extUpgrade->activeItems())
|
for (auto &item : m_extUpgrade->activeItems())
|
||||||
sources.append(QString("upgrade/%1").arg(item->tag("pkgcount")));
|
sources.append(item->tag("pkgcount"));
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
}
|
}
|
||||||
|
@ -48,14 +48,12 @@ QVariant WeatherSource::data(const QString &_source)
|
|||||||
qCDebug(LOG_ESS) << "Source" << _source;
|
qCDebug(LOG_ESS) << "Source" << _source;
|
||||||
|
|
||||||
int ind = index(_source);
|
int ind = index(_source);
|
||||||
auto service = _source;
|
if (!m_values.contains(_source)) {
|
||||||
service.remove("weather/");
|
|
||||||
if (!m_values.contains(service)) {
|
|
||||||
QVariantHash data = m_extWeather->itemByTagNumber(ind)->run();
|
QVariantHash data = m_extWeather->itemByTagNumber(ind)->run();
|
||||||
for (auto &key : data.keys())
|
for (auto &key : data.keys())
|
||||||
m_values[key] = data[key];
|
m_values[key] = data[key];
|
||||||
}
|
}
|
||||||
QVariant value = m_values.take(service);
|
QVariant value = m_values.take(_source);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,35 +64,35 @@ KSysGuard::SensorInfo *WeatherSource::initialData(const QString &_source) const
|
|||||||
|
|
||||||
int ind = index(_source);
|
int ind = index(_source);
|
||||||
auto data = new KSysGuard::SensorInfo();
|
auto data = new KSysGuard::SensorInfo();
|
||||||
if (_source.startsWith("weather/weatherId")) {
|
if (_source.startsWith("weatherId")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 1000;
|
data->max = 1000;
|
||||||
data->name = QString("Numeric weather ID for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
data->name = QString("Numeric weather ID for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("weather/weather")) {
|
} else if (_source.startsWith("weather")) {
|
||||||
data->name = QString("ID string map for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
data->name = QString("ID string map for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("weather/humidity")) {
|
} else if (_source.startsWith("humidity")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 100;
|
data->max = 100;
|
||||||
data->name = QString("Humidity for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
data->name = QString("Humidity for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitPercent;
|
data->unit = KSysGuard::UnitPercent;
|
||||||
} else if (_source.startsWith("weather/pressure")) {
|
} else if (_source.startsWith("pressure")) {
|
||||||
data->min = 0;
|
data->min = 0;
|
||||||
data->max = 0;
|
data->max = 0;
|
||||||
data->name = QString("Atmospheric pressure for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
data->name = QString("Atmospheric pressure for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Int;
|
data->variantType = QVariant::Int;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
} else if (_source.startsWith("weather/temperature")) {
|
} else if (_source.startsWith("temperature")) {
|
||||||
data->min = 0.0;
|
data->min = 0.0;
|
||||||
data->max = 0.0;
|
data->max = 0.0;
|
||||||
data->name = QString("Temperature for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
data->name = QString("Temperature for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::Double;
|
data->variantType = QVariant::Double;
|
||||||
data->unit = KSysGuard::UnitCelsius;
|
data->unit = KSysGuard::UnitCelsius;
|
||||||
} else if (_source.startsWith("weather/timestamp")) {
|
} else if (_source.startsWith("timestamp")) {
|
||||||
data->name = QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
data->name = QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
|
||||||
data->variantType = QVariant::String;
|
data->variantType = QVariant::String;
|
||||||
data->unit = KSysGuard::UnitNone;
|
data->unit = KSysGuard::UnitNone;
|
||||||
@ -114,12 +112,12 @@ QStringList WeatherSource::getSources()
|
|||||||
{
|
{
|
||||||
QStringList sources;
|
QStringList sources;
|
||||||
for (auto &item : m_extWeather->activeItems()) {
|
for (auto &item : m_extWeather->activeItems()) {
|
||||||
sources.append(QString("weather/%1").arg(item->tag("weatherId")));
|
sources.append(item->tag("weatherId"));
|
||||||
sources.append(QString("weather/%1").arg(item->tag("weather")));
|
sources.append(item->tag("weather"));
|
||||||
sources.append(QString("weather/%1").arg(item->tag("humidity")));
|
sources.append(item->tag("humidity"));
|
||||||
sources.append(QString("weather/%1").arg(item->tag("pressure")));
|
sources.append(item->tag("pressure"));
|
||||||
sources.append(QString("weather/%1").arg(item->tag("temperature")));
|
sources.append(item->tag("temperature"));
|
||||||
sources.append(QString("weather/%1").arg(item->tag("timestamp")));
|
sources.append(item->tag("timestamp"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return sources;
|
return sources;
|
||||||
|
Loading…
Reference in New Issue
Block a user