diff --git a/sources/awesome-widget/awesome-widget.cpp b/sources/awesome-widget/awesome-widget.cpp index 0395018..b016eb4 100644 --- a/sources/awesome-widget/awesome-widget.cpp +++ b/sources/awesome-widget/awesome-widget.cpp @@ -59,8 +59,6 @@ AwesomeWidget::AwesomeWidget(QObject *parent, const QVariantList &args) // text format init formatLine.append(QString("")); formatLine.append(QString("")); -// GraphicalItem *item = new GraphicalItem(this, QString("test"), QString("${cpu;255,0,0,255;0,255,0,255;2;-1;300;500}"), true); -// qDebug() << item->getImage(75.0); } @@ -395,6 +393,49 @@ QStringList AwesomeWidget::getKeys() } +QStringList AwesomeWidget::findGraphicalItems() +{ + if (debug) qDebug() << PDEBUG; + + QStringList orderedKeys = graphicalItems.keys(); + orderedKeys.sort(); + QStringList selectedKeys; + for (int i=orderedKeys.count()-1; i>=0; i--) + if (configuration[QString("text")].contains(QString("$") + orderedKeys[i])) { + if (debug) qDebug() << PDEBUG << ":" << "Found key" << orderedKeys[i]; + selectedKeys.append(orderedKeys[i]); + } + + return selectedKeys; +} + + +void AwesomeWidget::getGraphicalItems() +{ + if (debug) qDebug() << PDEBUG; + + graphicalItems.clear(); + // create directory at $HOME + QString localDir = KStandardDirs::locateLocal("data", "plasma_applet_awesome-widget/destkops"); + if (KStandardDirs::makeDir(localDir)) + if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir; + + QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_applet_awesome-widget/desktops"); + QStringList names; + for (int i=0; igetName() + item->getBar()] = item; + } + } +} + + void AwesomeWidget::showKsysguard() { if (debug) qDebug() << PDEBUG; diff --git a/sources/awesome-widget/awesome-widget.h b/sources/awesome-widget/awesome-widget.h index 8d6ab51..50fe366 100644 --- a/sources/awesome-widget/awesome-widget.h +++ b/sources/awesome-widget/awesome-widget.h @@ -33,6 +33,7 @@ class CustomLabel; class ExtScript; +class GraphicalItem; class QGraphicsGridLayout; class QGraphicsScene; class QNetworkReply; @@ -103,16 +104,18 @@ private: void createActions(); QStringList findKeys(); QStringList getKeys(); + QStringList findGraphicalItems(); + void getGraphicalItems(); QList initScripts(); // ui QGraphicsGridLayout *mainLayout = nullptr; CustomLabel *textLabel = nullptr; - QTimer *timer; + QTimer *timer = nullptr; QList contextMenu; // tooltip Plasma::ToolTipContent toolTip; - QGraphicsScene *toolTipScene; - QGraphicsView *toolTipView; + QGraphicsScene *toolTipScene = nullptr; + QGraphicsView *toolTipView = nullptr; // values int networkDeviceUpdate; QMap counts; @@ -121,9 +124,9 @@ private: // debug bool debug; // data engine - Plasma::DataEngine *extsysmonEngine; - Plasma::DataEngine *sysmonEngine; - Plasma::DataEngine *timeEngine; + Plasma::DataEngine *extsysmonEngine = nullptr; + Plasma::DataEngine *sysmonEngine = nullptr; + Plasma::DataEngine *timeEngine = nullptr; // configuration interface Ui::About uiAboutConfig; Ui::AdvancedWindow uiAdvancedConfig; @@ -134,6 +137,8 @@ private: // configuration QMap configuration; QStringList diskDevices, keys, formatLine, foundKeys; + QMap graphicalItems; + QStringList foundBars; }; diff --git a/sources/awesome-widget/deinteraction.cpp b/sources/awesome-widget/deinteraction.cpp index 8ee6365..94a5ccc 100644 --- a/sources/awesome-widget/deinteraction.cpp +++ b/sources/awesome-widget/deinteraction.cpp @@ -20,6 +20,7 @@ #include #include +#include "graphicalitem.h" #include @@ -29,15 +30,17 @@ void AwesomeWidget::connectToEngine() QRegExp regExp; // battery - regExp = QRegExp(QString("(ac|bat.*)")); + regExp = QRegExp(QString("(^|bar[0-9].*)(ac|bat.*)")); if ((foundKeys.indexOf(regExp) > -1) || - (configuration[QString("batteryTooltip")].toInt() == 2)) + (configuration[QString("batteryTooltip")].toInt() == 2) || + (foundBars.indexOf(regExp) > -1)) extsysmonEngine->connectSource(QString("battery"), this, configuration[QString("interval")].toInt()); // cpu - regExp = QRegExp(QString("cpu(?!cl).*")); + regExp = QRegExp(QString("(^|bar[0-9].*)cpu(?!cl).*")); if ((foundKeys.indexOf(regExp) > -1) || - (configuration[QString("cpuTooltip")].toInt() == 2)) { + (configuration[QString("cpuTooltip")].toInt() == 2) || + (foundBars.indexOf(regExp) > -1)) { sysmonEngine->connectSource(QString("cpu/system/TotalLoad"), this, configuration[QString("interval")].toInt()); for (int i=0; iconnectSource(configuration[QString("fanDevice")].split(QString("@@"))[i], this, configuration[QString("interval")].toInt()); // gpu - regExp = QRegExp(QString("gpu")); - if (foundKeys.indexOf(regExp) > -1) + regExp = QRegExp(QString("(^|bar[0-9].*)gpu")); + if ((foundKeys.indexOf(regExp) > -1) || + (foundBars.indexOf(regExp) > -1)) extsysmonEngine->connectSource(QString("gpu"), this, configuration[QString("interval")].toInt()); // gputemp @@ -90,8 +94,9 @@ void AwesomeWidget::connectToEngine() extsysmonEngine->connectSource(QString("gputemp"), this, configuration[QString("interval")].toInt()); // mount - regExp = QRegExp(QString("hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb).*")); - if (foundKeys.indexOf(regExp) > -1) + regExp = QRegExp(QString("(^|bar[0-9].*)hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb).*")); + if ((foundKeys.indexOf(regExp) > -1) || + (foundBars.indexOf(regExp) > -1)) for (int i=0; iconnectSource(QString("partitions") + configuration[QString("mount")].split(QString("@@"))[i] + QString("/filllevel"), this, configuration[QString("interval")].toInt()); @@ -106,9 +111,10 @@ void AwesomeWidget::connectToEngine() extsysmonEngine->connectSource(QString("hddtemp"), this, configuration[QString("interval")].toInt()); // memory - regExp = QRegExp(QString("mem.*")); + regExp = QRegExp(QString("(^|bar[0-9].*)mem.*")); if ((foundKeys.indexOf(regExp) > -1) || - (configuration[QString("memTooltip")].toInt() == 2)) { + (configuration[QString("memTooltip")].toInt() == 2) || + (foundBars.indexOf(regExp) > -1)) { sysmonEngine->connectSource(QString("mem/physical/free"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("mem/physical/used"), @@ -142,9 +148,10 @@ void AwesomeWidget::connectToEngine() extsysmonEngine->connectSource(QString("ps"), this, configuration[QString("interval")].toInt()); // swap - regExp = QRegExp(QString("swap.*")); + regExp = QRegExp(QString("(^|bar[0-9].*)swap.*")); if ((foundKeys.indexOf(regExp) > -1) || - (configuration[QString("swapTooltip")].toInt() == 2)) { + (configuration[QString("swapTooltip")].toInt() == 2) || + (foundBars.indexOf(regExp) > -1)) { sysmonEngine->connectSource(QString("mem/swap/free"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("mem/swap/used"), @@ -194,8 +201,15 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng values[QString("ac")] = configuration[QString("acOnline")]; else values[QString("ac")] = configuration[QString("acOffline")]; - } else + } else { values[data.keys()[i]] = QString("%1").arg(data[data.keys()[i]].toFloat(), 3, 'f', 0); + if (foundBars.indexOf(QRegExp(QString("bar[0-9].*bat"))) > -1) { + for (int j=0; jgetBar() != data.keys()[i]) continue; + values[foundBars[j]] = values[data.keys()[i]]; + } + } + } } if ((configuration[QString("batteryTooltip")].toInt() == 2) && (!isnan(data[QString("bat")].toFloat()))) { @@ -208,6 +222,12 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng } } else if (sourceName == QString("cpu/system/TotalLoad")) { values[QString("cpu")] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1); + if (foundBars.indexOf(QRegExp(QString("bar[0-9].*cpu(?!cl).*"))) > -1) { + for (int j=0; jgetBar() != QString("cpu")) continue; + values[foundBars[j]] = QString("%1").arg(data[QString("value")].toFloat()); + } + } if ((configuration[QString("cpuTooltip")].toInt() == 2) && (!isnan(data[QString("value")].toFloat()))) { if (tooltipValues[QString("cpu")].count() > configuration[QString("tooltipNumber")].toInt()) @@ -219,6 +239,12 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng number.remove(QString("cpu/cpu")); number.remove(QString("/TotalLoad")); values[QString("cpu") + number] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1); + if (foundBars.indexOf(QRegExp(QString("bar[0-9].*cpu(?!cl).*"))) > -1) { + for (int j=0; jgetBar() != (QString("cpu") + number)) continue; + values[foundBars[j]] = values[QString("cpu") + number]; + } + } } else if (sourceName == QString("cpu/system/AverageClock")) { values[QString("cpucl")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); if ((configuration[QString("cpuclTooltip")].toInt() == 2) && @@ -257,6 +283,12 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng } } else if (sourceName == QString("gpu")) { values[QString("gpu")] = QString("%1").arg(data[QString("GPU")].toFloat(), 5, 'f', 1); + if (foundBars.indexOf(QRegExp(QString("bar[0-9].*gpu"))) > -1) { + for (int j=0; jgetBar() != QString("gpu")) continue; + values[foundBars[j]] = values[QString("gpu")]; + } + } } else if (sourceName == QString("gputemp")) { values[QString("gputemp")] = QString("%1").arg(getTemp(data[QString("GPUTemp")].toFloat()), 4, 'f', 1); } else if (sourceName.contains(mountFillRegExp)) { @@ -266,7 +298,12 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng for (int i=0; i -1) { + for (int j=0; jgetBar() != (QString("hdd") + QString::number(i))) continue; + values[foundBars[j]] = values[QString("hdd") + QString::number(i)]; + } + } } } else if (sourceName.contains(mountFreeRegExp)) { QString mount = sourceName; @@ -331,6 +368,12 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng tooltipValues[QString("mem")].takeFirst(); tooltipValues[QString("mem")].append(values[QString("mem")].toFloat()); } + if (foundBars.indexOf(QRegExp(QString("bar[0-9].*mem"))) > -1) { + for (int j=0; jgetBar() != QString("mem")) continue; + values[foundBars[j]] = values[QString("mem")]; + } + } } else if (sourceName.contains(netRecRegExp)) { values[QString("down")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); if ((configuration[QString("downTooltip")].toInt() == 2) && @@ -393,6 +436,12 @@ void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEng tooltipValues[QString("swap")].takeFirst(); tooltipValues[QString("swap")].append(values[QString("swap")].toFloat()); } + if (foundBars.indexOf(QRegExp(QString("bar[0-9].*swap"))) > -1) { + for (int j=0; jgetBar() != QString("swap")) continue; + values[foundBars[j]] = values[QString("swap")]; + } + } } else if (sourceName.contains(tempRegExp)) { if (data[QString("units")].toString() == QString("rpm")) { for (int i=0; i -1) || - (configuration[QString("batteryTooltip")].toInt() == 2)) + (configuration[QString("batteryTooltip")].toInt() == 2) || + (foundBars.indexOf(regExp) > -1)) extsysmonEngine->disconnectSource(QString("battery"), this); // cpu - regExp = QRegExp(QString("cpu(?!cl).*")); + regExp = QRegExp(QString("(^|bar[0-9].*)cpu(?!cl).*")); if ((foundKeys.indexOf(regExp) > -1) || - (configuration[QString("cpuTooltip")].toInt() == 2)) { + (configuration[QString("cpuTooltip")].toInt() == 2) || + (foundBars.indexOf(regExp) > -1)) { sysmonEngine->disconnectSource(QString("cpu/system/TotalLoad"), this); for (int i=0; idisconnectSource(QString("cpu/cpu") + QString::number(i) + QString("/TotalLoad"), this); @@ -482,16 +533,18 @@ void AwesomeWidget::disconnectFromEngine() for (int i=0; idisconnectSource(configuration[QString("fanDevice")].split(QString("@@"))[i], this); // gpu - regExp = QRegExp(QString("gpu")); - if (foundKeys.indexOf(regExp) > -1) + regExp = QRegExp(QString("(^|bar[0-9].*)gpu")); + if ((foundKeys.indexOf(regExp) > -1) || + (foundBars.indexOf(regExp) > -1)) extsysmonEngine->disconnectSource(QString("gpu"), this); // gputemp regExp = QRegExp(QString("gputemp")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("gputemp"), this); // mount - regExp = QRegExp(QString("hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb).*")); - if (foundKeys.indexOf(regExp) > -1) + regExp = QRegExp(QString("(^|bar[0-9].*)hdd([0-9]|mb|gb|freemb|freegb|totmb|totgb).*")); + if ((foundKeys.indexOf(regExp) > -1) || + (foundBars.indexOf(regExp) > -1)) for (int i=0; idisconnectSource(QString("partitions") + configuration[QString("mount")].split(QString("@@"))[i] + QString("/filllevel"), this); sysmonEngine->disconnectSource(QString("partitions") + configuration[QString("mount")].split(QString("@@"))[i] + QString("/freespace"), this); @@ -502,9 +555,10 @@ void AwesomeWidget::disconnectFromEngine() if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("hddtemp"), this); // memory - regExp = QRegExp(QString("mem.*")); + regExp = QRegExp(QString("(^|bar[0-9].*)mem.*")); if ((foundKeys.indexOf(regExp) > -1) || - (configuration[QString("memTooltip")].toInt() == 2)) { + (configuration[QString("memTooltip")].toInt() == 2) || + (foundBars.indexOf(regExp) > -1)) { sysmonEngine->disconnectSource(QString("mem/physical/free"), this); sysmonEngine->disconnectSource(QString("mem/physical/used"), this); sysmonEngine->disconnectSource(QString("mem/physical/application"), this); @@ -529,9 +583,10 @@ void AwesomeWidget::disconnectFromEngine() if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("ps"), this); // swap - regExp = QRegExp(QString("swap.*")); + regExp = QRegExp(QString("(^|bar[0-9].*)swap.*")); if ((foundKeys.indexOf(regExp) > -1) || - (configuration[QString("swapTooltip")].toInt() == 2)) { + (configuration[QString("swapTooltip")].toInt() == 2) || + (foundBars.indexOf(regExp) > -1)) { sysmonEngine->disconnectSource(QString("mem/swap/free"), this); sysmonEngine->disconnectSource(QString("mem/swap/used"), this); } diff --git a/sources/awesome-widget/desktops/aw-bat-bar.desktop b/sources/awesome-widget/desktops/aw-bat-bar.desktop index d03d5de..f804b8f 100644 --- a/sources/awesome-widget/desktops/aw-bat-bar.desktop +++ b/sources/awesome-widget/desktops/aw-bat-bar.desktop @@ -3,7 +3,7 @@ Encoding=UTF-8 Name=bar3 Comment=Simple bat bar X-AW-Value=bat -X-AW-ActiveColor="255,255,255,0" +X-AW-ActiveColor="0,0,0,255" X-AW-InactiveColor="255,255,255,255" X-AW-Type=Horizontal X-AW-Direction=LeftToRight diff --git a/sources/awesome-widget/desktops/aw-cpu-bar.desktop b/sources/awesome-widget/desktops/aw-cpu-bar.desktop index 3009a06..88da920 100644 --- a/sources/awesome-widget/desktops/aw-cpu-bar.desktop +++ b/sources/awesome-widget/desktops/aw-cpu-bar.desktop @@ -3,7 +3,7 @@ Encoding=UTF-8 Name=bar0 Comment=Simple cpu bar X-AW-Value=cpu -X-AW-ActiveColor="255,255,255,0" +X-AW-ActiveColor="0,0,0,255" X-AW-InactiveColor="255,255,255,255" X-AW-Type=Horizontal X-AW-Direction=LeftToRight diff --git a/sources/awesome-widget/desktops/aw-mem-bar.desktop b/sources/awesome-widget/desktops/aw-mem-bar.desktop index fdab752..4c3b15c 100644 --- a/sources/awesome-widget/desktops/aw-mem-bar.desktop +++ b/sources/awesome-widget/desktops/aw-mem-bar.desktop @@ -3,7 +3,7 @@ Encoding=UTF-8 Name=bar1 Comment=Simple mem bar X-AW-Value=mem -X-AW-ActiveColor="255,255,255,0" +X-AW-ActiveColor="0,0,0,255" X-AW-InactiveColor="255,255,255,255" X-AW-Type=Horizontal X-AW-Direction=LeftToRight diff --git a/sources/awesome-widget/desktops/aw-swap-bar.desktop b/sources/awesome-widget/desktops/aw-swap-bar.desktop index 04a4c7b..1c7b740 100644 --- a/sources/awesome-widget/desktops/aw-swap-bar.desktop +++ b/sources/awesome-widget/desktops/aw-swap-bar.desktop @@ -3,7 +3,7 @@ Encoding=UTF-8 Name=bar2 Comment=Simple swap bar X-AW-Value=swap -X-AW-ActiveColor="255,255,255,0" +X-AW-ActiveColor="0,0,0,255" X-AW-InactiveColor="255,255,255,255" X-AW-Type=Horizontal X-AW-Direction=LeftToRight diff --git a/sources/awesome-widget/graphicalitem.cpp b/sources/awesome-widget/graphicalitem.cpp index 3e0e5d5..21035ba 100644 --- a/sources/awesome-widget/graphicalitem.cpp +++ b/sources/awesome-widget/graphicalitem.cpp @@ -28,9 +28,8 @@ #include -GraphicalItem::GraphicalItem(QObject *wid, const QString desktopName, const QStringList directories, const bool debugCmd) - : QObject(wid), - fileName(desktopName), +GraphicalItem::GraphicalItem(const QString desktopName, const QStringList directories, const bool debugCmd) + : fileName(desktopName), dirs(directories), debug(debugCmd) { diff --git a/sources/awesome-widget/graphicalitem.h b/sources/awesome-widget/graphicalitem.h index 5a9c746..564f385 100644 --- a/sources/awesome-widget/graphicalitem.h +++ b/sources/awesome-widget/graphicalitem.h @@ -37,7 +37,7 @@ public: Circle }; - GraphicalItem(QObject *wid, const QString desktopName, const QStringList directories, const bool debugCmd = false); + GraphicalItem(const QString desktopName, const QStringList directories, const bool debugCmd = false); ~GraphicalItem(); QString getImage(const float value); // get methods diff --git a/sources/awesome-widget/reinit.cpp b/sources/awesome-widget/reinit.cpp index 85533ef..bf4ce00 100644 --- a/sources/awesome-widget/reinit.cpp +++ b/sources/awesome-widget/reinit.cpp @@ -24,6 +24,7 @@ #include #include "customlabel.h" +#include "graphicalitem.h" #include @@ -41,6 +42,8 @@ void AwesomeWidget::reinit() keys = getKeys(); foundKeys = findKeys(); + getGraphicalItems(); + foundBars = findGraphicalItems(); updateNetworkDevice(false); connectToEngine(); } @@ -81,6 +84,8 @@ void AwesomeWidget::updateText(const bool clear) text.replace(QString("$$"), QString("$\\$\\")); for (int i=0; igetImage(values[foundBars[i]].toFloat())); text.replace(QString("$\\$\\"), QString("$$")); } textLabel->setText(formatLine[0] + text + formatLine[1]);