port dataengin

This commit is contained in:
2024-03-15 18:01:03 +02:00
parent 423597dbd9
commit 42c11a6b60
49 changed files with 490 additions and 502 deletions

View File

@ -1,4 +1,4 @@
set(SUBPROJECT plasma_dataengine_extsysmon)
set(SUBPROJECT ksystemstats_plugin_extsysmon)
message(STATUS "Subproject ${SUBPROJECT}")
add_definitions(-DTRANSLATION_DOMAIN=\"plasma_applet_org.kde.plasma.awesomewidget\")
@ -12,15 +12,10 @@ include_directories(
${Kf6_INCLUDE}
)
file(GLOB SUBPROJECT_DESKTOP_IN *.desktop)
file(RELATIVE_PATH SUBPROJECT_DESKTOP ${CMAKE_SOURCE_DIR} ${SUBPROJECT_DESKTOP_IN})
file(GLOB SUBPROJECT_SOURCE *.cpp ${CMAKE_SOURCE_DIR}/*.cpp)
file(GLOB SUBPROJECT_HEADER *.h)
file(GLOB SUBPROJECT_CONF *.conf)
# prepare
configure_file(${SUBPROJECT_DESKTOP_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP})
# make
add_library(${SUBPROJECT} MODULE ${SUBPROJECT_SOURCE} ${SUBPROJECT_HEADER})
target_link_libraries(${SUBPROJECT}
@ -28,6 +23,5 @@ target_link_libraries(${SUBPROJECT}
${Qt_LIBRARIES} ${Kf6_LIBRARIES})
# install
install(TARGETS ${SUBPROJECT} DESTINATION ${PLUGIN_INSTALL_DIR}/plasma/dataengine)
#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP} DESTINATION ${SERVICES_INSTALL_DIR})
install(TARGETS ${SUBPROJECT} DESTINATION ${KDE_INSTALL_PLUGINDIR}/ksystemstats)
install(FILES ${SUBPROJECT_CONF} DESTINATION ${KDE_INSTALL_CONFDIR})

View File

@ -17,6 +17,7 @@
#include "extsysmon.h"
#include <KPluginFactory>
#include <QFile>
#include <QRegularExpression>
#include <QSettings>
@ -29,21 +30,16 @@
ExtendedSysMon::ExtendedSysMon(QObject *_parent, const QVariantList &_args)
: Plasma::DataEngine(_parent, _args)
: KSysGuard::SensorPlugin(_parent, _args)
{
Q_UNUSED(_args)
qSetMessagePattern(AWDebug::LOG_FORMAT);
qCDebug(LOG_ESM) << __PRETTY_FUNCTION__;
for (auto &metadata : AWDebug::getBuildData())
qCDebug(LOG_ESM) << metadata;
setMinimumPollingInterval(333);
readConfiguration();
// init aggregator
m_aggregator = new ExtSysMonAggregator(this, m_configuration);
for (auto &source : m_aggregator->sources())
setData(source, m_aggregator->initialData(source));
addContainer(new ExtSysMonAggregator("extsysmon", "extsysmon", this, m_configuration));
}
@ -53,35 +49,9 @@ ExtendedSysMon::~ExtendedSysMon()
}
QStringList ExtendedSysMon::sources() const
void ExtendedSysMon::update()
{
return m_aggregator->sources();
}
bool ExtendedSysMon::sourceRequestEvent(const QString &_source)
{
qCDebug(LOG_ESM) << "Source" << _source;
return updateSourceEvent(_source);
}
bool ExtendedSysMon::updateSourceEvent(const QString &_source)
{
qCDebug(LOG_ESM) << "Source" << _source;
if (m_aggregator->hasSource(_source)) {
QVariant data = m_aggregator->data(_source);
if (data.isNull())
return false;
setData(_source, "value", data);
} else {
qCWarning(LOG_ESM) << "Unknown source" << _source;
return false;
}
return true;
// m_aggregator->update();
}
@ -150,6 +120,6 @@ QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QStri
}
K_EXPORT_PLASMA_DATAENGINE_WITH_JSON(extsysmon, ExtendedSysMon, "plasma-dataengine-extsysmon.json")
K_PLUGIN_CLASS_WITH_JSON(ExtendedSysMon, "metadata.json")
#include "extsysmon.moc"

View File

@ -18,12 +18,10 @@
#ifndef EXTSYSMON_H
#define EXTSYSMON_H
#include <Plasma/Plasma/DataEngine>
#include <ksysguard/systemstats/SensorPlugin.h>
class ExtSysMonAggregator;
class ExtendedSysMon : public Plasma::DataEngine
class ExtendedSysMon : public KSysGuard::SensorPlugin
{
Q_OBJECT
@ -31,14 +29,12 @@ public:
explicit ExtendedSysMon(QObject *_parent, const QVariantList &_args);
~ExtendedSysMon() override;
protected:
[[nodiscard]] QStringList sources() const override;
bool sourceRequestEvent(const QString &_source) override;
bool updateSourceEvent(const QString &_source) override;
[[nodiscard]] QString providerName() const override { return QStringLiteral("extsysmon"); }
void update() override;
private:
// configuration
ExtSysMonAggregator *m_aggregator = nullptr;
QHash<QString, QString> m_configuration;
// methods
void readConfiguration();

View File

@ -21,6 +21,7 @@
#include "batterysource.h"
#include "customsource.h"
#include "desktopsource.h"
#include "extsysmonsensor.h"
#include "gpuloadsource.h"
#include "gputempsource.h"
#include "hddtempsource.h"
@ -35,8 +36,9 @@
#include "weathersource.h"
ExtSysMonAggregator::ExtSysMonAggregator(QObject *_parent, const QHash<QString, QString> &_config)
: QObject(_parent)
ExtSysMonAggregator::ExtSysMonAggregator(const QString &_id, const QString &_name, KSysGuard::SensorPlugin *_parent,
const QHash<QString, QString> &_config)
: KSysGuard::SensorContainer(_id, _name, _parent)
{
qCDebug(LOG_ESM) << __PRETTY_FUNCTION__;
@ -44,111 +46,73 @@ ExtSysMonAggregator::ExtSysMonAggregator(QObject *_parent, const QHash<QString,
}
ExtSysMonAggregator::~ExtSysMonAggregator()
{
qCDebug(LOG_ESM) << __PRETTY_FUNCTION__;
m_map.clear();
}
QVariant ExtSysMonAggregator::data(const QString &_source) const
{
qCDebug(LOG_ESM) << "Source" << _source;
return m_map[_source]->data(_source);
}
bool ExtSysMonAggregator::hasSource(const QString &_source) const
{
qCDebug(LOG_ESM) << "Source" << _source;
return m_map.contains(_source);
}
QVariantMap ExtSysMonAggregator::initialData(const QString &_source) const
{
qCDebug(LOG_ESM) << "Source" << _source;
return hasSource(_source) ? m_map[_source]->initialData(_source) : QVariantMap();
}
QStringList ExtSysMonAggregator::sources() const
{
return m_map.keys();
}
void ExtSysMonAggregator::init(const QHash<QString, QString> &_config)
{
qCDebug(LOG_ESM) << "Configuration" << _config;
// battery
AbstractExtSysMonSource *batteryItem = new BatterySource(this, QStringList() << _config["ACPIPATH"]);
auto batteryItem = new BatterySource(this, {_config["ACPIPATH"]});
for (auto &source : batteryItem->sources())
m_map[source] = batteryItem;
addObject(new ExtSysMonSensor(this, source, batteryItem));
// custom
AbstractExtSysMonSource *customItem = new CustomSource(this, QStringList());
auto customItem = new CustomSource(this, {});
for (auto &source : customItem->sources())
m_map[source] = customItem;
addObject(new ExtSysMonSensor(this, source, customItem));
// desktop
AbstractExtSysMonSource *desktopItem = new DesktopSource(this, QStringList());
auto desktopItem = new DesktopSource(this, {});
for (auto &source : desktopItem->sources())
m_map[source] = desktopItem;
addObject(new ExtSysMonSensor(this, source, desktopItem));
// gpu load
AbstractExtSysMonSource *gpuLoadItem = new GPULoadSource(this, QStringList({_config["GPUDEV"]}));
auto gpuLoadItem = new GPULoadSource(this, {_config["GPUDEV"]});
for (auto &source : gpuLoadItem->sources())
m_map[source] = gpuLoadItem;
addObject(new ExtSysMonSensor(this, source, gpuLoadItem));
// gpu temperature
AbstractExtSysMonSource *gpuTempItem = new GPUTemperatureSource(this, QStringList({_config["GPUDEV"]}));
auto gpuTempItem = new GPUTemperatureSource(this, {_config["GPUDEV"]});
for (auto &source : gpuTempItem->sources())
m_map[source] = gpuTempItem;
addObject(new ExtSysMonSensor(this, source, gpuTempItem));
// hdd temperature
AbstractExtSysMonSource *hddTempItem
= new HDDTemperatureSource(this, QStringList({_config["HDDDEV"], _config["HDDTEMPCMD"]}));
auto hddTempItem
= new HDDTemperatureSource(this, {_config["HDDDEV"], _config["HDDTEMPCMD"]});
for (auto &source : hddTempItem->sources())
m_map[source] = hddTempItem;
addObject(new ExtSysMonSensor(this, source, hddTempItem));
// network
AbstractExtSysMonSource *networkItem = new NetworkSource(this, QStringList());
auto networkItem = new NetworkSource(this, QStringList());
for (auto &source : networkItem->sources())
m_map[source] = networkItem;
addObject(new ExtSysMonSensor(this, source, networkItem));
// player
AbstractExtSysMonSource *playerItem
= new PlayerSource(this, QStringList({_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"],
_config["MPRIS"], _config["PLAYERSYMBOLS"]}));
auto playerItem
= new PlayerSource(this, {_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"],
_config["MPRIS"], _config["PLAYERSYMBOLS"]});
for (auto &source : playerItem->sources())
m_map[source] = playerItem;
addObject(new ExtSysMonSensor(this, source, playerItem));
// processes
AbstractExtSysMonSource *processesItem = new ProcessesSource(this, QStringList());
auto processesItem = new ProcessesSource(this, {});
for (auto &source : processesItem->sources())
m_map[source] = processesItem;
addObject(new ExtSysMonSensor(this, source, processesItem));
// network request
AbstractExtSysMonSource *requestItem = new RequestSource(this, QStringList());
auto requestItem = new RequestSource(this, {});
for (auto &source : requestItem->sources())
m_map[source] = requestItem;
addObject(new ExtSysMonSensor(this, source, requestItem));
// quotes
AbstractExtSysMonSource *quotesItem = new QuotesSource(this, QStringList());
auto quotesItem = new QuotesSource(this, {});
for (auto &source : quotesItem->sources())
m_map[source] = quotesItem;
addObject(new ExtSysMonSensor(this, source, quotesItem));
// system
AbstractExtSysMonSource *systemItem = new SystemInfoSource(this, QStringList());
auto systemItem = new SystemInfoSource(this, {});
for (auto &source : systemItem->sources())
m_map[source] = systemItem;
addObject(new ExtSysMonSensor(this, source, systemItem));
// upgrade
AbstractExtSysMonSource *upgradeItem = new UpgradeSource(this, QStringList());
auto upgradeItem = new UpgradeSource(this, {});
for (auto &source : upgradeItem->sources())
m_map[source] = upgradeItem;
addObject(new ExtSysMonSensor(this, source, upgradeItem));
// weather
AbstractExtSysMonSource *weatherItem = new WeatherSource(this, QStringList());
auto weatherItem = new WeatherSource(this, {});
for (auto &source : weatherItem->sources())
m_map[source] = weatherItem;
addObject(new ExtSysMonSensor(this, source, weatherItem));
#ifdef BUILD_LOAD
// additional load source
AbstractExtSysMonSource *loadItem = new LoadSource(this, QStringList());
auto loadItem = new LoadSource(this, QStringList());
for (auto &source : loadItem->sources())
m_map[source] = loadItem;
addObject(new ExtSysMonSensor(this, source, loadItem));
#endif /* BUILD_LOAD */
}

View File

@ -19,25 +19,20 @@
#define EXTSYSMONAGGREGATOR_H
#include <QObject>
#include <ksysguard/systemstats/SensorContainer.h>
#include "abstractextsysmonsource.h"
class ExtSysMonAggregator : public QObject
class ExtSysMonAggregator : public KSysGuard::SensorContainer
{
Q_OBJECT
public:
explicit ExtSysMonAggregator(QObject *_parent, const QHash<QString, QString> &_config);
~ExtSysMonAggregator() override;
[[nodiscard]] QVariant data(const QString &_source) const;
[[nodiscard]] bool hasSource(const QString &_source) const;
[[nodiscard]] QVariantMap initialData(const QString &_source) const;
[[nodiscard]] QStringList sources() const;
explicit ExtSysMonAggregator(const QString &_id, const QString &_name, KSysGuard::SensorPlugin *_parent,
const QHash<QString, QString> &_config);
private:
void init(const QHash<QString, QString> &_config);
QHash<QString, AbstractExtSysMonSource *> m_map;
};

View File

@ -0,0 +1,3 @@
{
"providerName": "extsysmon"
}

View File

@ -1,16 +0,0 @@
[Desktop Entry]
Encoding=UTF-8
Name=Extended SystemMonitor
Comment=Adds some additional functions to System DataEngine
ServiceTypes=Plasma/DataEngine
Type=Service
Icon=utilities-system-monitor
X-KDE-Library=plasma_dataengine_extsysmon
X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis
X-KDE-PluginInfo-Email=esalexeev@gmail.com
X-KDE-PluginInfo-Name=extsysmon
X-KDE-PluginInfo-Version=@PROJECT_VERSION@
X-KDE-PluginInfo-Category=System Information
X-KDE-PluginInfo-License=GPL3

View File

@ -1,20 +0,0 @@
{
"KPlugin": {
"Authors": [
{
"Email": "esalexeev@gmail.com",
"Name": "Evgeniy Alekseev aka arcanis"
}
],
"Category": "System Information",
"Description": "Adds some additional functions to System DataEngine",
"Icon": "utilities-system-monitor",
"Id": "extsysmon",
"License": "GPL3",
"Name": "Extended SystemMonitor",
"ServiceTypes": [
"Plasma/DataEngine"
],
"Version": "@PROJECT_VERSION@"
}
}