some work on porting

This commit is contained in:
arcan1s 2015-01-24 19:16:00 +03:00
parent 43efbbba72
commit c850aaf2a3
14 changed files with 415 additions and 338 deletions

View File

@ -13,4 +13,4 @@ include (KDECMakeSettings)
include (KDECompilerSettings)
add_subdirectory (plugin)
plasma_install_package (package org.kde.plasma.awesome-widget)
plasma_install_package (package org.kde.plasma.awesomewidget)

View File

@ -21,7 +21,7 @@ import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.private.awesome-widget 1.0
import org.kde.plasma.private.awesomewidget 1.0
Item {
@ -59,36 +59,27 @@ Item {
PlasmaCore.DataSource {
id: systemmonitorDE
engine: "systemmonitor"
Component.onCompleted: {
if (debug) console.log("[main::onCompleted] : Connect sources to systemmonitor")
systemmonitorDE.connectAllSources(main, plasmoid.configuration.interval)
}
connectedSources: systemmonitorDE.sources
interval: plasmoid.configuration.autoUpdateInterval
onNewData: {
if (debug) console.log("[main::onNewData] : Update source " + sourceName)
if ((data.value == "N\\A") || (data.value == "")) return
// update
info[sourceName] = data.value
}
}
PlasmaCore.DataSource {
id: extsysmonDE
engine: "ext-sysmon"
Component.onCompleted: {
if (debug) console.log("[main::onCompleted] : Connect sources to ext-sysmon")
extsysmonDE.connectAllSources(main, plasmoid.configuration.interval)
}
connectedSources: extsysmonDE.sources
interval: plasmoid.configuration.autoUpdateInterval
onNewData: {
if (debug) console.log("[main::onNewData] : Update source " + sourceName)
if (sourceName == "update") needUpdate()
// if (sourceName == "update") needUpdate()
}
}

View File

@ -20,7 +20,7 @@ X-Plasma-RemoteLocation=
X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis
X-KDE-PluginInfo-Email=esalexeev@gmail.com
X-KDE-PluginInfo-Name=org.kde.plasma.awesome-widget
X-KDE-PluginInfo-Name=org.kde.plasma.awesomewidget
X-KDE-PluginInfo-Version=@PROJECT_VERSION@
X-KDE-PluginInfo-Website=http://arcanis.name/projects/awesome-widgets/
X-KDE-PluginInfo-Category=System Information

View File

@ -35,6 +35,6 @@ qt5_wrap_ui (SUBPROJECT_UI_HEADER ${SUBPROJECT_UI})
add_library (${PLUGIN_NAME} SHARED ${SUBPROJECT_SOURCE} ${SUBPROJECT_UI_HEADER} ${TASK_MOC_SOURCE})
target_link_libraries (${PLUGIN_NAME} ${Qt_LIBRARIES} ${Kf5_LIBRARIES})
install (TARGETS ${PLUGIN_NAME} DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/awesome-widget)
install (FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/awesome-widget)
install (TARGETS ${PLUGIN_NAME} DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/awesomewidget)
install (FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/awesomewidget)
install (FILES ${SUBPROJECT_NOTIFY} DESTINATION ${KNOTIFYRC_INSTALL_DIR})

View File

@ -128,7 +128,7 @@ QMap<QString, QVariant> AWActions::updateDataEngineConfiguration(QMap<QString, Q
if (debug) qDebug() << PDEBUG;
for (int i=rawConfig[QString("PKGNULL")].toString().split(QString(","), QString::SkipEmptyParts).count();
i<rawConfig[QString("PKGCMD")].toString().split(QString(","), QString::SkipEmptyParts).count()+1;
i<rawConfig[QString("PKGCMD")].toString().split(QString(","), QString::SkipEmptyParts).count();
i++)
rawConfig[QString("PKGNULL")].toString() += QString(",0");

View File

@ -1,203 +0,0 @@
/***************************************************************************
* This file is part of awesome-widgets *
* *
* awesome-widgets is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* awesome-widgets is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#include "awdesources.h"
#include <QDebug>
#include <QProcessEnvironment>
#include <QRegExp>
#include <pdebug/pdebug.h>
AWDESources::AWDESources(QObject *parent, const QString pattern,
const QStringList foundKeys,
const QStringList foundBars,
const QMap<QString, QVariant> counts,
const QMap<QString, QVariant> paths,
const QMap<QString, QVariant> tooltipBools)
: QObject(parent),
m_pattern(pattern),
m_foundKeys(foundKeys),
m_foundBars(foundBars),
m_counts(counts),
m_paths(paths),
m_tooltipBools(tooltipBools)
{
// debug
QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
QString debugEnv = environment.value(QString("DEBUG"), QString("no"));
debug = (debugEnv == QString("yes"));
}
AWDESources::~AWDESources()
{
if (debug) qDebug() << PDEBUG;
}
QStringList AWDESources::getSourcesForExtSystemMonitor()
{
if (debug) qDebug() << PDEBUG;
QStringList sources;
QRegExp regExp;
// battery
regExp = QRegExp(QString("(^|bar[0-9].*)(ac|bat.*)"));
if ((m_foundKeys.indexOf(regExp) > -1) ||
(m_foundBars.indexOf(regExp) > -1) ||
(m_tooltipBools[QString("batteryTooltip")].toBool()))
sources.append(QString("battery"));
// custom command
regExp = QRegExp(QString("custom.*"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("custom"));
// desktop
regExp = QRegExp(QString(".*desktop.*"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("desktop"));
// gpu
regExp = QRegExp(QString("(^|bar[0-9].*)gpu"));
if ((m_foundKeys.indexOf(regExp) > -1) ||
(m_foundBars.indexOf(regExp) > -1))
sources.append(QString("gpu"));
// gpu temp
regExp = QRegExp(QString("gputemp"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("gputemp"));
// hdd temp
regExp = QRegExp(QString("hddtemp.*"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("hddtemp"));
// package manager
regExp = QRegExp(QString("pkgcount.*"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("pkg"));
// player
regExp = QRegExp(QString("(album|artist|duration|progress|title)"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("player"));
// ps
regExp = QRegExp(QString("ps.*"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("ps"));
// update == always true
sources.append(QString("update"));
return sources;
}
QStringList AWDESources::getSourcesForSystemMonitor()
{
if (debug) qDebug() << PDEBUG;
QStringList sources;
QRegExp regExp;
// cpu
regExp = QRegExp(QString("(^|bar[0-9].*)cpu(?!cl).*"));
if ((m_foundKeys.indexOf(regExp) > -1) ||
(m_foundBars.indexOf(regExp) > -1) ||
(m_tooltipBools[QString("cpuTooltip")].toBool())) {
sources.append(QString("cpu/system/TotalLoad"));
for (int i=0; i<m_counts[QString("cpu")].toInt(); i++)
sources.append(QString("cpu/cpu") + QString::number(i) + QString("/TotalLoad"));
}
// cpuclock
regExp = QRegExp(QString("cpucl.*"));
if ((m_foundKeys.indexOf(regExp) > -1) ||
(m_foundBars.indexOf(regExp) > -1) ||
(m_tooltipBools[QString("cpuclTooltip")].toBool())) {
sources.append(QString("cpu/system/AverageClock"));
for (int i=0; i<m_counts[QString("cpu")].toInt(); i++)
sources.append(QString("cpu/cpu") + QString::number(i) + QString("/clock"));
}
// disk speed
regExp = QRegExp(QString("hdd[rw].*"));
if (m_foundKeys.indexOf(regExp) > -1)
for (int i=0; i<m_paths[QString("disk")].toString().split(QString("@@")).count(); i++) {
sources.append(m_paths[QString("disk")].toString().split(QString("@@"))[i] + QString("/Rate/rblk"));
sources.append(m_paths[QString("disk")].toString().split(QString("@@"))[i] + QString("/Rate/wblk"));
}
// fan
regExp = QRegExp(QString("fan.*"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(m_paths[QString("fanDevice")].toString().split(QString("@@")));
// mount
regExp = QRegExp(QString("(^|bar[0-9].*)hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb).*"));
if ((m_foundKeys.indexOf(regExp) > -1) ||
(m_foundBars.indexOf(regExp) > -1))
for (int i=0; i<m_paths[QString("mount")].toString().split(QString("@@")).count(); i++) {
sources.append(QString("partitions") + m_paths[QString("mount")].toString().split(QString("@@"))[i] + QString("/filllevel"));
sources.append(QString("partitions") + m_paths[QString("mount")].toString().split(QString("@@"))[i] + QString("/freespace"));
sources.append(QString("partitions") + m_paths[QString("mount")].toString().split(QString("@@"))[i] + QString("/usedspace"));
}
// memory
regExp = QRegExp(QString("(^|bar[0-9].*)mem.*"));
if ((m_foundKeys.indexOf(regExp) > -1) ||
(m_foundBars.indexOf(regExp) > -1) ||
(m_tooltipBools[QString("memTooltip")].toBool())) {
sources.append(QString("mem/physical/free"));
sources.append(QString("mem/physical/used"));
sources.append(QString("mem/physical/application"));
}
// network
regExp = QRegExp(QString("(down|up|netdev)"));
if ((m_foundKeys.indexOf(regExp) > -1) ||
(m_tooltipBools[QString("downTooltip")].toBool())) {
sources.append(QString("network/interfaces/") + m_paths[QString("netdev")].toString() + QString("/transmitter/data"));
sources.append(QString("network/interfaces/") + m_paths[QString("netdev")].toString() + QString("/receiver/data"));
}
// swap
regExp = QRegExp(QString("(^|bar[0-9].*)swap.*"));
if ((m_foundKeys.indexOf(regExp) > -1) ||
(m_foundBars.indexOf(regExp) > -1) ||
(m_paths[QString("swapTooltip")].toBool())) {
sources.append(QString("mem/swap/free"));
sources.append(QString("mem/swap/used"));
}
// temp
regExp = QRegExp(QString("temp.*"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(m_paths[QString("tempDevice")].toString().split(QString("@@")));
// uptime
regExp = QRegExp(QString("(^|c)uptime"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("system/uptime"));
return sources;
}
QStringList AWDESources::getSourcesForTimeMonitor()
{
if (debug) qDebug() << PDEBUG;
QStringList sources;
QRegExp regExp;
// time
regExp = QRegExp(QString("(^|iso|short|long|c)time"));
if (m_foundKeys.indexOf(regExp) > -1)
sources.append(QString("Local"));
return sources;
}

View File

@ -43,7 +43,7 @@ static QObject *awkeys_singletontype_provider(QQmlEngine *engine, QJSEngine *scr
void AWPlugin::registerTypes(const char *uri)
{
Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.awesome-widget"));
Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.awesomewidget"));
qmlRegisterSingletonType<AWActions>(uri, 1, 0, "AWActions", awactions_singletontype_provider);
qmlRegisterSingletonType<AWKeys>(uri, 1, 0, "AWKeys", awkeys_singletontype_provider);

View File

@ -17,16 +17,18 @@
#include "awkeys.h"
#include <QDateTime>
#include <QDebug>
#include <QDir>
#include <QNetworkInterface>
#include <QProcessEnvironment>
#include <QRegExp>
#include <QStandardPaths>
#include <QThread>
#include <pdebug/pdebug.h>
#include "awdesources.h"
#include "awtooltip.h"
#include "extscript.h"
#include "graphicalitem.h"
#include "version.h"
@ -50,17 +52,23 @@ AWKeys::~AWKeys()
}
void AWKeys::initKeys(const QString pattern)
void AWKeys::initKeys(const QString pattern, const int maxTooltip)
{
if (debug) qDebug() << PDEBUG;
// clear
counts.clear();
keys.clear();
foundBars.clear();
foundKeys.clear();
toolTip = nullptr;
// init
counts = getCounts();
keys = dictKeys();
foundBars = findGraphicalItems(pattern);
foundKeys = findKeys(pattern);
toolTip = new AWToolTip(this, maxTooltip);
}
@ -71,12 +79,10 @@ void AWKeys::initValues()
// clear
extScripts.clear();
graphicalItems.clear();
keys.clear();
// init
extScripts = getExtScripts();
graphicalItems = getGraphicalItems();
keys = dictKeys();
}
@ -118,95 +124,46 @@ int AWKeys::numberCpus()
}
QString AWKeys::parsePattern(const QString pattern, const QMap<QString, QVariant> values)
QString AWKeys::parsePattern(const QString pattern)
{
if (debug) qDebug() << PDEBUG;
QString parsed = pattern;
parsed.replace(QString("$$"), QString("$\\$\\"));
for (int i=0; i<foundKeys.count(); i++)
parsed.replace(QString("$") + foundKeys[i], values[foundKeys[i]].toString());
for (int i=0; i<foundBars.count(); i++)
parsed.replace(QString("$") + foundBars[i], getItemByTag(foundBars[i])->image(values[foundBars[i]].toFloat()));
parsed.replace(QString("$") + foundKeys[i], values[foundKeys[i]]);
for (int i=0; i<foundBars.count(); i++) {
QString key = foundBars[i];
key.remove(QRegExp(QString("bar[0-9]{1,}")));
parsed.replace(QString("$") + foundBars[i], getItemByTag(foundBars[i])->image(values[key].toFloat()));
}
parsed.replace(QString("$\\$\\"), QString("$$"));
return parsed;
}
QStringList AWKeys::sourcesForDataEngine(const QString pattern,
const QMap<QString, QVariant> paths,
const QMap<QString, QVariant> tooltipBools,
const QString dataEngine)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Pattern" << pattern;
if (debug) qDebug() << PDEBUG << ":" << "DataEngine" << dataEngine;
AWDESources *deSources = new AWDESources(this, pattern, foundKeys, foundBars,
counts(), paths, tooltipBools);
QStringList sources;
if (dataEngine == QString("ext-sysmon"))
sources = deSources->getSourcesForExtSystemMonitor();
else if (dataEngine == QString("systemmonitor"))
sources = deSources->getSourcesForSystemMonitor();
else if (dataEngine == QString("time"))
sources = deSources->getSourcesForTimeMonitor();
delete deSources;
if (debug) qDebug() << PDEBUG << ":" << "Sources" << sources;
return sources;
}
float AWKeys::temperature(const float temp, const QString units)
{
if (debug) qDebug() << PDEBUG;
float convertedTemp = temp;
float converted = temp;
if (units == QString("Celsius"))
;
else if (units == QString("Fahrenheit"))
convertedTemp = temp * 9.0 / 5.0 + 32.0;
converted = temp * 9.0 / 5.0 + 32.0;
else if (units == QString("Kelvin"))
convertedTemp = temp + 273.15;
converted = temp + 273.15;
else if (units == QString("Reaumur"))
convertedTemp = temp * 0.8;
converted = temp * 0.8;
else if (units == QString("cm^-1"))
convertedTemp = (temp + 273.15) * 0.695;
converted = (temp + 273.15) * 0.695;
else if (units == QString("kJ/mol"))
convertedTemp = (temp + 273.15) * 8.31;
converted = (temp + 273.15) * 8.31;
else if (units == QString("kcal/mol"))
convertedTemp = (temp + 273.15) * 1.98;
converted = (temp + 273.15) * 1.98;
return convertedTemp;
}
QMap<QString, QVariant> AWKeys::counts()
{
if (debug) qDebug() << PDEBUG;
QMap<QString, QVariant> awCounts;
awCounts[QString("cpu")] = numberCpus();
awCounts[QString("custom")] = getExtScripts().count();
// awCounts[QString("disk")] = configuration[QString("disk")].split(QString("@@")).count();
// awCounts[QString("fan")] = configuration[QString("fanDevice")].split(QString("@@")).count();
// awCounts[QString("hddtemp")] = configuration[QString("hdd")].split(QString("@@")).count();
// awCounts[QString("mount")] = configuration[QString("mount")].split(QString("@@")).count();
// awCounts[QString("pkg")] = deSettings[QString("PKGCMD")].split(QChar(',')).count();
// awCounts[QString("temp")] = configuration[QString("tempDevice")].split(QString("@@")).count();
// awCounts[QString("tooltip")] = 0;
// awCounts[QString("tooltip")] += configuration[QString("cpuTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("cpuclTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("memTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("swapTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("downTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("batteryTooltip")].toInt();
// awCounts[QString("tooltip")] = counts[QString("tooltip")] / 2;
return awCounts;
return converted;
}
@ -214,7 +171,6 @@ QStringList AWKeys::dictKeys()
{
if (debug) qDebug() << PDEBUG;
QMap<QString, QVariant> awCounts = counts();
QStringList allKeys;
// time
allKeys.append(QString("time"));
@ -226,17 +182,17 @@ QStringList AWKeys::dictKeys()
allKeys.append(QString("uptime"));
allKeys.append(QString("cuptime"));
// cpuclock
for (int i=awCounts[QString("cpu")].toInt()-1; i>=0; i--)
for (int i=counts[QString("cpu")].toInt()-1; i>=0; i--)
allKeys.append(QString("cpucl") + QString::number(i));
allKeys.append(QString("cpucl"));
// cpu
for (int i=awCounts[QString("cpu")].toInt()-1; i>=0; i--)
for (int i=counts[QString("cpu")].toInt()-1; i>=0; i--)
allKeys.append(QString("cpu") + QString::number(i));
allKeys.append(QString("cpu"));
// temperature
for (int i=awCounts[QString("temp")].toInt()-1; i>=0; i--)
for (int i=counts[QString("temp")].toInt()-1; i>=0; i--)
allKeys.append(QString("temp") + QString::number(i));
for (int i=awCounts[QString("fan")].toInt()-1; i>=0; i--)
for (int i=counts[QString("fan")].toInt()-1; i>=0; i--)
allKeys.append(QString("fan") + QString::number(i));
// gputemp
allKeys.append(QString("gputemp"));
@ -261,7 +217,7 @@ QStringList AWKeys::dictKeys()
allKeys.append(QString("swaptotgb"));
allKeys.append(QString("swap"));
// hdd
for (int i=awCounts[QString("mount")].toInt()-1; i>=0; i--) {
for (int i=counts[QString("mount")].toInt()-1; i>=0; i--) {
allKeys.append(QString("hddmb") + QString::number(i));
allKeys.append(QString("hddgb") + QString::number(i));
allKeys.append(QString("hddfreemb") + QString::number(i));
@ -271,12 +227,12 @@ QStringList AWKeys::dictKeys()
allKeys.append(QString("hdd") + QString::number(i));
}
// hdd speed
for (int i=awCounts[QString("disk")].toInt()-1; i>=0; i--) {
for (int i=counts[QString("disk")].toInt()-1; i>=0; i--) {
allKeys.append(QString("hddr") + QString::number(i));
allKeys.append(QString("hddw") + QString::number(i));
}
// hdd temp
for (int i=awCounts[QString("hddtemp")].toInt()-1; i>=0; i--) {
for (int i=counts[QString("hddtemp")].toInt()-1; i>=0; i--) {
allKeys.append(QString("hddtemp") + QString::number(i));
allKeys.append(QString("hddtemp") + QString::number(i));
}
@ -286,7 +242,7 @@ QStringList AWKeys::dictKeys()
allKeys.append(QString("netdev"));
// battery
allKeys.append(QString("ac"));
for (int i=awCounts[QString("bat")].toInt()-1; i>=0; i--)
for (int i=counts[QString("bat")].toInt()-1; i>=0; i--)
allKeys.append(QString("bat") + QString::number(i));
allKeys.append(QString("bat"));
// player
@ -300,10 +256,10 @@ QStringList AWKeys::dictKeys()
allKeys.append(QString("pstotal"));
allKeys.append(QString("ps"));
// package manager
for (int i=awCounts[QString("pkg")].toInt()-1; i>=0; i--)
for (int i=counts[QString("pkg")].toInt()-1; i>=0; i--)
allKeys.append(QString("pkgcount") + QString::number(i));
// custom
for (int i=awCounts[QString("custom")].toInt()-1; i>=0; i--)
for (int i=counts[QString("custom")].toInt()-1; i>=0; i--)
allKeys.append(QString("custom") + QString::number(i));
// desktop
allKeys.append(QString("desktop"));
@ -371,6 +327,285 @@ QStringList AWKeys::timeKeys()
}
void AWKeys::setDataBySource(const QString sourceName,
const QMap<QString, QVariant> data,
const QMap<QString, QVariant> params)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Source" << sourceName;
// regular expressions
QRegExp cpuRegExp = QRegExp(QString("cpu/cpu.*/TotalLoad"));
QRegExp cpuclRegExp = QRegExp(QString("cpu/cpu.*/clock"));
QRegExp hddrRegExp = QRegExp(QString("disk/.*/Rate/rblk"));
QRegExp hddwRegExp = QRegExp(QString("disk/.*/Rate/wblk"));
QRegExp mountFillRegExp = QRegExp(QString("partitions/.*/filllevel"));
QRegExp mountFreeRegExp = QRegExp(QString("partitions/.*/freespace"));
QRegExp mountUsedRegExp = QRegExp(QString("partitions/.*/usedspace"));
QRegExp netRecRegExp = QRegExp(QString("network/interfaces/.*/receiver/data"));
QRegExp netTransRegExp = QRegExp(QString("network/interfaces/.*/transmitter/data"));
QRegExp tempRegExp = QRegExp(QString("lmsensors/.*"));
if (sourceName == QString("battery")) {
// battery
for (int i=0; i<data.keys().count(); i++) {
if (data.keys()[i] == QString("ac")) {
values[QString("ac")] = data.keys()[i];
// if (data[QString("ac")].toBool())
// values[QString("ac")] = configuration[QString("acOnline")];
// else
// values[QString("ac")] = configuration[QString("acOffline")];
} else {
values[data.keys()[i]] = QString("%1").arg(data[data.keys()[i]].toFloat(), 3, 'f', 0);
toolTip->setData(QString("bat"), data[data.keys()[i]].toFloat(), data[QString("ac")].toBool());
}
}
} else if (sourceName == QString("cpu/system/TotalLoad")) {
// cpu
values[QString("cpu")] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1);
toolTip->setData(QString("cpu"), data[QString("value")].toFloat());
} else if (sourceName.contains(cpuRegExp)) {
// cpus
QString number = sourceName;
number.remove(QString("cpu/cpu")).remove(QString("/TotalLoad"));
values[QString("cpu") + number] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1);
} else if (sourceName == QString("cpu/system/AverageClock")) {
// cpucl
values[QString("cpucl")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
toolTip->setData(QString("cpucl"), data[QString("value")].toFloat());
} else if (sourceName.contains(cpuclRegExp)) {
// cpucls
QString number = sourceName;
number.remove(QString("cpu/cpu")).remove(QString("/clock"));
values[QString("cpucl") + number] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
} else if (sourceName == QString("custom")) {
// custom
for (int i=0; i<data.keys().count(); i++)
values[data.keys()[i]] = data[data.keys()[i]].toString();
} else if (sourceName == QString("desktop")) {
// desktops
values[QString("desktop")] = data[QString("currentName")].toString();
values[QString("ndesktop")] = QString("%1").arg(data[QString("currentNumber")].toInt());
values[QString("tdesktops")] = QString("%1").arg(data[QString("number")].toInt());
} else if (sourceName.contains(hddrRegExp)) {
// read speed
QString device = sourceName;
device.remove(QString("/Rate/rblk"));
for (int i=0; i<counts[QString("disk")].toInt(); i++)
if (params[QString("disk")].toString().split(QString("@@"))[i] == device) {
values[QString("hddr") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 0);
break;
}
} else if (sourceName.contains(hddwRegExp)) {
// write speed
QString device = sourceName;
device.remove(QString("/Rate/wblk"));
for (int i=0; i<counts[QString("disk")].toInt(); i++)
if (params[QString("disk")].toString().split(QString("@@"))[i] == device) {
values[QString("hddw") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 0);
break;
}
} else if (sourceName == QString("gpu")) {
// gpu load
values[QString("gpu")] = QString("%1").arg(data[QString("GPU")].toFloat(), 5, 'f', 1);
} else if (sourceName == QString("gputemp")) {
// gpu temperature
values[QString("gputemp")] = QString("%1").arg(
temperature(data[QString("GPUTemp")].toFloat(),params[QString("tempUnits")].toString()), 4, 'f', 1);
} else if (sourceName.contains(mountFillRegExp)) {
// fill level
QString mount = sourceName;
mount.remove(QString("partitions")).remove(QString("/filllevel"));
for (int i=0; i<counts[QString("mount")].toInt(); i++)
if (params[QString("mount")].toString().split(QString("@@"))[i] == mount) {
values[QString("hdd") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1);
break;
}
} else if (sourceName.contains(mountFreeRegExp)) {
// free space
QString mount = sourceName;
mount.remove(QString("partitions")).remove(QString("/freespace"));
for (int i=0; i<counts[QString("mount")].toInt(); i++)
if (params[QString("mount")].toString().split(QString("@@"))[i] == mount) {
values[QString("hddfreemb") + QString::number(i)] = QString("%1").arg(
data[QString("value")].toFloat() / 1024.0, 5, 'f', 0);
values[QString("hddfreegb") + QString::number(i)] = QString("%1").arg(
data[QString("value")].toFloat() / (1024.0 * 1024.0), 5, 'f', 1);
break;
}
} else if (sourceName.contains(mountUsedRegExp)) {
// used
QString mount = sourceName;
mount.remove(QString("partitions")).remove(QString("/usedspace"));
for (int i=0; i<counts[QString("mount")].toInt(); i++)
if (params[QString("mount")].toString().split(QString("@@"))[i] == mount) {
values[QString("hddmb") + QString::number(i)] = QString("%1").arg(
data[QString("value")].toFloat() / 1024.0, 5, 'f', 0);
values[QString("hddgb") + QString::number(i)] = QString("%1").arg(
data[QString("value")].toFloat() / (1024.0 * 1024.0), 5, 'f', 1);
// total
values[QString("hddtotmb") + QString::number(i)] = QString("%1").arg(
values[QString("hddfreemb") + QString::number(i)].toInt() +
values[QString("hddmb") + QString::number(i)].toInt());
values[QString("hddtotgb") + QString::number(i)] = QString("%1").arg(
values[QString("hddfreegb") + QString::number(i)].toFloat() +
values[QString("hddgb") + QString::number(i)].toFloat(), 5, 'f', 1);
break;
}
} else if (sourceName == QString("hddtemp")) {
// hdd temperature
for (int i=0; i<data.keys().count(); i++)
for (int j=0; j<counts[QString("hddtemp")].toInt(); j++)
if (data.keys()[i] == params[QString("hdd")].toString().split(QString("@@"))[j]) {
values[QString("hddtemp") + QString::number(j)] = QString("%1").arg(
temperature(data[data.keys()[i]].toFloat(), params[QString("tempUnits")].toString()), 4, 'f', 1);
break;
}
} else if (sourceName == QString("mem/physical/application")) {
// app memory
values[QString("memmb")] = QString("%1").arg(data[QString("value")].toFloat() / 1024.0, 5, 'f', 0);
values[QString("memgb")] = QString("%1").arg(data[QString("value")].toFloat() / (1024.0 * 1024.0), 5, 'f', 1);
} else if (sourceName == QString("mem/physical/free")) {
// free memory
values[QString("memfreemb")] = QString("%1").arg(data[QString("value")].toFloat() / 1024.0, 5, 'f', 0);
values[QString("memfreegb")] = QString("%1").arg(data[QString("value")].toFloat() / (1024.0 * 1024.0), 4, 'f', 1);
} else if (sourceName == QString("mem/physical/used")) {
// used memory
values[QString("memusedmb")] = QString("%1").arg(data[QString("value")].toFloat() / 1024.0, 0, 'f', 0);
values[QString("memusedgb")] = QString("%1").arg(data[QString("value")].toFloat() / (1024.0 * 1024.0), 4, 'f', 1);
// total
values[QString("memtotmb")] = QString("%1").arg(
values[QString("memusedmb")].toInt() + values[QString("memfreemb")].toInt(), 5);
values[QString("memtotgb")] = QString("%1").arg(
values[QString("memusedgb")].toFloat() + values[QString("memfreegb")].toFloat(), 4, 'f', 1);
// percentage
values[QString("mem")] = QString("%1").arg(
100.0 * values[QString("memmb")].toFloat() / values[QString("memtotmb")].toFloat(), 5, 'f', 1);
toolTip->setData(QString("mem"), values[QString("mem")].toFloat());
} else if (sourceName == QString("netdev")) {
// network device
values[QString("netdev")] = data[QString("value")].toString();
} else if (sourceName.contains(netRecRegExp)) {
// download speed
QString device = sourceName;
device.remove(QString("network/interfaces/")).remove(QString("/receiver/data"));
if (device == networkDevice(params[QString("customNetdev")].toString())) {
values[QString("down")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
toolTip->setData(QString("down"), data[QString("value")].toFloat());
}
} else if (sourceName.contains(netTransRegExp)) {
// upload speed
QString device = sourceName;
device.remove(QString("network/interfaces/")).remove(QString("/transmitter/data"));
if (device == networkDevice(params[QString("customNetdev")].toString())) {
values[QString("up")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0);
toolTip->setData(QString("up"), data[QString("value")].toFloat());
}
} else if (sourceName == QString("pkg")) {
// package manager
for (int i=0; i<data.keys().count(); i++)
values[data.keys()[i]] = QString("%1").arg(data[data.keys()[i]].toInt(), 2);
} else if (sourceName == QString("player")) {
// player
values[QString("album")] = data[QString("album")].toString();
values[QString("artist")] = data[QString("artist")].toString();
values[QString("duration")] = data[QString("duration")].toString();
values[QString("progress")] = data[QString("progress")].toString();
values[QString("title")] = data[QString("title")].toString();
} else if (sourceName == QString("ps")) {
// ps
values[QString("ps")] = data[QString("ps")].toString();
values[QString("pscount")] = QString("%1").arg(data[QString("pscount")].toInt(), 2);
values[QString("pstotal")] = QString("%1").arg(data[QString("pstotal")].toInt(), 3);
} else if (sourceName == QString("mem/swap/free")) {
// free swap
values[QString("swapfreemb")] = QString("%1").arg(data[QString("value")].toFloat() / 1024.0, 5, 'f', 0);
values[QString("swapfreegb")] = QString("%1").arg(data[QString("value")].toFloat() / (1024.0 * 1024.0), 4, 'f', 1);
} else if (sourceName == QString("mem/swap/used")) {
// used swap
values[QString("swapmb")] = QString("%1").arg(data[QString("value")].toFloat() / 1024.0, 5, 'f', 0);
values[QString("swapgb")] = QString("%1").arg(data[QString("value")].toFloat() / (1024.0 * 1024.0), 4, 'f', 1);
// total
values[QString("swaptotmb")] = QString("%1").arg(
values[QString("swapmb")].toInt() + values[QString("swapfreemb")].toInt(), 5);
values[QString("swaptotgb")] = QString("%1").arg(
values[QString("swapgb")].toFloat() + values[QString("swapfreegb")].toFloat(), 4, 'f', 1);
// percentage
values[QString("swap")] = QString("%1").arg(
100.0 * values[QString("swapmb")].toFloat() / values[QString("swaptotmb")].toFloat(), 5, 'f', 1);
toolTip->setData(QString("swap"), values[QString("swap")].toFloat());
} else if (sourceName.contains(tempRegExp)) {
// temperature devices
if (data[QString("units")].toString() == QString("rpm")) {
for (int i=0; i<counts[QString("fan")].toInt(); i++)
if (sourceName == params[QString("fanDevice")].toString().split(QString("@@"))[i]) {
values[QString("fan") + QString::number(i)] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 1);
break;
}
} else {
for (int i=0; i<counts[QString("temp")].toInt(); i++)
if (sourceName == params[QString("tempDevice")].toString().split(QString("@@"))[i]) {
values[QString("temp") + QString::number(i)] = QString("%1").arg(
temperature(data[QString("value")].toFloat(), params[QString("tempUnits")].toString()), 4, 'f', 1);
break;
}
}
} else if (sourceName == QString("Local")) {
// time
values[QString("time")] = data[QString("DateTime")].toDateTime().toString(Qt::TextDate);
values[QString("isotime")] = data[QString("DateTime")].toDateTime().toString(Qt::ISODate);
values[QString("shorttime")] = data[QString("DateTime")].toDateTime().toString(Qt::SystemLocaleShortDate);
values[QString("longtime")] = data[QString("DateTime")].toDateTime().toString(Qt::SystemLocaleLongDate);
QStringList _timeKeys = timeKeys();
values[QString("ctime")] = params[QString("customTime")].toString();
for (int i=0; i<_timeKeys.count(); i++)
values[QString("ctime")].replace(QString("$") + _timeKeys[i],
data[QString("DateTime")].toDateTime().toString(_timeKeys[i]));
} else if (sourceName == QString("system/uptime")) {
// uptime
int uptime = data[QString("value")].toFloat();
int seconds = uptime - uptime % 60;
int minutes = seconds / 60 % 60;
int hours = ((seconds / 60) - minutes) / 60 % 24;
int days = (((seconds / 60) - minutes) / 60 - hours) / 24;
values[QString("uptime")] = QString("%1d%2h%3m").arg(days, 3).arg(hours, 2).arg(minutes, 2);
values[QString("cuptime")] = params[QString("customUptime")].toString();
values[QString("cuptime")].replace(QString("$dd"), QString("%1").arg(days, 3, 10, QChar('0')));
values[QString("cuptime")].replace(QString("$d"), QString("%1").arg(days));
values[QString("cuptime")].replace(QString("$hh"), QString("%1").arg(hours, 2, 10, QChar('0')));
values[QString("cuptime")].replace(QString("$h"), QString("%1").arg(hours));
values[QString("cuptime")].replace(QString("$mm"), QString("%1").arg(minutes, 2, 10, QChar('0')));
values[QString("cuptime")].replace(QString("$m"), QString("%1").arg(minutes));
}
}
QMap<QString, QVariant> AWKeys::getCounts()
{
if (debug) qDebug() << PDEBUG;
QMap<QString, QVariant> awCounts;
awCounts[QString("cpu")] = numberCpus();
awCounts[QString("custom")] = getExtScripts().count();
// awCounts[QString("disk")] = configuration[QString("disk")].split(QString("@@")).count();
// awCounts[QString("fan")] = configuration[QString("fanDevice")].split(QString("@@")).count();
// awCounts[QString("hddtemp")] = configuration[QString("hdd")].split(QString("@@")).count();
// awCounts[QString("mount")] = configuration[QString("mount")].split(QString("@@")).count();
// awCounts[QString("pkg")] = deSettings[QString("PKGCMD")].split(QChar(',')).count();
// awCounts[QString("temp")] = configuration[QString("tempDevice")].split(QString("@@")).count();
// awCounts[QString("tooltip")] = 0;
// awCounts[QString("tooltip")] += configuration[QString("cpuTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("cpuclTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("memTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("swapTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("downTooltip")].toInt();
// awCounts[QString("tooltip")] += configuration[QString("batteryTooltip")].toInt();
// awCounts[QString("tooltip")] = counts[QString("tooltip")] / 2;
return awCounts;
}
QStringList AWKeys::findGraphicalItems(const QString pattern)
{
if (debug) qDebug() << PDEBUG;
@ -413,7 +648,7 @@ QList<ExtScript *> AWKeys::getExtScripts()
QString localDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) +
QString("/plasma_engine_extsysmon/scripts");
QDir localDirectory;
if (localDirectory.mkdir(localDir))
if (localDirectory.mkpath(localDir))
if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir;
QStringList dirs = QStandardPaths::locateAll(QStandardPaths::DataLocation,
@ -444,7 +679,7 @@ QList<GraphicalItem *> AWKeys::getGraphicalItems()
QString localDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) +
QString("/plasma_applet_awesome-widget/desktops");
QDir localDirectory;
if (localDirectory.mkdir(localDir))
if (localDirectory.mkpath(localDir))
if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir;
QStringList dirs = QStandardPaths::locateAll(QStandardPaths::DataLocation,

View File

@ -25,6 +25,7 @@
#include <QVariant>
class AWToolTip;
class ExtScript;
class GraphicalItem;
@ -36,23 +37,22 @@ public:
AWKeys(QObject *parent = 0);
~AWKeys();
Q_INVOKABLE void initKeys(const QString pattern);
Q_INVOKABLE void initKeys(const QString pattern, const int maxTooltip);
Q_INVOKABLE void initValues();
Q_INVOKABLE bool isDebugEnabled();
Q_INVOKABLE QString networkDevice(const QString custom = QString(""));
Q_INVOKABLE int numberCpus();
Q_INVOKABLE QString parsePattern(const QString pattern, const QMap<QString, QVariant> values);
Q_INVOKABLE QStringList sourcesForDataEngine(const QString pattern,
const QMap<QString, QVariant> paths,
const QMap<QString, QVariant> tooltipBools,
const QString dataEngine = QString("systemmonitor"));
Q_INVOKABLE QString parsePattern(const QString pattern);
Q_INVOKABLE float temperature(const float temp, const QString units = QString("Celsius"));
// keys
Q_INVOKABLE QMap<QString, QVariant> counts();
Q_INVOKABLE QStringList dictKeys();
Q_INVOKABLE QStringList extScriptsInfo();
Q_INVOKABLE QStringList graphicalItemsInfo();
Q_INVOKABLE QStringList timeKeys();
Q_INVOKABLE void setDataBySource(const QString sourceName,
const QMap<QString, QVariant> data,
const QMap<QString, QVariant> params);
Q_INVOKABLE QMap<QString, QVariant> getCounts();
Q_INVOKABLE QStringList findGraphicalItems(const QString pattern);
Q_INVOKABLE QStringList findKeys(const QString pattern);
@ -60,11 +60,14 @@ private:
QList<ExtScript *> getExtScripts();
QList<GraphicalItem *> getGraphicalItems();
GraphicalItem *getItemByTag(const QString tag);
AWToolTip *toolTip = nullptr;
// variables
bool debug = false;
QList<GraphicalItem *> graphicalItems;
QList<ExtScript *> extScripts;
QStringList foundBars, foundKeys, keys;
QMap<QString, QVariant> counts;
QMap<QString, QString> values;
};

View File

@ -0,0 +1,57 @@
/***************************************************************************
* This file is part of awesome-widgets *
* *
* awesome-widgets is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* awesome-widgets is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with awesome-widgets. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#include "awtooltip.h"
#include <QDebug>
#include <QProcessEnvironment>
#include <pdebug/pdebug.h>
AWToolTip::AWToolTip(QObject *parent,
const int maxCount)
: QObject(parent),
m_maxCount(maxCount)
{
// debug
QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
QString debugEnv = environment.value(QString("DEBUG"), QString("no"));
debug = (debugEnv == QString("yes"));
}
AWToolTip::~AWToolTip()
{
if (debug) qDebug() << PDEBUG;
}
void AWToolTip::setData (const QString source, const float value, const bool ac)
{
if (debug) qDebug() << PDEBUG;
if (data[source].count() == 0)
data[source].append(0.0);
else if (data[source].count() > m_maxCount)
data[source].takeFirst();
if (ac)
data[source].append(value);
else
data[source].append(-value);
}

View File

@ -16,39 +16,33 @@
***************************************************************************/
#ifndef AWDESOURCES_H
#define AWDESOURCES_H
#ifndef AWTOOLTIP_H
#define AWTOOLTIP_H
#include <QMap>
#include <QObject>
#include <QVariant>
#include <QPixmap>
class AWDESources : public QObject
class AWToolTip : public QObject
{
Q_OBJECT
public:
AWDESources(QObject *parent = 0,
const QString pattern = QString(""),
const QStringList foundKeys = QStringList(),
const QStringList foundBars = QStringList(),
const QMap<QString, QVariant> counts = QMap<QString, QVariant>(),
const QMap<QString, QVariant> paths = QMap<QString, QVariant>(),
const QMap<QString, QVariant> tooltipBools = QMap<QString, QVariant>());
~AWDESources();
AWToolTip(QObject *parent = 0,
int maxCount = 0);
~AWToolTip();
QStringList getSourcesForExtSystemMonitor();
QStringList getSourcesForSystemMonitor();
QStringList getSourcesForTimeMonitor();
// Q_INVOKABLE QPixmap image();
void setData(const QString source, const float value,
const bool ac = true);
private:
// variables
bool debug = false;
QString m_pattern;
QStringList m_foundKeys, m_foundBars;
QMap<QString, QVariant> m_counts, m_paths, m_tooltipBools;
int m_maxCount = 0;
QMap<QString, QList<float>> data;
};
#endif /* AWDESOURCES_H */
#endif /* AWTOOLTIP_H */

View File

@ -1,3 +1,3 @@
module org.kde.plasma.private.awesome-widget
module org.kde.plasma.private.awesomewidget
plugin awplugin

View File

@ -11,7 +11,7 @@ if (BUILD_KDE4)
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
set (KDE_INCLUDE ${KDE4_INCLUDES})
else ()
find_package (Qt5 REQUIRED COMPONENTS Widgets)
find_package (Qt5 REQUIRED COMPONENTS Network Widgets)
find_package (ECM 0.0.11 REQUIRED NO_MODULE)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
find_package (KF5 REQUIRED COMPONENTS Plasma Service WindowSystem)

View File

@ -138,7 +138,7 @@ void ExtendedSysMon::initScripts()
localDir = QStandardPaths::writableLocation(QStandardPaths::DataLocation) +
QString("/plasma_engine_extsysmon/scripts");
QDir localDirectory;
if (localDirectory.mkdir(localDir))
if (localDirectory.mkpath(localDir))
if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir;
dirs = QStandardPaths::locateAll(QStandardPaths::DataLocation,
@ -246,7 +246,7 @@ QMap<QString, QString> ExtendedSysMon::updateConfiguration(QMap<QString, QString
}
// pkgcmd
for (int i=rawConfig[QString("PKGNULL")].split(QString(","), QString::SkipEmptyParts).count();
i<rawConfig[QString("PKGCMD")].split(QString(","), QString::SkipEmptyParts).count()+1;
i<rawConfig[QString("PKGCMD")].split(QString(","), QString::SkipEmptyParts).count();
i++)
rawConfig[QString("PKGNULL")] += QString(",0");
// player
@ -530,7 +530,7 @@ QMap<QString, QVariant> ExtendedSysMon::getPsStats()
for (int i=0; i<qoutput.split(QChar('\n'), QString::SkipEmptyParts).count(); i++)
if (!qoutput.split(QChar('\n'), QString::SkipEmptyParts)[i].contains(QString("ps ")))
psList.append(qoutput.split(QChar('\n'), QString::SkipEmptyParts)[i]);
psStats[QString("psCount")] = psList.count();
psStats[QString("pscount")] = psList.count();
psStats[QString("ps")] = psList.join(QString(","));
cmd = QString("ps -e --no-headers -o command");
@ -539,7 +539,7 @@ QMap<QString, QVariant> ExtendedSysMon::getPsStats()
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
psStats[QString("psTotal")] = qoutput.split(QChar('\n'), QString::SkipEmptyParts).count();
psStats[QString("pstotal")] = qoutput.split(QChar('\n'), QString::SkipEmptyParts).count();
return psStats;
}
@ -611,7 +611,7 @@ bool ExtendedSysMon::updateSourceEvent(const QString &source)
setData(source, QString("value"), getNetworkDevice());
} else if (source == QString("pkg")) {
for (int i=0; i<configuration[QString("PKGCMD")].split(QString(","), QString::SkipEmptyParts).count(); i++)
setData(source, QString("pkgCount") + QString::number(i),
setData(source, QString("pkgcount") + QString::number(i),
getUpgradeInfo(configuration[QString("PKGCMD")].split(QString(","), QString::SkipEmptyParts)[i]));
} else if (source == QString("player")) {
QMap<QString, QVariant> player = getPlayerInfo(configuration[QString("PLAYER")],