diff --git a/sources/awesome-widget/package/contents/config/main.xml b/sources/awesome-widget/package/contents/config/main.xml index 05fc242..23d14c7 100644 --- a/sources/awesome-widget/package/contents/config/main.xml +++ b/sources/awesome-widget/package/contents/config/main.xml @@ -32,6 +32,9 @@ true + + true + 0 @@ -95,13 +98,13 @@ #ffff00 - + true - + #00ffff - + #ff00ff diff --git a/sources/awesome-widget/package/contents/ui/advanced.qml b/sources/awesome-widget/package/contents/ui/advanced.qml index 01bcd58..273727b 100644 --- a/sources/awesome-widget/package/contents/ui/advanced.qml +++ b/sources/awesome-widget/package/contents/ui/advanced.qml @@ -45,6 +45,7 @@ Item { property alias cfg_wrapText: wordWrap.checked property alias cfg_notify: notify.checked property alias cfg_checkUpdates: updates.checked + property alias cfg_optimize: optimize.checked property alias cfg_height: widgetHeight.value property alias cfg_width: widgetWidth.value property alias cfg_interval: update.value @@ -143,6 +144,20 @@ Item { } } + Row { + height: implicitHeight + width: parent.width + QtControls.Label { + height: parent.heigth + width: parent.width * 2 / 5 + } + QtControls.CheckBox { + id: optimize + width: parent.width * 3 / 5 + text: i18n("Optimize subscription") + } + } + Row { height: implicitHeight width: parent.width diff --git a/sources/awesome-widget/package/contents/ui/main.qml b/sources/awesome-widget/package/contents/ui/main.qml index 23e9690..0e20bc9 100644 --- a/sources/awesome-widget/package/contents/ui/main.qml +++ b/sources/awesome-widget/package/contents/ui/main.qml @@ -46,15 +46,15 @@ Item { "cpuclTooltip": plasmoid.configuration.cpuclTooltip, "memTooltip": plasmoid.configuration.memTooltip, "swapTooltip": plasmoid.configuration.swapTooltip, - "downTooltip": plasmoid.configuration.downTooltip, - "upTooltip": plasmoid.configuration.downTooltip, + "downkbTooltip": plasmoid.configuration.downkbTooltip, + "upkbTooltip": plasmoid.configuration.downkbTooltip, "batTooltip": plasmoid.configuration.batTooltip, "cpuTooltipColor": plasmoid.configuration.cpuTooltipColor, "cpuclTooltipColor": plasmoid.configuration.cpuclTooltipColor, "memTooltipColor": plasmoid.configuration.memTooltipColor, "swapTooltipColor": plasmoid.configuration.swapTooltipColor, - "downTooltipColor": plasmoid.configuration.downTooltipColor, - "upTooltipColor": plasmoid.configuration.upTooltipColor, + "downkbTooltipColor": plasmoid.configuration.downkbTooltipColor, + "upkbTooltipColor": plasmoid.configuration.upkbTooltipColor, "batTooltipColor": plasmoid.configuration.batTooltipColor, "batInTooltipColor": plasmoid.configuration.batInTooltipColor, // additional field to parse AC status @@ -136,7 +136,9 @@ Item { if (debug) console.debug() // actions - plasmoid.setAction("requestKey", i18n("Request key"), "utilities-system-monitor") + // it makes no sense to use this field with optimization enable + if (!plasmoid.configuration.optimize) + plasmoid.setAction("requestKey", i18n("Request key"), "utilities-system-monitor") plasmoid.setAction("showReadme", i18n("Show README"), "text-x-readme") plasmoid.setAction("checkUpdates", i18n("Check updates"), "system-software-update") // init submodule @@ -187,9 +189,9 @@ Item { if (debug) console.debug() // init submodule - awKeys.initKeys(plasmoid.configuration.text, plasmoid.configuration.interval, - plasmoid.configuration.queueLimit) awKeys.initDataAggregator(tooltipSettings) + awKeys.initKeys(plasmoid.configuration.text, plasmoid.configuration.interval, + plasmoid.configuration.queueLimit, plasmoid.configuration.optimize) awKeys.setWrapNewLines(plasmoid.configuration.wrapNewLines) // configure aggregator awKeys.setAggregatorProperty("acOffline", plasmoid.configuration.acOffline) diff --git a/sources/awesome-widget/package/contents/ui/tooltip.qml b/sources/awesome-widget/package/contents/ui/tooltip.qml index 15b68f4..64eba9a 100644 --- a/sources/awesome-widget/package/contents/ui/tooltip.qml +++ b/sources/awesome-widget/package/contents/ui/tooltip.qml @@ -48,9 +48,9 @@ Item { property alias cfg_memTooltipColor: memTooltipColor.text property alias cfg_swapTooltip: swapTooltip.checked property alias cfg_swapTooltipColor: swapTooltipColor.text - property alias cfg_downTooltip: downTooltip.checked - property alias cfg_downTooltipColor: downTooltipColor.text - property alias cfg_upTooltipColor: upTooltipColor.text + property alias cfg_downkbTooltip: downkbTooltip.checked + property alias cfg_downkbTooltipColor: downkbTooltipColor.text + property alias cfg_upkbTooltipColor: upkbTooltipColor.text property alias cfg_batTooltip: batTooltip.checked property alias cfg_batTooltipColor: batTooltipColor.text property alias cfg_batInTooltipColor: batInTooltipColor.text @@ -273,7 +273,7 @@ Item { } QtControls.GroupBox { - id: downTooltip + id: downkbTooltip height: implicitHeight width: parent.width checkable: true @@ -292,22 +292,22 @@ Item { text: i18n("Download speed color") } QtControls.Button { - id: downTooltipColor + id: downkbTooltipColor width: parent.width * 3 / 5 style: QtStyles.ButtonStyle { background: Rectangle { - color: plasmoid.configuration.downTooltipColor + color: plasmoid.configuration.downkbTooltipColor } } - text: plasmoid.configuration.downTooltipColor - onClicked: downTooltipColorDialog.visible = true + text: plasmoid.configuration.downkbTooltipColor + onClicked: downkbTooltipColorDialog.visible = true } QtDialogs.ColorDialog { - id: downTooltipColorDialog + id: downkbTooltipColorDialog title: i18n("Select a color") - color: downTooltipColor.text - onAccepted: downTooltipColor.text = downTooltipColorDialog.color + color: downkbTooltipColor.text + onAccepted: downkbTooltipColor.text = downkbTooltipColorDialog.color } } Row { @@ -321,22 +321,22 @@ Item { text: i18n("Upload speed color") } QtControls.Button { - id: upTooltipColor + id: upkbTooltipColor width: parent.width * 3 / 5 style: QtStyles.ButtonStyle { background: Rectangle { - color: plasmoid.configuration.upTooltipColor + color: plasmoid.configuration.upkbTooltipColor } } - text: plasmoid.configuration.upTooltipColor - onClicked: upTooltipColorDialog.visible = true + text: plasmoid.configuration.upkbTooltipColor + onClicked: upkbTooltipColorDialog.visible = true } QtDialogs.ColorDialog { - id: upTooltipColorDialog + id: upkbTooltipColorDialog title: i18n("Select a color") - color: upTooltipColor.text - onAccepted: upTooltipColor.text = upTooltipColorDialog.color + color: upkbTooltipColor.text + onAccepted: upkbTooltipColor.text = upkbTooltipColorDialog.color } } } diff --git a/sources/awesome-widget/package/contents/ui/widget.qml b/sources/awesome-widget/package/contents/ui/widget.qml index 4c7c508..0034686 100644 --- a/sources/awesome-widget/package/contents/ui/widget.qml +++ b/sources/awesome-widget/package/contents/ui/widget.qml @@ -318,7 +318,7 @@ Item { onClicked: { lock = false awKeys.initKeys(textPattern.text, plasmoid.configuration.interval, - plasmoid.configuration.queueLimit) + plasmoid.configuration.queueLimit, false) awKeys.needToBeUpdated() } } @@ -346,7 +346,7 @@ Item { awKeys.needTextToBeUpdated.connect(needTextUpdate) // init submodule awKeys.initKeys(plasmoid.configuration.text, plasmoid.configuration.interval, - plasmoid.configuration.queueLimit) + plasmoid.configuration.queueLimit, false) awKeys.setAggregatorProperty("acOffline", plasmoid.configuration.acOffline) awKeys.setAggregatorProperty("acOnline", plasmoid.configuration.acOnline) awKeys.setAggregatorProperty("customTime", plasmoid.configuration.customTime) diff --git a/sources/awesome-widget/plugin/awdataaggregator.cpp b/sources/awesome-widget/plugin/awdataaggregator.cpp index 01b358c..4bc886f 100644 --- a/sources/awesome-widget/plugin/awdataaggregator.cpp +++ b/sources/awesome-widget/plugin/awdataaggregator.cpp @@ -87,7 +87,7 @@ void AWDataAggregator::setParameters(QVariantMap settings) counts += configuration[QString("cpuclTooltip")].toInt(); counts += configuration[QString("memTooltip")].toInt(); counts += configuration[QString("swapTooltip")].toInt(); - counts += configuration[QString("downTooltip")].toInt(); + counts += configuration[QString("downkbTooltip")].toInt(); counts += configuration[QString("batTooltip")].toInt(); // resize tooltip image toolTipView->resize(100 * counts, 105); @@ -96,8 +96,8 @@ void AWDataAggregator::setParameters(QVariantMap settings) boundaries[QString("cpuclTooltip")] = 4000.0; boundaries[QString("memTooltip")] = 100.0; boundaries[QString("swapTooltip")] = 100.0; - boundaries[QString("downTooltip")] = 1.0; - boundaries[QString("upTooltip")] = 1.0; + boundaries[QString("downkbTooltip")] = 1.0; + boundaries[QString("upkbTooltip")] = 1.0; boundaries[QString("batTooltip")] = 100.0; requiredKeys.clear(); @@ -109,10 +109,10 @@ void AWDataAggregator::setParameters(QVariantMap settings) requiredKeys.append(QString("memTooltip")); if (configuration[QString("swapTooltip")].toBool()) requiredKeys.append(QString("swapTooltip")); - if (configuration[QString("downTooltip")].toBool()) - requiredKeys.append(QString("downTooltip")); - if (configuration[QString("upTooltip")].toBool()) - requiredKeys.append(QString("upTooltip")); + if (configuration[QString("downkbTooltip")].toBool()) + requiredKeys.append(QString("downkbTooltip")); + if (configuration[QString("upkbTooltip")].toBool()) + requiredKeys.append(QString("upkbTooltip")); if (configuration[QString("batTooltip")].toBool()) requiredKeys.append(QString("batTooltip")); @@ -133,9 +133,9 @@ QPixmap AWDataAggregator::tooltipImage() bool down = false; for (auto key : requiredKeys) { // create frame - float normX = 100.0 / static_cast(data[key].count()); - float normY = 100.0 / (1.5 * boundaries[key]); - float shift = requiredKeys.indexOf(key) * 100.0; + float normX = 100.0f / static_cast(data[key].count()); + float normY = 100.0f / (1.5f * boundaries[key]); + float shift = requiredKeys.indexOf(key) * 100.0f; if (down) shift -= 100.0; // apply pen color @@ -146,9 +146,9 @@ QPixmap AWDataAggregator::tooltipImage() for (int j = 0; j < data[key].count() - 1; j++) { // some magic here float x1 = j * normX + shift; - float y1 = -fabs(data[key].at(j)) * normY + 5.0; + float y1 = -fabs(data[key].at(j)) * normY + 5.0f; float x2 = (j + 1) * normX + shift; - float y2 = -fabs(data[key].at(j + 1)) * normY + 5.0; + float y2 = -fabs(data[key].at(j + 1)) * normY + 5.0f; if (key == QString("batTooltip")) { if (data[key].at(j + 1) > 0) pen.setColor(QColor( @@ -160,7 +160,7 @@ QPixmap AWDataAggregator::tooltipImage() } toolTipScene->addLine(x1, y1, x2, y2, pen); } - if (key == QString("downTooltip")) + if (key == QString("downkbTooltip")) down = true; } @@ -265,8 +265,8 @@ void AWDataAggregator::setData(const QHash &values) setData(QString("cpuclTooltip"), values[QString("cpucl")].toFloat()); setData(QString("memTooltip"), values[QString("mem")].toFloat(), 90.0); setData(QString("swapTooltip"), values[QString("swap")].toFloat(), 0.0); - setData(QString("downTooltip"), values[QString("downkb")].toFloat()); - setData(QString("upTooltip"), values[QString("upkb")].toFloat()); + setData(QString("downkbTooltip"), values[QString("downkb")].toFloat()); + setData(QString("upkbTooltip"), values[QString("upkb")].toFloat()); // additional check for network device [this](const QString value) { checkValue(QString("netdev"), currentNetworkDevice, value); @@ -298,12 +298,13 @@ void AWDataAggregator::setData(const QString &source, float value, checkValue(source, value, extremum); data[source].append(value); - if (source == QString("downTooltip")) { + if (source == QString("downkbTooltip")) { QList netValues - = data[QString("downTooltip")] + data[QString("upTooltip")]; - boundaries[QString("downTooltip")] + = data[QString("downkbTooltip")] + data[QString("upkbTooltip")]; + boundaries[QString("downkbTooltip")] = 1.2 * *std::max_element(netValues.cbegin(), netValues.cend()); - boundaries[QString("upTooltip")] = boundaries[QString("downTooltip")]; + boundaries[QString("upkbTooltip")] + = boundaries[QString("downkbTooltip")]; } } diff --git a/sources/awesome-widget/plugin/awdataengineaggregator.cpp b/sources/awesome-widget/plugin/awdataengineaggregator.cpp index 7ff6642..4b75e7f 100644 --- a/sources/awesome-widget/plugin/awdataengineaggregator.cpp +++ b/sources/awesome-widget/plugin/awdataengineaggregator.cpp @@ -21,14 +21,10 @@ #include "awkeys.h" -AWDataEngineAggregator::AWDataEngineAggregator(QObject *parent, - const int interval) +AWDataEngineAggregator::AWDataEngineAggregator(QObject *parent) : QObject(parent) { qCDebug(LOG_AW) << __PRETTY_FUNCTION__; - - setInterval(interval); - initDataEngines(); } @@ -36,10 +32,17 @@ AWDataEngineAggregator::~AWDataEngineAggregator() { qCDebug(LOG_AW) << __PRETTY_FUNCTION__; + clear(); +} + + +void AWDataEngineAggregator::clear() +{ // disconnect sources first disconnectSources(); m_dataEngines.clear(); delete m_consumer; + m_consumer = nullptr; } @@ -51,11 +54,27 @@ void AWDataEngineAggregator::disconnectSources() } -void AWDataEngineAggregator::setInterval(const int _interval) +void AWDataEngineAggregator::initDataEngines(const int interval) { - qCDebug(LOG_AW) << "Interval" << _interval; + qCDebug(LOG_AW) << "Init dataengines with interval" << interval; - m_interval = _interval; + m_consumer = new Plasma::DataEngineConsumer(); + m_dataEngines[QString("systemmonitor")] + = m_consumer->dataEngine(QString("systemmonitor")); + m_dataEngines[QString("extsysmon")] + = m_consumer->dataEngine(QString("extsysmon")); + m_dataEngines[QString("time")] = m_consumer->dataEngine(QString("time")); + + // additional method required by systemmonitor structure + connect(m_dataEngines[QString("systemmonitor")], + &Plasma::DataEngine::sourceAdded, + [this, interval](const QString source) { + emit(deviceAdded(source)); + m_dataEngines[QString("systemmonitor")]->connectSource( + source, parent(), interval); + }); + + return reconnectSources(interval); } @@ -70,31 +89,13 @@ void AWDataEngineAggregator::dropSource(const QString source) } -void AWDataEngineAggregator::reconnectSources() +void AWDataEngineAggregator::reconnectSources(const int interval) { + qCDebug(LOG_AW) << "Reconnect sources with interval" << interval; + m_dataEngines[QString("systemmonitor")]->connectAllSources(parent(), - m_interval); - m_dataEngines[QString("extsysmon")]->connectAllSources(parent(), - m_interval); + interval); + m_dataEngines[QString("extsysmon")]->connectAllSources(parent(), interval); m_dataEngines[QString("time")]->connectSource(QString("Local"), parent(), 1000); } - - -void AWDataEngineAggregator::initDataEngines() -{ - m_consumer = new Plasma::DataEngineConsumer(); - m_dataEngines[QString("systemmonitor")] - = m_consumer->dataEngine(QString("systemmonitor")); - m_dataEngines[QString("extsysmon")] - = m_consumer->dataEngine(QString("extsysmon")); - m_dataEngines[QString("time")] = m_consumer->dataEngine(QString("time")); - - // additional method required by systemmonitor structure - connect(m_dataEngines[QString("systemmonitor")], - &Plasma::DataEngine::sourceAdded, [this](const QString source) { - emit(deviceAdded(source)); - m_dataEngines[QString("systemmonitor")]->connectSource( - source, parent(), m_interval); - }); -} diff --git a/sources/awesome-widget/plugin/awdataengineaggregator.h b/sources/awesome-widget/plugin/awdataengineaggregator.h index 229fce1..11afab3 100644 --- a/sources/awesome-widget/plugin/awdataengineaggregator.h +++ b/sources/awesome-widget/plugin/awdataengineaggregator.h @@ -28,28 +28,24 @@ class AWDataEngineAggregator : public QObject { Q_OBJECT - Q_PROPERTY(int interval MEMBER m_interval WRITE setInterval); public: - explicit AWDataEngineAggregator(QObject *parent = nullptr, - const int interval = 1000); + explicit AWDataEngineAggregator(QObject *parent = nullptr); virtual ~AWDataEngineAggregator(); + void clear(); void disconnectSources(); - // properties - void setInterval(const int _interval); + void initDataEngines(const int interval); signals: void deviceAdded(const QString &source); public slots: void dropSource(const QString source); - void reconnectSources(); + void reconnectSources(const int interval); private: - void initDataEngines(); Plasma::DataEngineConsumer *m_consumer = nullptr; QHash m_dataEngines; - int m_interval; }; diff --git a/sources/awesome-widget/plugin/awkeycache.cpp b/sources/awesome-widget/plugin/awkeycache.cpp index 4002f7d..c1133ad 100644 --- a/sources/awesome-widget/plugin/awkeycache.cpp +++ b/sources/awesome-widget/plugin/awkeycache.cpp @@ -81,6 +81,93 @@ bool AWKeyCache::addKeyToCache(const QString type, const QString key) } +QStringList AWKeyCache::getRequiredKeys(const QStringList &keys, + const QStringList &bars, + const QVariantMap &tooltip, + const QStringList &allKeys) +{ + qCDebug(LOG_AW) << "Looking for required keys in" << keys << bars + << "using tooltip settings" << tooltip; + + // initial copy + QSet used = QSet::fromList(keys); + // insert bars + for (auto bar : bars) { + bar.remove(QRegExp(QString("^bar[0-9]{1,}"))); + used << bar; + } + // insert keys from tooltip + for (auto key : tooltip.keys()) { + if ((key.endsWith(QString("Tooltip"))) && (tooltip[key].toBool())) { + key.remove(QString("Tooltip")); + used << key; + } + } + + // insert depending keys, refer to AWKeys::calculateValues() + // hddtotmb* + for (auto key : allKeys.filter(QRegExp(QString("^hddtotmb")))) { + if (!used.contains(key)) + continue; + key.remove(QString("hddtotmb")); + int index = key.toInt(); + used << QString("hddfreemb%1").arg(index) + << QString("hddmb%1").arg(index); + } + // hddtotgb* + for (auto key : allKeys.filter(QRegExp(QString("^hddtotgb")))) { + if (!used.contains(key)) + continue; + key.remove(QString("hddtotgb")); + int index = key.toInt(); + used << QString("hddfreegb%1").arg(index) + << QString("hddgb%1").arg(index); + } + // mem + if (used.contains(QString("mem"))) + used << QString("memmb") << QString("memtotmb"); + // memtotmb + if (used.contains(QString("memtotmb"))) + used << QString("memusedmb") << QString("memfreemb"); + // memtotgb + if (used.contains(QString("memtotgb"))) + used << QString("memusedgb") << QString("memfreegb"); + // swap + if (used.contains(QString("swap"))) + used << QString("swapmb") << QString("swaptotmb"); + // swaptotmb + if (used.contains(QString("swaptotmb"))) + used << QString("swapmb") << QString("swapfreemb"); + // memtotgb + if (used.contains(QString("swaptotgb"))) + used << QString("swapgb") << QString("swapfreegb"); + // network keys + QStringList netKeys(QStringList() << QString("up") << QString("upkb") + << QString("upunits") << QString("down") + << QString("downkb") + << QString("downunits")); + for (auto key : netKeys) { + if (!used.contains(key)) + continue; + QStringList filt + = allKeys.filter(QRegExp(QString("^%1[0-9]{1,}").arg(key))); + for (auto filtered : filt) + used << filtered; + } + // netdev key + if (std::any_of(netKeys.cbegin(), netKeys.cend(), + [&used](const QString &key) { return used.contains(key); })) + used << QString("netdev"); + + // HACK append dummy if there are no other keys. This hack is required + // because empty list leads to the same behaviour as skip checking + if (used.isEmpty()) + used << QString("dummy"); + + return used.toList(); +} + + QHash AWKeyCache::loadKeysFromCache() { QString fileName = QString("%1/awesomewidgets.ndx") diff --git a/sources/awesome-widget/plugin/awkeycache.h b/sources/awesome-widget/plugin/awkeycache.h index 806e61d..9685122 100644 --- a/sources/awesome-widget/plugin/awkeycache.h +++ b/sources/awesome-widget/plugin/awkeycache.h @@ -21,11 +21,15 @@ #include #include +#include namespace AWKeyCache { bool addKeyToCache(const QString type, const QString key = QString("")); +QStringList getRequiredKeys(const QStringList &keys, const QStringList &bars, + const QVariantMap &tooltip, + const QStringList &allKeys); QHash loadKeysFromCache(); }; diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index 23ccd90..eab56e3 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -25,6 +25,7 @@ #include "awdataaggregator.h" #include "awdataengineaggregator.h" #include "awdebug.h" +#include "awkeycache.h" #include "awkeyoperations.h" #include "awkeysaggregator.h" #include "awpatternfunctions.h" @@ -45,7 +46,9 @@ AWKeys::AWKeys(QObject *parent) aggregator = new AWKeysAggregator(this); dataAggregator = new AWDataAggregator(this); + dataEngineAggregator = new AWDataEngineAggregator(this); keyOperator = new AWKeyOperations(this); + // update key data if required connect(keyOperator, SIGNAL(updateKeys(QStringList)), this, SLOT(reinitKeys(QStringList))); @@ -53,6 +56,11 @@ AWKeys::AWKeys(QObject *parent) connect(dataAggregator, SIGNAL(toolTipPainted(const QString)), this, SIGNAL(needToolTipToBeUpdated(const QString))); connect(this, SIGNAL(needToBeUpdated()), this, SLOT(updateTextData())); + connect(this, SIGNAL(dropSourceFromDataengine(QString)), + dataEngineAggregator, SLOT(dropSource(QString))); + // transfer signal from dataengine to update source list + connect(dataEngineAggregator, SIGNAL(deviceAdded(const QString &)), + keyOperator, SLOT(addDevice(const QString &))); } @@ -73,32 +81,29 @@ void AWKeys::initDataAggregator(const QVariantMap tooltipParams) { qCDebug(LOG_AW) << "Tooltip parameters" << tooltipParams; - dataAggregator->setParameters(tooltipParams); + // store parameters to generate m_requiredKeys + m_tooltipParams = tooltipParams; + dataAggregator->setParameters(m_tooltipParams); } void AWKeys::initKeys(const QString currentPattern, const int interval, - const int limit) + const int limit, const bool optimize) { qCDebug(LOG_AW) << "Pattern" << currentPattern << "with interval" - << interval << "and queue limit" << limit; + << interval << "and queue limit" << limit + << "with optimization" << optimize; // init - keyOperator->setPattern(currentPattern); - if (dataEngineAggregator == nullptr) { - dataEngineAggregator = new AWDataEngineAggregator(this, interval); - connect(this, SIGNAL(dropSourceFromDataengine(QString)), - dataEngineAggregator, SLOT(dropSource(QString))); - // transfer signal from dataengine to update source list - connect(dataEngineAggregator, SIGNAL(deviceAdded(const QString &)), - keyOperator, SLOT(addDevice(const QString &))); - } else - dataEngineAggregator->setInterval(interval); + m_optimize = optimize; m_threadPool->setMaxThreadCount(limit == 0 ? QThread::idealThreadCount() : limit); + // child objects + keyOperator->setPattern(currentPattern); keyOperator->updateCache(); + dataEngineAggregator->clear(); - return dataEngineAggregator->reconnectSources(); + return dataEngineAggregator->initDataEngines(interval); } @@ -200,6 +205,11 @@ void AWKeys::reinitKeys(const QStringList currentKeys) m_foundKeys = AWPatternFunctions::findKeys(keyOperator->pattern(), currentKeys); m_foundLambdas = AWPatternFunctions::findLambdas(keyOperator->pattern()); + // get required keys + m_requiredKeys + = m_optimize ? AWKeyCache::getRequiredKeys(m_foundKeys, m_foundBars, + m_tooltipParams, currentKeys) + : QStringList(); // set key data to aggregator aggregator->setDevices(keyOperator->devices()); @@ -347,8 +357,8 @@ void AWKeys::setDataBySource(const QString &sourceName, const QVariantMap &data) // first list init QStringList tags = aggregator->keysFromSource(sourceName); if (tags.isEmpty()) - tags = aggregator->registerSource(sourceName, - data[QString("units")].toString()); + tags = aggregator->registerSource( + sourceName, data[QString("units")].toString(), m_requiredKeys); // update data or drop source if there are no matches and exit if (tags.isEmpty()) { diff --git a/sources/awesome-widget/plugin/awkeys.h b/sources/awesome-widget/plugin/awkeys.h index c3c0ff9..b834462 100644 --- a/sources/awesome-widget/plugin/awkeys.h +++ b/sources/awesome-widget/plugin/awkeys.h @@ -40,7 +40,7 @@ public: virtual ~AWKeys(); Q_INVOKABLE void initDataAggregator(const QVariantMap tooltipParams); Q_INVOKABLE void initKeys(const QString currentPattern, const int interval, - const int limit); + const int limit, const bool optimize); Q_INVOKABLE void setAggregatorProperty(const QString key, const QVariant value); Q_INVOKABLE void setWrapNewLines(const bool wrap = false); @@ -84,8 +84,10 @@ private: AWKeysAggregator *aggregator = nullptr; AWKeyOperations *keyOperator = nullptr; // variables - QStringList m_foundBars, m_foundKeys, m_foundLambdas; + QVariantMap m_tooltipParams; + QStringList m_foundBars, m_foundKeys, m_foundLambdas, m_requiredKeys; QHash values; + bool m_optimize = false; bool m_wrapNewLines = false; // multithread features QThreadPool *m_threadPool = nullptr; diff --git a/sources/awesome-widget/plugin/awkeysaggregator.cpp b/sources/awesome-widget/plugin/awkeysaggregator.cpp index f846b72..dc83ff6 100644 --- a/sources/awesome-widget/plugin/awkeysaggregator.cpp +++ b/sources/awesome-widget/plugin/awkeysaggregator.cpp @@ -154,15 +154,6 @@ QStringList AWKeysAggregator::keysFromSource(const QString &source) const } -QStringList -AWKeysAggregator::requiredByKeysFromSource(const QString &source) const -{ - qCDebug(LOG_AW) << "Search for source" << source; - - return m_requiredByMap.values(source); -} - - void AWKeysAggregator::setAcOffline(const QString inactive) { qCDebug(LOG_AW) << "Inactive AC string" << inactive; @@ -222,7 +213,8 @@ void AWKeysAggregator::setTranslate(const bool translate) // HACK units required to define should the value be calculated as temperature // or fan data QStringList AWKeysAggregator::registerSource(const QString &source, - const QString &units) + const QString &units, + const QStringList &keys) { qCDebug(LOG_AW) << "Source" << source << "with units" << units; @@ -338,11 +330,6 @@ QStringList AWKeysAggregator::registerSource(const QString &source, key = QString("hddfreegb%1").arg(index); m_map.insertMulti(source, key); m_formater[key] = MemGBFormat; - // fill required by list - m_requiredByMap.insertMulti(source, - QString("hddtotmb%1").arg(index)); - m_requiredByMap.insertMulti(source, - QString("hddtotgb%1").arg(index)); } } else if (source.contains(mountUsedRegExp)) { // used @@ -358,11 +345,6 @@ QStringList AWKeysAggregator::registerSource(const QString &source, key = QString("hddgb%1").arg(index); m_map.insertMulti(source, key); m_formater[key] = MemGBFormat; - // fill required by list - m_requiredByMap.insertMulti(source, - QString("hddtotmb%1").arg(index)); - m_requiredByMap.insertMulti(source, - QString("hddtotgb%1").arg(index)); } } else if (source.startsWith(QString("hdd/temperature"))) { // hdd temperature @@ -389,8 +371,6 @@ QStringList AWKeysAggregator::registerSource(const QString &source, // gb m_map.insertMulti(source, QString("memgb")); m_formater[QString("memgb")] = MemGBFormat; - // fill required by list - m_requiredByMap.insertMulti(source, QString("mem")); } else if (source == QString("mem/physical/free")) { // free memory // mb @@ -399,10 +379,6 @@ QStringList AWKeysAggregator::registerSource(const QString &source, // gb m_map.insertMulti(source, QString("memfreegb")); m_formater[QString("memfreegb")] = MemGBFormat; - // fill required by list - m_requiredByMap.insertMulti(source, QString("memtotmb")); - m_requiredByMap.insertMulti(source, QString("memtotgb")); - m_requiredByMap.insertMulti(source, QString("mem")); } else if (source == QString("mem/physical/used")) { // used memory // mb @@ -411,21 +387,10 @@ QStringList AWKeysAggregator::registerSource(const QString &source, // gb m_map.insertMulti(source, QString("memusedgb")); m_formater[QString("memusedgb")] = MemGBFormat; - // fill required by list - m_requiredByMap.insertMulti(source, QString("memtotmb")); - m_requiredByMap.insertMulti(source, QString("memtotgb")); - m_requiredByMap.insertMulti(source, QString("mem")); } else if (source == QString("network/current/name")) { // network device m_map[source] = QString("netdev"); m_formater[QString("netdev")] = NoFormat; - // fill required by list - m_requiredByMap.insertMulti(source, QString("down")); - m_requiredByMap.insertMulti(source, QString("downkb")); - m_requiredByMap.insertMulti(source, QString("downunits")); - m_requiredByMap.insertMulti(source, QString("up")); - m_requiredByMap.insertMulti(source, QString("upkb")); - m_requiredByMap.insertMulti(source, QString("upunits")); } else if (source.contains(netRegExp)) { // network speed QString type = source.contains(QString("receiver")) ? QString("down") @@ -446,13 +411,6 @@ QStringList AWKeysAggregator::registerSource(const QString &source, m_map.insertMulti(source, key); m_formater[key] = NetSmartUnits; } - // fill required by list - m_requiredByMap.insertMulti(source, QString("%1").arg(type)); - m_requiredByMap.insertMulti(source, QString("%1kb").arg(type)); - m_requiredByMap.insertMulti(source, QString("%1units").arg(type)); - m_requiredByMap.insertMulti(source, QString("%1").arg(type)); - m_requiredByMap.insertMulti(source, QString("%1kb").arg(type)); - m_requiredByMap.insertMulti(source, QString("%1units").arg(type)); } else if (source.startsWith(QString("upgrade"))) { // package manager QString key = source; @@ -491,10 +449,6 @@ QStringList AWKeysAggregator::registerSource(const QString &source, // gb m_map.insertMulti(source, QString("swapfreegb")); m_formater[QString("swapfreegb")] = MemGBFormat; - // fill required by list - m_requiredByMap.insertMulti(source, QString("swaptotmb")); - m_requiredByMap.insertMulti(source, QString("swaptotgb")); - m_requiredByMap.insertMulti(source, QString("swap")); } else if (source == QString("mem/swap/used")) { // used swap // mb @@ -503,10 +457,6 @@ QStringList AWKeysAggregator::registerSource(const QString &source, // gb m_map.insertMulti(source, QString("swapgb")); m_formater[QString("swapgb")] = MemGBFormat; - // fill required by list - m_requiredByMap.insertMulti(source, QString("swaptotmb")); - m_requiredByMap.insertMulti(source, QString("swaptotgb")); - m_requiredByMap.insertMulti(source, QString("swap")); } else if (source.startsWith(QString("lmsensors/"))) { // temperature int index = m_devices[QString("temp")].indexOf(source); @@ -561,6 +511,18 @@ QStringList AWKeysAggregator::registerSource(const QString &source, m_formater[key] = Temperature; } + // drop key from dictionary if no one user requested key required it + QStringList foundKeys = keysFromSource(source); + qCInfo(LOG_AW) << "Looking for keys" << foundKeys << "in" << keys; + // let required if key list is empty no one use it + bool required + = keys.isEmpty() || std::any_of(foundKeys.cbegin(), foundKeys.cend(), + [&keys](const QString &key) { + return keys.contains(key); + }); + if (!required) + m_map.remove(source); + return keysFromSource(source); } @@ -572,17 +534,17 @@ float AWKeysAggregator::temperature(const float temp) const float converted = temp; if (m_tempUnits == QString("Celsius")) { } else if (m_tempUnits == QString("Fahrenheit")) { - converted = temp * 9.0 / 5.0 + 32.0; + converted = temp * 9.0f / 5.0f + 32.0f; } else if (m_tempUnits == QString("Kelvin")) { - converted = temp + 273.15; + converted = temp + 273.15f; } else if (m_tempUnits == QString("Reaumur")) { - converted = temp * 0.8; + converted = temp * 0.8f; } else if (m_tempUnits == QString("cm^-1")) { - converted = (temp + 273.15) * 0.695; + converted = (temp + 273.15f) * 0.695f; } else if (m_tempUnits == QString("kJ/mol")) { - converted = (temp + 273.15) * 8.31; + converted = (temp + 273.15f) * 8.31f; } else if (m_tempUnits == QString("kcal/mol")) { - converted = (temp + 273.15) * 1.98; + converted = (temp + 273.15f) * 1.98f; } else { qCWarning(LOG_AW) << "Invalid units" << m_tempUnits; } diff --git a/sources/awesome-widget/plugin/awkeysaggregator.h b/sources/awesome-widget/plugin/awkeysaggregator.h index 37bfc77..1032d0d 100644 --- a/sources/awesome-widget/plugin/awkeysaggregator.h +++ b/sources/awesome-widget/plugin/awkeysaggregator.h @@ -67,7 +67,6 @@ public: // get methods QString formater(const QVariant &data, const QString &key) const; QStringList keysFromSource(const QString &source) const; - QStringList requiredByKeysFromSource(const QString &source) const; // set methods void setAcOffline(const QString inactive); void setAcOnline(const QString active); @@ -78,7 +77,8 @@ public: void setTranslate(const bool translate); public slots: - QStringList registerSource(const QString &source, const QString &units); + QStringList registerSource(const QString &source, const QString &units, + const QStringList &keys = QStringList()); private: float temperature(const float temp) const; @@ -91,7 +91,6 @@ private: QHash m_devices; QHash m_formater; QHash m_map; - QHash m_requiredByMap; QString m_tempUnits; bool m_translate = false; }; diff --git a/sources/translations/awesome-widgets.pot b/sources/translations/awesome-widgets.pot index 437a528..1a90bae 100644 --- a/sources/translations/awesome-widgets.pot +++ b/sources/translations/awesome-widgets.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -56,6 +56,9 @@ msgstr "" msgid "Check updates on startup" msgstr "" +msgid "Optimize subscription" +msgstr "" + msgid "Widget height, px" msgstr "" @@ -351,15 +354,15 @@ msgstr "" msgid "Weathers" msgstr "" +msgid "Functions" +msgstr "" + msgid "Add" msgstr "" msgid "Show value" msgstr "" -msgid "Add lambda" -msgstr "" - msgid "Edit bars" msgstr "" @@ -411,24 +414,6 @@ msgstr "" msgid "Select font" msgstr "" -msgid "You are using the actual version %1" -msgstr "" - -msgid "No new version found" -msgstr "" - -msgid "Current version : %1" -msgstr "" - -msgid "New version : %1" -msgstr "" - -msgid "Click \"Ok\" to download" -msgstr "" - -msgid "There are updates" -msgstr "" - msgid "AC online" msgstr "" @@ -456,6 +441,27 @@ msgstr "" msgid "KB/s" msgstr "" +msgid "Changelog of %1" +msgstr "" + +msgid "You are using the actual version %1" +msgstr "" + +msgid "No new version found" +msgstr "" + +msgid "Current version : %1" +msgstr "" + +msgid "New version : %1" +msgstr "" + +msgid "Click \"Ok\" to download" +msgstr "" + +msgid "There are updates" +msgstr "" + msgid "Copy" msgstr "" diff --git a/sources/translations/en.po b/sources/translations/en.po index c40d104..99a4ea9 100644 --- a/sources/translations/en.po +++ b/sources/translations/en.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" -"PO-Revision-Date: 2016-01-26 21:48+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" +"PO-Revision-Date: 2016-02-03 23:03+0700\n" "Last-Translator: Evgeniy Alekseev \n" "Language-Team: English \n" "Language: ru\n" @@ -57,6 +57,9 @@ msgstr "Enable notifications" msgid "Check updates on startup" msgstr "Check updates on startup" +msgid "Optimize subscription" +msgstr "Optimize subscription" + msgid "Widget height, px" msgstr "Widget height, px" @@ -356,15 +359,15 @@ msgstr "Upgrades" msgid "Weathers" msgstr "Weathers" +msgid "Functions" +msgstr "Functions" + msgid "Add" msgstr "Add" msgid "Show value" msgstr "Show value" -msgid "Add lambda" -msgstr "Add lambda" - msgid "Edit bars" msgstr "Edit bars" @@ -416,24 +419,6 @@ msgstr "Special thanks to %1" msgid "Select font" msgstr "Select font" -msgid "You are using the actual version %1" -msgstr "You are using the actual version %1" - -msgid "No new version found" -msgstr "No new version found" - -msgid "Current version : %1" -msgstr "Current version : %1" - -msgid "New version : %1" -msgstr "New version : %1" - -msgid "Click \"Ok\" to download" -msgstr "Click \"Ok\" to download" - -msgid "There are updates" -msgstr "There are updates" - msgid "AC online" msgstr "AC online" @@ -461,6 +446,27 @@ msgstr "MB/s" msgid "KB/s" msgstr "KB/s" +msgid "Changelog of %1" +msgstr "Changelog of %1" + +msgid "You are using the actual version %1" +msgstr "You are using the actual version %1" + +msgid "No new version found" +msgstr "No new version found" + +msgid "Current version : %1" +msgstr "Current version : %1" + +msgid "New version : %1" +msgstr "New version : %1" + +msgid "Click \"Ok\" to download" +msgstr "Click \"Ok\" to download" + +msgid "There are updates" +msgstr "There are updates" + msgid "Copy" msgstr "Copy" @@ -612,6 +618,9 @@ msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "esalexeev@gmail.com" +#~ msgid "Add lambda" +#~ msgstr "Add lambda" + #~ msgid "Free space on %1 less than 10%" #~ msgstr "Free space on %1 less than 10%" diff --git a/sources/translations/es.po b/sources/translations/es.po index b1b6c63..5dcfb6f 100644 --- a/sources/translations/es.po +++ b/sources/translations/es.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Awesome widgets\n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" "PO-Revision-Date: 2015-09-26 22:07+0000\n" "Last-Translator: Ernesto Avilés Vázquez \n" "Language-Team: Spanish (http://www.transifex.com/arcanis/awesome-widgets/" @@ -59,6 +59,9 @@ msgstr "Habilitar notificaciones" msgid "Check updates on startup" msgstr "Comprobar actualizaciones al inicio" +msgid "Optimize subscription" +msgstr "" + msgid "Widget height, px" msgstr "Alto del widget, px" @@ -361,15 +364,15 @@ msgstr "Actualizaciones" msgid "Weathers" msgstr "Tiempo" +msgid "Functions" +msgstr "" + msgid "Add" msgstr "Añadir" msgid "Show value" msgstr "Mostrar valor" -msgid "Add lambda" -msgstr "Añadir lambda" - msgid "Edit bars" msgstr "Editar barras" @@ -421,24 +424,6 @@ msgstr "" msgid "Select font" msgstr "Elegir tipo de letra" -msgid "You are using the actual version %1" -msgstr "Estás usando al versión actual %1" - -msgid "No new version found" -msgstr "No se encontraron nuevas versiones" - -msgid "Current version : %1" -msgstr "Versión actual: %1" - -msgid "New version : %1" -msgstr "Nueva versión: %1" - -msgid "Click \"Ok\" to download" -msgstr "Haz clic en «Ok» para descargar" - -msgid "There are updates" -msgstr "Hay actualizaciones disponibles" - msgid "AC online" msgstr "Alimentación conectada" @@ -466,6 +451,27 @@ msgstr "MB/s" msgid "KB/s" msgstr "KB/s" +msgid "Changelog of %1" +msgstr "" + +msgid "You are using the actual version %1" +msgstr "Estás usando al versión actual %1" + +msgid "No new version found" +msgstr "No se encontraron nuevas versiones" + +msgid "Current version : %1" +msgstr "Versión actual: %1" + +msgid "New version : %1" +msgstr "Nueva versión: %1" + +msgid "Click \"Ok\" to download" +msgstr "Haz clic en «Ok» para descargar" + +msgid "There are updates" +msgstr "Hay actualizaciones disponibles" + msgid "Copy" msgstr "Copiar" @@ -616,3 +622,6 @@ msgstr "Tu nombre" msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "Tu correo electrónico" + +#~ msgid "Add lambda" +#~ msgstr "Añadir lambda" diff --git a/sources/translations/fr.po b/sources/translations/fr.po index 34ddcf5..4c328a7 100644 --- a/sources/translations/fr.po +++ b/sources/translations/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" "PO-Revision-Date: 2015-07-31 22:16+0300\n" "Last-Translator: Evgeniy Alekseev \n" "Language-Team: French \n" @@ -61,6 +61,9 @@ msgstr "Activer les notifications" msgid "Check updates on startup" msgstr "Vérifier les mises à jour" +msgid "Optimize subscription" +msgstr "" + msgid "Widget height, px" msgstr "Paramètres du composant" @@ -371,15 +374,15 @@ msgstr "" msgid "Weathers" msgstr "Modifier les tickers" +msgid "Functions" +msgstr "" + msgid "Add" msgstr "Ajouter" msgid "Show value" msgstr "Afficher la valeur" -msgid "Add lambda" -msgstr "" - msgid "Edit bars" msgstr "Modifier les barres" @@ -431,27 +434,6 @@ msgstr "" msgid "Select font" msgstr "Sélectionner une couleur" -msgid "You are using the actual version %1" -msgstr "" - -#, fuzzy -msgid "No new version found" -msgstr "Nouvelle version" - -#, fuzzy -msgid "Current version : %1" -msgstr "Version actuelle" - -#, fuzzy -msgid "New version : %1" -msgstr "Nouvelle version" - -msgid "Click \"Ok\" to download" -msgstr "Cliquer sur \"Valider\" pour télécharger" - -msgid "There are updates" -msgstr "Des mises à jour sont disponibles" - msgid "AC online" msgstr "Alimentation branchée" @@ -479,6 +461,30 @@ msgstr "" msgid "KB/s" msgstr "" +msgid "Changelog of %1" +msgstr "" + +msgid "You are using the actual version %1" +msgstr "" + +#, fuzzy +msgid "No new version found" +msgstr "Nouvelle version" + +#, fuzzy +msgid "Current version : %1" +msgstr "Version actuelle" + +#, fuzzy +msgid "New version : %1" +msgstr "Nouvelle version" + +msgid "Click \"Ok\" to download" +msgstr "Cliquer sur \"Valider\" pour télécharger" + +msgid "There are updates" +msgstr "Des mises à jour sont disponibles" + msgid "Copy" msgstr "Copier" diff --git a/sources/translations/nl.po b/sources/translations/nl.po index 9c4a562..6450b0b 100644 --- a/sources/translations/nl.po +++ b/sources/translations/nl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Awesome widgets\n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" "PO-Revision-Date: 2015-08-20 22:52+0300\n" "Last-Translator: Evgeniy Alekseev \n" "Language-Team: Dutch \n" @@ -61,6 +61,9 @@ msgstr "" msgid "Check updates on startup" msgstr "Controleren op updates" +msgid "Optimize subscription" +msgstr "" + msgid "Widget height, px" msgstr "" @@ -373,15 +376,15 @@ msgstr "" msgid "Weathers" msgstr "Balken bewerken" +msgid "Functions" +msgstr "" + msgid "Add" msgstr "Toevoegen" msgid "Show value" msgstr "Waarde weergeven" -msgid "Add lambda" -msgstr "" - msgid "Edit bars" msgstr "Balken bewerken" @@ -436,25 +439,6 @@ msgstr "" msgid "Select font" msgstr "Lettertype selecteren" -msgid "You are using the actual version %1" -msgstr "" - -#, fuzzy -msgid "No new version found" -msgstr "Nieuwe versie: %1" - -msgid "Current version : %1" -msgstr "Huidige versie: %1" - -msgid "New version : %1" -msgstr "Nieuwe versie: %1" - -msgid "Click \"Ok\" to download" -msgstr "Klik op \"OK\" om te downloaden" - -msgid "There are updates" -msgstr "Er zijn updates" - msgid "AC online" msgstr "AC online" @@ -483,6 +467,28 @@ msgstr "" msgid "KB/s" msgstr "" +msgid "Changelog of %1" +msgstr "" + +msgid "You are using the actual version %1" +msgstr "" + +#, fuzzy +msgid "No new version found" +msgstr "Nieuwe versie: %1" + +msgid "Current version : %1" +msgstr "Huidige versie: %1" + +msgid "New version : %1" +msgstr "Nieuwe versie: %1" + +msgid "Click \"Ok\" to download" +msgstr "Klik op \"OK\" om te downloaden" + +msgid "There are updates" +msgstr "Er zijn updates" + msgid "Copy" msgstr "Kopiëren" diff --git a/sources/translations/pt_BR.po b/sources/translations/pt_BR.po index 9cb71f1..0a46a37 100644 --- a/sources/translations/pt_BR.po +++ b/sources/translations/pt_BR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" "PO-Revision-Date: 2015-07-31 22:21+0300\n" "Last-Translator: Evgeniy Alekseev \n" "Language-Team: Russian \n" @@ -60,6 +60,9 @@ msgstr "Ativar notificações" msgid "Check updates on startup" msgstr "Checar por atualizações" +msgid "Optimize subscription" +msgstr "" + msgid "Widget height, px" msgstr "Altura do widget, px" @@ -372,15 +375,15 @@ msgstr "" msgid "Weathers" msgstr "Editar relógios" +msgid "Functions" +msgstr "" + msgid "Add" msgstr "Adicionar" msgid "Show value" msgstr "Mostrar valor" -msgid "Add lambda" -msgstr "" - msgid "Edit bars" msgstr "Editar barras" @@ -432,25 +435,6 @@ msgstr "" msgid "Select font" msgstr "Selecionar fonte" -msgid "You are using the actual version %1" -msgstr "" - -#, fuzzy -msgid "No new version found" -msgstr "Nova versão: %1" - -msgid "Current version : %1" -msgstr "Versão atual: %1" - -msgid "New version : %1" -msgstr "Nova versão: %1" - -msgid "Click \"Ok\" to download" -msgstr "Clique \"Ok\" para baixar" - -msgid "There are updates" -msgstr "Há atualizações disponíveis" - msgid "AC online" msgstr "Carregador conectado" @@ -478,6 +462,28 @@ msgstr "" msgid "KB/s" msgstr "" +msgid "Changelog of %1" +msgstr "" + +msgid "You are using the actual version %1" +msgstr "" + +#, fuzzy +msgid "No new version found" +msgstr "Nova versão: %1" + +msgid "Current version : %1" +msgstr "Versão atual: %1" + +msgid "New version : %1" +msgstr "Nova versão: %1" + +msgid "Click \"Ok\" to download" +msgstr "Clique \"Ok\" para baixar" + +msgid "There are updates" +msgstr "Há atualizações disponíveis" + msgid "Copy" msgstr "Copiar" diff --git a/sources/translations/ru.po b/sources/translations/ru.po index 97a8e6b..b0207f1 100644 --- a/sources/translations/ru.po +++ b/sources/translations/ru.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" -"PO-Revision-Date: 2016-01-26 21:49+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" +"PO-Revision-Date: 2016-02-03 23:04+0700\n" "Last-Translator: Evgeniy Alekseev \n" "Language-Team: Russian \n" "Language: ru\n" @@ -57,6 +57,9 @@ msgstr "Включить уведомления " msgid "Check updates on startup" msgstr "Проверять обновления при запуске" +msgid "Optimize subscription" +msgstr "Оптимизировать подписку" + msgid "Widget height, px" msgstr "Высота виджета, пиксели" @@ -356,15 +359,15 @@ msgstr "Обновления" msgid "Weathers" msgstr "Погода" +msgid "Functions" +msgstr "Функции" + msgid "Add" msgstr "Добавить" msgid "Show value" msgstr "Показать значение" -msgid "Add lambda" -msgstr "Добавить лямбду" - msgid "Edit bars" msgstr "Редактировать бары" @@ -411,29 +414,11 @@ msgid "This software uses: %1" msgstr "Данное приложение использует: %1" msgid "Special thanks to %1" -msgstr "Отдельно спасибо %1" +msgstr "Отдельное спасибо %1" msgid "Select font" msgstr "Выберете шрифт" -msgid "You are using the actual version %1" -msgstr "Вы используете актуальную версию %1" - -msgid "No new version found" -msgstr "Обновления не найдены" - -msgid "Current version : %1" -msgstr "Текущая версия : %1" - -msgid "New version : %1" -msgstr "Новая версия : %1" - -msgid "Click \"Ok\" to download" -msgstr "Нажмите \"Ok\" для загрузки" - -msgid "There are updates" -msgstr "Найдены обновления" - msgid "AC online" msgstr "AC подключен" @@ -461,6 +446,27 @@ msgstr "МБ/с" msgid "KB/s" msgstr "КБ/с" +msgid "Changelog of %1" +msgstr "Список изменений %1" + +msgid "You are using the actual version %1" +msgstr "Вы используете актуальную версию %1" + +msgid "No new version found" +msgstr "Обновления не найдены" + +msgid "Current version : %1" +msgstr "Текущая версия : %1" + +msgid "New version : %1" +msgstr "Новая версия : %1" + +msgid "Click \"Ok\" to download" +msgstr "Нажмите \"Ok\" для загрузки" + +msgid "There are updates" +msgstr "Найдены обновления" + msgid "Copy" msgstr "Копировать" @@ -612,6 +618,9 @@ msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "esalexeev@gmail.com" +#~ msgid "Add lambda" +#~ msgstr "Добавить лямбду" + #~ msgid "Free space on %1 less than 10%" #~ msgstr "Свободное место на диске %1 меньше 10%" diff --git a/sources/translations/uk.po b/sources/translations/uk.po index 330f72e..4c527ac 100644 --- a/sources/translations/uk.po +++ b/sources/translations/uk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" "PO-Revision-Date: 2015-09-27 12:37+0300\n" "Last-Translator: Evgeniy Alekseev \n" "Language-Team: Ukrainian \n" @@ -59,6 +59,9 @@ msgstr "Включити повідомлення" msgid "Check updates on startup" msgstr "Перевіряти оновлення при запуску" +msgid "Optimize subscription" +msgstr "" + msgid "Widget height, px" msgstr "Висота віджету, пікселі" @@ -374,15 +377,15 @@ msgstr "Оновлення" msgid "Weathers" msgstr "Погода" +msgid "Functions" +msgstr "" + msgid "Add" msgstr "Додати" msgid "Show value" msgstr "Показати значення" -msgid "Add lambda" -msgstr "Додати лямбду" - msgid "Edit bars" msgstr "Редагувати бари" @@ -434,25 +437,6 @@ msgstr "" msgid "Select font" msgstr "Оберіть шрифт" -msgid "You are using the actual version %1" -msgstr "Ви використовуєте актуальну версію %1" - -#, fuzzy -msgid "No new version found" -msgstr "Оновлень не знайдено" - -msgid "Current version : %1" -msgstr "Поточна версія : %1" - -msgid "New version : %1" -msgstr "Нова версія : %1" - -msgid "Click \"Ok\" to download" -msgstr "Натисніть \"Ok\" для завантаження" - -msgid "There are updates" -msgstr "Знайдені оновлення" - msgid "AC online" msgstr "AC підключений" @@ -480,6 +464,28 @@ msgstr "МБ/с" msgid "KB/s" msgstr "КБ/с" +msgid "Changelog of %1" +msgstr "" + +msgid "You are using the actual version %1" +msgstr "Ви використовуєте актуальну версію %1" + +#, fuzzy +msgid "No new version found" +msgstr "Оновлень не знайдено" + +msgid "Current version : %1" +msgstr "Поточна версія : %1" + +msgid "New version : %1" +msgstr "Нова версія : %1" + +msgid "Click \"Ok\" to download" +msgstr "Натисніть \"Ok\" для завантаження" + +msgid "There are updates" +msgstr "Знайдені оновлення" + msgid "Copy" msgstr "Копіювати" @@ -640,6 +646,9 @@ msgctxt "EMAIL OF TRANSLATORS" msgid "Your emails" msgstr "sarumyan@i.ua" +#~ msgid "Add lambda" +#~ msgstr "Додати лямбду" + #~ msgid "Free space on %1 less than 10%" #~ msgstr "Вільний простір на диску %1 меньше ніж 10%" diff --git a/sources/translations/zh.po b/sources/translations/zh.po index 20de05f..41754da 100644 --- a/sources/translations/zh.po +++ b/sources/translations/zh.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/awesome-widgets/issues\n" -"POT-Creation-Date: 2016-01-26 21:48+0300\n" +"POT-Creation-Date: 2016-02-03 23:02+0700\n" "PO-Revision-Date: 2015-07-31 22:24+0300\n" "Last-Translator: Evgeniy Alekseev \n" "Language-Team: Russian \n" @@ -57,6 +57,9 @@ msgstr "" msgid "Check updates on startup" msgstr "" +msgid "Optimize subscription" +msgstr "" + msgid "Widget height, px" msgstr "" @@ -369,15 +372,15 @@ msgstr "" msgid "Weathers" msgstr "可编辑的" +msgid "Functions" +msgstr "" + msgid "Add" msgstr "添加" msgid "Show value" msgstr "" -msgid "Add lambda" -msgstr "" - #, fuzzy msgid "Edit bars" msgstr "可编辑的" @@ -430,24 +433,6 @@ msgstr "" msgid "Select font" msgstr "选择字体" -msgid "You are using the actual version %1" -msgstr "" - -msgid "No new version found" -msgstr "" - -msgid "Current version : %1" -msgstr "" - -msgid "New version : %1" -msgstr "" - -msgid "Click \"Ok\" to download" -msgstr "" - -msgid "There are updates" -msgstr "" - #, fuzzy msgid "AC online" msgstr "外接电源使用中标签" @@ -477,6 +462,27 @@ msgstr "" msgid "KB/s" msgstr "" +msgid "Changelog of %1" +msgstr "" + +msgid "You are using the actual version %1" +msgstr "" + +msgid "No new version found" +msgstr "" + +msgid "Current version : %1" +msgstr "" + +msgid "New version : %1" +msgstr "" + +msgid "Click \"Ok\" to download" +msgstr "" + +msgid "There are updates" +msgstr "" + msgid "Copy" msgstr ""