From 327d5a7ff9d6b541f29bb3e596c5b85653f0be38 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Fri, 17 Jul 2015 09:44:44 +0300 Subject: [PATCH] more correct fix for #57 --- sources/awesome-widget/plugin/awkeys.cpp | 53 +++++++++++++++++++++--- sources/awesome-widget/plugin/awkeys.h | 7 +++- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index fac6a44..f66362b 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -96,6 +96,8 @@ void AWKeys::initKeys() extUpgrade.clear(); graphicalItems.clear(); keys.clear(); + foundBars.clear(); + foundKeys.clear(); // init extQuotes = getExtQuotes(); @@ -148,14 +150,18 @@ QString AWKeys::parsePattern(const QString currentPattern) if (debug) qDebug() << PDEBUG; if (keys.isEmpty()) return currentPattern; + // get key data + if ((foundBars.isEmpty()) && (foundKeys.isEmpty())) { + foundBars = findGraphicalItems(currentPattern); + foundKeys = findKeys(currentPattern); + } + QString parsed = currentPattern; parsed.replace(QString("$$"), QString("$\\$\\")); - for (int i=0; iimage(valueByKey(keys[i]).toFloat())); - else - parsed.replace(QString("$%1").arg(keys[i]), htmlValue(keys[i])); - } + for (int i=0; iimage(valueByKey(foundBars[i]).toFloat())); parsed.replace(QString("$\\$\\"), QString("$$")); // wrap new lines if required if (wrapNewLines) parsed.replace(QString("\n"), QString("
")); @@ -1322,6 +1328,41 @@ float AWKeys::temperature(const float temp, const QString units) } +QStringList AWKeys::findGraphicalItems(const QString pattern) +{ + if (debug) qDebug() << PDEBUG; + + QStringList orderedKeys; + for (int i=0; iname() + graphicalItems[i]->bar()); + orderedKeys.sort(); + + QStringList selectedKeys; + for (int i=orderedKeys.count()-1; i>=0; i--) + if (pattern.contains(QString("$%1").arg(orderedKeys[i]))) { + if (debug) qDebug() << PDEBUG << ":" << "Found key" << orderedKeys[i]; + selectedKeys.append(orderedKeys[i]); + } + + return selectedKeys; +} + + +QStringList AWKeys::findKeys(const QString pattern) +{ + QStringList selectedKeys; + for (int i=0; i AWKeys::getExtQuotes() { if (debug) qDebug() << PDEBUG; diff --git a/sources/awesome-widget/plugin/awkeys.h b/sources/awesome-widget/plugin/awkeys.h index d71af67..0bc9a81 100644 --- a/sources/awesome-widget/plugin/awkeys.h +++ b/sources/awesome-widget/plugin/awkeys.h @@ -93,6 +93,10 @@ private: QString htmlValue(QString key); int numberCpus(); float temperature(const float temp, const QString units); + // find methods + QStringList findGraphicalItems(const QString pattern); + QStringList findKeys(const QString pattern); + // get methods // get methods QList getExtQuotes(); QList getExtScripts(); @@ -117,8 +121,9 @@ private: QList extQuotes; QList extScripts; QList extUpgrade; + QStringList foundBars, foundKeys, keys; QMap values; - QStringList keys, diskDevices, hddDevices, mountDevices, networkDevices, tempDevices; + QStringList diskDevices, hddDevices, mountDevices, networkDevices, tempDevices; };