From e525cb47423796aa28f18423eb6e3893b9a4f991 Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Sat, 18 Apr 2020 03:04:32 +0300 Subject: [PATCH] do not replace space to nbsp in some cases (#143) --- CONTRIBUTING.md | 2 +- README.md | 1 + sources/awesome-widget/plugin/awabstractpairhelper.cpp | 9 ++++++++- sources/awesome-widget/plugin/awabstractpairhelper.h | 1 + sources/awesome-widget/plugin/awcustomkeyshelper.cpp | 6 +++--- sources/awesome-widget/plugin/awkeycache.cpp | 8 ++++---- sources/awesome-widget/plugin/awkeys.cpp | 4 ++-- sources/awesome-widget/plugin/awkeysaggregator.cpp | 5 +++-- sources/awesome-widget/plugin/awkeysaggregator.h | 2 +- sources/awesome-widget/plugin/awpatternfunctions.cpp | 2 +- sources/compiler.cmake | 2 +- sources/test/testawtelemetryhandler.cpp | 2 +- 12 files changed, 27 insertions(+), 17 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 67bf515..7875483 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -38,7 +38,7 @@ for more details. To avoid manual labor there is automatic cmake target named * `Q_PROPERTY` macro is allowed and recommended for QObject based classes. * Qt macros (e.g. `signals`, `slots`, `Q_OBJECT`, etc) are allowed. In other hand `Q_FOREACH` (`foreach`) is not allowed use `for (auto &foo : bar)` instead. -* Current project standard is **C++11**. +* Current project standard is **C++17**. * Do not use C-like code: * C-like style iteration if possible. Use `for (auto &foo : bar)` and `std::for_each` instead if possible. It is also recommended to use iterators. diff --git a/README.md b/README.md index 0df934f..4b50279 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ Optional dependencies * hddtemp * smartmontools * music player (mpd or MPRIS supported) +* wireless_tools Make dependencies ----------------- diff --git a/sources/awesome-widget/plugin/awabstractpairhelper.cpp b/sources/awesome-widget/plugin/awabstractpairhelper.cpp index 43c828d..e8d8426 100644 --- a/sources/awesome-widget/plugin/awabstractpairhelper.cpp +++ b/sources/awesome-widget/plugin/awabstractpairhelper.cpp @@ -58,6 +58,13 @@ QStringList AWAbstractPairHelper::values() const } +QSet AWAbstractPairHelper::valuesSet() const +{ + auto values = m_pairs.values(); + return QSet(values.cbegin(), values.cend()); +} + + void AWAbstractPairHelper::initItems() { m_pairs.clear(); @@ -131,4 +138,4 @@ bool AWAbstractPairHelper::removeUnusedKeys(const QStringList &_keys) const settings.sync(); return (settings.status() == QSettings::NoError); -} +} \ No newline at end of file diff --git a/sources/awesome-widget/plugin/awabstractpairhelper.h b/sources/awesome-widget/plugin/awabstractpairhelper.h index 404fb84..bc05669 100644 --- a/sources/awesome-widget/plugin/awabstractpairhelper.h +++ b/sources/awesome-widget/plugin/awabstractpairhelper.h @@ -30,6 +30,7 @@ public: QStringList keys() const; QHash pairs() const; QStringList values() const; + QSet valuesSet() const; // read-write methods virtual void initItems(); virtual bool writeItems(const QHash &_configuration) const; diff --git a/sources/awesome-widget/plugin/awcustomkeyshelper.cpp b/sources/awesome-widget/plugin/awcustomkeyshelper.cpp index efda044..0be9c4d 100644 --- a/sources/awesome-widget/plugin/awcustomkeyshelper.cpp +++ b/sources/awesome-widget/plugin/awcustomkeyshelper.cpp @@ -46,13 +46,13 @@ QString AWCustomKeysHelper::source(const QString &_key) const QStringList AWCustomKeysHelper::sources() const { - return QSet::fromList(values()).toList(); + return valuesSet().values(); } QStringList AWCustomKeysHelper::refinedSources() const { - auto allSources = QSet::fromList(pairs().values()); + auto allSources = valuesSet(); QSet output; while (output != allSources) { @@ -62,7 +62,7 @@ QStringList AWCustomKeysHelper::refinedSources() const allSources = output; } - return output.toList(); + return output.values(); } diff --git a/sources/awesome-widget/plugin/awkeycache.cpp b/sources/awesome-widget/plugin/awkeycache.cpp index 92f77a5..15aab94 100644 --- a/sources/awesome-widget/plugin/awkeycache.cpp +++ b/sources/awesome-widget/plugin/awkeycache.cpp @@ -83,9 +83,9 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringL << _tooltip; // initial copy - QSet used = QSet::fromList(_keys); - used.unite(QSet::fromList(_bars)); - used.unite(QSet::fromList(_userKeys)); + QSet used(_keys.cbegin(), _keys.cend()); + used.unite(QSet(_bars.cbegin(), _bars.cend())); + used.unite(QSet(_userKeys.cbegin(), _userKeys.cend())); // insert keys from tooltip for (auto &key : _tooltip.keys()) { if ((key.endsWith("Tooltip")) && (_tooltip[key].toBool())) { @@ -155,7 +155,7 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringL if (used.isEmpty()) used << "dummy"; - return used.toList(); + return used.values(); } diff --git a/sources/awesome-widget/plugin/awkeys.cpp b/sources/awesome-widget/plugin/awkeys.cpp index 36f0705..af9b52d 100644 --- a/sources/awesome-widget/plugin/awkeys.cpp +++ b/sources/awesome-widget/plugin/awkeys.cpp @@ -189,7 +189,7 @@ QString AWKeys::valueByKey(const QString &_key) const QString trueKey = _key.startsWith("bar") ? m_keyOperator->infoByKey(_key) : _key; - return m_aggregator->formatter(m_values[trueKey], trueKey); + return m_aggregator->formatter(m_values[trueKey], trueKey, true); } @@ -340,7 +340,7 @@ QString AWKeys::parsePattern(QString _pattern) const // main keys for (auto &key : m_foundKeys) - _pattern.replace(QString("$%1").arg(key), m_aggregator->formatter(m_values[key], key)); + _pattern.replace(QString("$%1").arg(key), m_aggregator->formatter(m_values[key], key, true)); // bars for (auto &bar : m_foundBars) { diff --git a/sources/awesome-widget/plugin/awkeysaggregator.cpp b/sources/awesome-widget/plugin/awkeysaggregator.cpp index d9c460f..de7c339 100644 --- a/sources/awesome-widget/plugin/awkeysaggregator.cpp +++ b/sources/awesome-widget/plugin/awkeysaggregator.cpp @@ -55,7 +55,7 @@ void AWKeysAggregator::initFormatters() } -QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key) const +QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key, bool replaceSpace) const { qCDebug(LOG_AW) << "Data" << _data << "for key" << _key; @@ -162,7 +162,8 @@ QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key) } // replace spaces to non-breakable ones - if (!_key.startsWith("custom") && (!_key.startsWith("weather"))) + replaceSpace &= (!_key.startsWith("custom") && (!_key.startsWith("weather"))); + if (replaceSpace) output.replace(" ", " "); return output; diff --git a/sources/awesome-widget/plugin/awkeysaggregator.h b/sources/awesome-widget/plugin/awkeysaggregator.h index 83ef50f..c2bd1c1 100644 --- a/sources/awesome-widget/plugin/awkeysaggregator.h +++ b/sources/awesome-widget/plugin/awkeysaggregator.h @@ -69,7 +69,7 @@ public: ~AWKeysAggregator() override; void initFormatters(); // get methods - QString formatter(const QVariant &_data, const QString &_key) const; + QString formatter(const QVariant &_data, const QString &_key, bool replaceSpace) const; QStringList keysFromSource(const QString &_source) const; // set methods void setAcOffline(const QString &_inactive); diff --git a/sources/awesome-widget/plugin/awpatternfunctions.cpp b/sources/awesome-widget/plugin/awpatternfunctions.cpp index 5cbe322..1e5e00f 100644 --- a/sources/awesome-widget/plugin/awpatternfunctions.cpp +++ b/sources/awesome-widget/plugin/awpatternfunctions.cpp @@ -36,7 +36,7 @@ QString AWPatternFunctions::expandLambdas(QString _code, AWKeysAggregator *_aggr // parsed values for (auto &lambdaKey : _usedKeys) _code.replace(QString("$%1").arg(lambdaKey), - _aggregator->formatter(_metadata[lambdaKey], lambdaKey)); + _aggregator->formatter(_metadata[lambdaKey], lambdaKey, false)); qCInfo(LOG_AW) << "Expression" << _code; QJSValue result = engine.evaluate(_code); if (result.isError()) { diff --git a/sources/compiler.cmake b/sources/compiler.cmake index 9e6a05c..0e25c13 100644 --- a/sources/compiler.cmake +++ b/sources/compiler.cmake @@ -17,7 +17,7 @@ else () endif () # some flags -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # verbose output for debug builds diff --git a/sources/test/testawtelemetryhandler.cpp b/sources/test/testawtelemetryhandler.cpp index b4181e0..ffb0e79 100644 --- a/sources/test/testawtelemetryhandler.cpp +++ b/sources/test/testawtelemetryhandler.cpp @@ -51,7 +51,7 @@ void TestAWTelemetryHandler::test_get() QStringList output = plugin->get(telemetryGroup); QVERIFY(!output.isEmpty()); - QCOMPARE(QSet::fromList(output).count(), output.count()); + QCOMPARE(QSet(output.cbegin(), output.cend()).count(), output.count()); QVERIFY(output.contains(telemetryData)); }