/*************************************************************************** * 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 "awesome-widget.h" #include #include #include void AwesomeWidget::connectToEngine() { if (debug) qDebug() << PDEBUG; QRegExp regExp; // battery regExp = QRegExp(QString("(ac|bat)")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("batteryTooltip")].toInt() == 2)) extsysmonEngine->connectSource(QString("battery"), this, configuration[QString("interval")].toInt()); // cpu regExp = QRegExp(QString("cpu(?!cl).*")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("cpuTooltip")].toInt() == 2)) { sysmonEngine->connectSource(QString("cpu/system/TotalLoad"), this, configuration[QString("interval")].toInt()); for (int i=0; iconnectSource(QString("cpu/cpu") + QString::number(i) + QString("/TotalLoad"), this, configuration[QString("interval")].toInt()); } // cpuclock regExp = QRegExp(QString("cpucl.*")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("cpuclTooltip")].toInt() == 2)) { sysmonEngine->connectSource(QString("cpu/system/AverageClock"), this, configuration[QString("interval")].toInt()); for (int i=0; iconnectSource(QString("cpu/cpu") + QString::number(i) + QString("/clock"), this, configuration[QString("interval")].toInt()); } // custom command regExp = QRegExp(QString("custom.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->connectSource(QString("custom"), this, configuration[QString("interval")].toInt()); // desktop regExp = QRegExp(QString(".*desktop.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->connectSource(QString("desktop"), this, configuration[QString("interval")].toInt()); // disk speed regExp = QRegExp(QString("hdd[rw].*")); if (foundKeys.indexOf(regExp) > -1) for (int i=0; iconnectSource(configuration[QString("disk")].split(QString("@@"))[i] + QString("/Rate/rblk"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(configuration[QString("disk")].split(QString("@@"))[i] + QString("/Rate/wblk"), this, configuration[QString("interval")].toInt()); } // fan regExp = QRegExp(QString("fan.*")); if (foundKeys.indexOf(regExp) > -1) 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) extsysmonEngine->connectSource(QString("gpu"), this, configuration[QString("interval")].toInt()); // gputemp regExp = QRegExp(QString("gputemp")); if (foundKeys.indexOf(regExp) > -1) 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) for (int i=0; iconnectSource(QString("partitions") + configuration[QString("mount")].split(QString("@@"))[i] + QString("/filllevel"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("partitions") + configuration[QString("mount")].split(QString("@@"))[i] + QString("/freespace"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("partitions") + configuration[QString("mount")].split(QString("@@"))[i] + QString("/usedspace"), this, configuration[QString("interval")].toInt()); } // hddtemp regExp = QRegExp(QString("hddtemp.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->connectSource(QString("hddtemp"), this, configuration[QString("interval")].toInt()); // memory regExp = QRegExp(QString("mem.*")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("memTooltip")].toInt() == 2)) { sysmonEngine->connectSource(QString("mem/physical/free"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("mem/physical/used"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("mem/physical/application"), this, configuration[QString("interval")].toInt()); } // network networkDeviceUpdate = 0; regExp = QRegExp(QString("(down|up|netdev)")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("downTooltip")].toInt() == 2)) { sysmonEngine->connectSource(QString("network/interfaces/") + values[QString("netdev")] + QString("/transmitter/data"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("network/interfaces/") + values[QString("netdev")] + QString("/receiver/data"), this, configuration[QString("interval")].toInt()); } // package manager regExp = QRegExp(QString("pkgcount.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->connectSource(QString("pkg"), this, 60*60*1000, Plasma::AlignToHour); // player regExp = QRegExp(QString("(album|artist|duration|progress|title)")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->connectSource(QString("player"), this, configuration[QString("interval")].toInt()); // ps regExp = QRegExp(QString("ps.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->connectSource(QString("ps"), this, configuration[QString("interval")].toInt()); // swap regExp = QRegExp(QString("swap.*")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("swapTooltip")].toInt() == 2)) { sysmonEngine->connectSource(QString("mem/swap/free"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("mem/swap/used"), this, configuration[QString("interval")].toInt()); } // temp regExp = QRegExp(QString("temp.*")); if (foundKeys.indexOf(regExp) > -1) for (int i=0; iconnectSource(configuration[QString("tempDevice")].split(QString("@@"))[i], this, configuration[QString("interval")].toInt()); // time regExp = QRegExp(QString("(^|iso|short|long|c)time")); if (foundKeys.indexOf(regExp) > -1) timeEngine->connectSource(QString("Local"), this, 1000); // uptime regExp = QRegExp(QString("(^|c)uptime")); if (foundKeys.indexOf(regExp) > -1) sysmonEngine->connectSource(QString("system/uptime"), this, configuration[QString("interval")].toInt()); } void AwesomeWidget::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data) { 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 (data.keys().isEmpty()) return; if (sourceName == QString("battery")) { if (data[QString("ac")].toBool()) values[QString("ac")] = configuration[QString("acOnline")]; else values[QString("ac")] = configuration[QString("acOffline")]; values[QString("bat")] = QString("%1").arg(data[QString("bat")].toFloat(), 3, 'f', 0); if ((configuration[QString("batteryTooltip")].toInt() == 2) && (!isnan(data[QString("bat")].toFloat()))) { if (tooltipValues[QString("bat")].count() > configuration[QString("tooltipNumber")].toInt()) tooltipValues[QString("bat")].takeFirst(); if (data[QString("ac")].toBool()) tooltipValues[QString("bat")].append(data[QString("bat")].toFloat()); else tooltipValues[QString("bat")].append(-data[QString("bat")].toFloat()); } } else if (sourceName == QString("cpu/system/TotalLoad")) { values[QString("cpu")] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1); if ((configuration[QString("cpuTooltip")].toInt() == 2) && (!isnan(data[QString("value")].toFloat()))) { if (tooltipValues[QString("cpu")].count() > configuration[QString("tooltipNumber")].toInt()) tooltipValues[QString("cpu")].takeFirst(); tooltipValues[QString("cpu")].append(data[QString("value")].toFloat()); } } else if (sourceName.indexOf(cpuRegExp) > -1) { QString number = sourceName; number.remove(QString("cpu/cpu")); number.remove(QString("/TotalLoad")); values[QString("cpu") + number] = QString("%1").arg(data[QString("value")].toFloat(), 5, 'f', 1); } 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) && (!isnan(data[QString("value")].toFloat()))) { if (tooltipValues[QString("cpucl")].count() > configuration[QString("tooltipNumber")].toInt()) tooltipValues[QString("cpucl")].takeFirst(); tooltipValues[QString("cpucl")].append(data[QString("value")].toFloat()); } } else if (sourceName.indexOf(cpuclRegExp) > -1) { QString number = sourceName; number.remove(QString("cpu/cpu")); number.remove(QString("/clock")); values[QString("cpucl") + number] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); } else if (sourceName == QString("custom")) { for (int i=0; i -1) { QString device = sourceName; device.remove(QString("/Rate/rblk")); for (int i=0; i -1) { QString device = sourceName; device.remove(QString("/Rate/wblk")); for (int i=0; i -1) { QString mount = sourceName; mount.remove(QString("partitions")); mount.remove(QString("/filllevel")); for (int i=0; i -1) { QString mount = sourceName; mount.remove(QString("partitions")); mount.remove(QString("/freespace")); for (int i=0; i -1) { QString mount = sourceName; mount.remove(QString("partitions")); mount.remove(QString("/usedspace")); for (int i=0; i configuration[QString("tooltipNumber")].toInt()) tooltipValues[QString("mem")].takeFirst(); tooltipValues[QString("mem")].append(values[QString("mem")].toFloat()); } } else if (sourceName.indexOf(netRecRegExp) > -1) { values[QString("down")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); if ((configuration[QString("downTooltip")].toInt() == 2) && (!isnan(data[QString("value")].toFloat()))) { if (tooltipValues[QString("down")].count() > configuration[QString("tooltipNumber")].toInt()) tooltipValues[QString("down")].takeFirst(); tooltipValues[QString("down")].append(data[QString("value")].toFloat()); } networkDeviceUpdate++; if (networkDeviceUpdate == 30) { networkDeviceUpdate = 0; if (configuration[QString("useCustomNetdev")].toInt() == 2) { sysmonEngine->disconnectSource(QString("network/interfaces/") + values[QString("netdev")] + QString("/transmitter/data"), this); sysmonEngine->disconnectSource(QString("network/interfaces/") + values[QString("netdev")] + QString("/receiver/data"), this); updateNetworkDevice(); sysmonEngine->connectSource(QString("network/interfaces/") + values[QString("netdev")] + QString("/transmitter/data"), this, configuration[QString("interval")].toInt()); sysmonEngine->connectSource(QString("network/interfaces/") + values[QString("netdev")] + QString("/receiver/data"), this, configuration[QString("interval")].toInt()); } } } else if (sourceName.indexOf(netTransRegExp) > -1) { values[QString("up")] = QString("%1").arg(data[QString("value")].toFloat(), 4, 'f', 0); if ((configuration[QString("downTooltip")].toInt() == 2) && (!isnan(data[QString("value")].toFloat()))) { if (tooltipValues[QString("up")].count() > configuration[QString("tooltipNumber")].toInt()) tooltipValues[QString("up")].takeFirst(); tooltipValues[QString("up")].append(data[QString("value")].toFloat()); } } else if (sourceName == QString("pkg")) { for (int i=0; i configuration[QString("tooltipNumber")].toInt()) tooltipValues[QString("swap")].takeFirst(); tooltipValues[QString("swap")].append(values[QString("swap")].toFloat()); } } else if (sourceName.indexOf(tempRegExp) > -1) { if (data[QString("units")].toString() == QString("rpm")) { for (int i=0; i -1) || (configuration[QString("batteryTooltip")].toInt() == 2)) extsysmonEngine->disconnectSource(QString("battery"), this); // cpu regExp = QRegExp(QString("cpu(?!cl).*")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("cpuTooltip")].toInt() == 2)) { sysmonEngine->disconnectSource(QString("cpu/system/TotalLoad"), this); for (int i=0; idisconnectSource(QString("cpu/cpu") + QString::number(i) + QString("/TotalLoad"), this); } // cpuclock regExp = QRegExp(QString("cpucl.*")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("cpuclTooltip")].toInt() == 2)) { sysmonEngine->disconnectSource(QString("cpu/system/AverageClock"), this); for (int i=0; idisconnectSource(QString("cpu/cpu") + QString::number(i) + QString("/clock"), this); } // custom command regExp = QRegExp(QString("custom.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("custom"), this); // desktop regExp = QRegExp(QString(".*desktop.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("desktop"), this); // disk speed regExp = QRegExp(QString("hdd[rw].*")); if (foundKeys.indexOf(regExp) > -1) for (int i=0; idisconnectSource(configuration[QString("disk")].split(QString("@@"))[i] + QString("/Rate/rblk"), this); sysmonEngine->disconnectSource(configuration[QString("disk")].split(QString("@@"))[i] + QString("/Rate/wblk"), this); } // fan regExp = QRegExp(QString("fan.*")); if (foundKeys.indexOf(regExp) > -1) for (int i=0; idisconnectSource(configuration[QString("fanDevice")].split(QString("@@"))[i], this); // gpu regExp = QRegExp(QString("gpu")); if (foundKeys.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) 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); sysmonEngine->disconnectSource(QString("partitions") + configuration[QString("mount")].split(QString("@@"))[i] + QString("/usedspace"), this); } // hddtemp regExp = QRegExp(QString("hddtemp.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("hddtemp"), this); // memory regExp = QRegExp(QString("mem.*")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("memTooltip")].toInt() == 2)) { sysmonEngine->disconnectSource(QString("mem/physical/free"), this); sysmonEngine->disconnectSource(QString("mem/physical/used"), this); sysmonEngine->disconnectSource(QString("mem/physical/application"), this); } // network regExp = QRegExp(QString("(down|up|netdev)")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("downTooltip")].toInt() == 2)) { sysmonEngine->disconnectSource(QString("network/interfaces/") + values[QString("netdev")] + QString("/transmitter/data"), this); sysmonEngine->disconnectSource(QString("network/interfaces/") + values[QString("netdev")] + QString("/receiver/data"), this); } // package manager regExp = QRegExp(QString("pkgcount.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("pkg"), this); // player regExp = QRegExp(QString("(album|artist|duration|progress|title)")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("player"), this); // ps regExp = QRegExp(QString("ps.*")); if (foundKeys.indexOf(regExp) > -1) extsysmonEngine->disconnectSource(QString("ps"), this); // swap regExp = QRegExp(QString("swap.*")); if ((foundKeys.indexOf(regExp) > -1) || (configuration[QString("swapTooltip")].toInt() == 2)) { sysmonEngine->disconnectSource(QString("mem/swap/free"), this); sysmonEngine->disconnectSource(QString("mem/swap/used"), this); } // temp regExp = QRegExp(QString("temp.*")); if (foundKeys.indexOf(regExp) > -1) for (int i=0; idisconnectSource(configuration[QString("tempDevice")].split(QString("@@"))[i], this); // time regExp = QRegExp(QString("(^|iso|short|long|c)time")); if (foundKeys.indexOf(regExp) > -1) timeEngine->disconnectSource(QString("Local"), this); // uptime regExp = QRegExp(QString("(^|c)uptime")); if (foundKeys.indexOf(regExp) > -1) sysmonEngine->disconnectSource(QString("system/uptime"), this); }