wayland support

This commit is contained in:
Evgenii Alekseev 2023-05-15 12:00:46 +03:00
parent 84de9755b5
commit 69dec8ed54
87 changed files with 521 additions and 713 deletions

View File

@ -20,7 +20,7 @@ BreakBeforeBinaryOperators: All
BreakBeforeBraces: Linux BreakBeforeBraces: Linux
BreakBeforeTernaryOperators: true BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true BreakConstructorInitializersBeforeComma: true
ColumnLimit: 100 ColumnLimit: 120
CommentPragmas: '^ IWYU pragma:' CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4 ConstructorInitializerIndentWidth: 4
@ -58,7 +58,7 @@ SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false SpacesInCStyleCastParentheses: false
SpacesInParentheses: false SpacesInParentheses: false
SpacesInSquareBrackets: false SpacesInSquareBrackets: false
Standard: Cpp11 Standard: Latest
TabWidth: 8 TabWidth: 8
UseTab: Never UseTab: Never
... ...

View File

@ -41,25 +41,15 @@ QString AWDebug::getAboutText(const QString &_type)
} else if (_type == "description") { } else if (_type == "description") {
text = i18n("A set of minimalistic plasmoid widgets"); text = i18n("A set of minimalistic plasmoid widgets");
} else if (_type == "links") { } else if (_type == "links") {
text = i18n("Links:") + "<ul>" text = i18n("Links:") + "<ul>" + QString("<li><a href=\"%1\">%2</a></li>").arg(HOMEPAGE).arg(i18n("Homepage"))
+ QString("<li><a href=\"%1\">%2</a></li>").arg(HOMEPAGE).arg(i18n("Homepage"))
+ QString("<li><a href=\"%1\">%2</a></li>").arg(REPOSITORY).arg(i18n("Repository")) + QString("<li><a href=\"%1\">%2</a></li>").arg(REPOSITORY).arg(i18n("Repository"))
+ QString("<li><a href=\"%1\">%2</a></li>").arg(BUGTRACKER).arg(i18n("Bugtracker")) + QString("<li><a href=\"%1\">%2</a></li>").arg(BUGTRACKER).arg(i18n("Bugtracker"))
+ QString("<li><a href=\"%1\">%2</a></li>") + QString("<li><a href=\"%1\">%2</a></li>").arg(TRANSLATION).arg(i18n("Translation issue"))
.arg(TRANSLATION) + QString("<li><a href=\"%1\">%2</a></li>").arg(AUR_PACKAGES).arg(i18n("AUR packages"))
.arg(i18n("Translation issue")) + QString("<li><a href=\"%1\">%2</a></li>").arg(OPENSUSE_PACKAGES).arg(i18n("openSUSE packages"))
+ QString("<li><a href=\"%1\">%2</a></li>")
.arg(AUR_PACKAGES)
.arg(i18n("AUR packages"))
+ QString("<li><a href=\"%1\">%2</a></li>")
.arg(OPENSUSE_PACKAGES)
.arg(i18n("openSUSE packages"))
+ "</ul>"; + "</ul>";
} else if (_type == "copy") { } else if (_type == "copy") {
text = QString("<small>&copy; %1 <a href=\"mailto:%2\">%3</a><br>") text = QString("<small>&copy; %1 <a href=\"mailto:%2\">%3</a><br>").arg(DATE).arg(EMAIL).arg(AUTHOR)
.arg(DATE)
.arg(EMAIL)
.arg(AUTHOR)
+ i18nc("This software is licensed under %1", LICENSE) + "</small>"; + i18nc("This software is licensed under %1", LICENSE) + "</small>";
} else if (_type == "translators") { } else if (_type == "translators") {
QStringList translatorList = QString(TRANSLATORS).split(','); QStringList translatorList = QString(TRANSLATORS).split(',');
@ -114,8 +104,7 @@ QStringList AWDebug::getBuildData()
metadata.append(QString(" CMAKE_CXX_FLAGS: %1").arg(CMAKE_CXX_FLAGS)); metadata.append(QString(" CMAKE_CXX_FLAGS: %1").arg(CMAKE_CXX_FLAGS));
metadata.append(QString(" CMAKE_CXX_FLAGS_DEBUG: %1").arg(CMAKE_CXX_FLAGS_DEBUG)); metadata.append(QString(" CMAKE_CXX_FLAGS_DEBUG: %1").arg(CMAKE_CXX_FLAGS_DEBUG));
metadata.append(QString(" CMAKE_CXX_FLAGS_RELEASE: %1").arg(CMAKE_CXX_FLAGS_RELEASE)); metadata.append(QString(" CMAKE_CXX_FLAGS_RELEASE: %1").arg(CMAKE_CXX_FLAGS_RELEASE));
metadata.append( metadata.append(QString(" CMAKE_CXX_FLAGS_OPTIMIZATION: %1").arg(CMAKE_CXX_FLAGS_OPTIMIZATION));
QString(" CMAKE_CXX_FLAGS_OPTIMIZATION: %1").arg(CMAKE_CXX_FLAGS_OPTIMIZATION));
metadata.append(QString(" CMAKE_DEFINITIONS: %1").arg(CMAKE_DEFINITIONS)); metadata.append(QString(" CMAKE_DEFINITIONS: %1").arg(CMAKE_DEFINITIONS));
metadata.append(QString(" CMAKE_INSTALL_PREFIX: %1").arg(CMAKE_INSTALL_PREFIX)); metadata.append(QString(" CMAKE_INSTALL_PREFIX: %1").arg(CMAKE_INSTALL_PREFIX));
metadata.append(QString(" CMAKE_MODULE_LINKER_FLAGS: %1").arg(CMAKE_MODULE_LINKER_FLAGS)); metadata.append(QString(" CMAKE_MODULE_LINKER_FLAGS: %1").arg(CMAKE_MODULE_LINKER_FLAGS));

View File

@ -107,8 +107,7 @@ void AWAbstractPairConfig::updateUi()
void AWAbstractPairConfig::addSelector(const QStringList &_keys, const QStringList &_values, void AWAbstractPairConfig::addSelector(const QStringList &_keys, const QStringList &_values,
const QPair<QString, QString> &_current) const QPair<QString, QString> &_current)
{ {
qCDebug(LOG_AW) << "Add selector with keys" << _keys << "values" << _values qCDebug(LOG_AW) << "Add selector with keys" << _keys << "values" << _values << "and current ones" << _current;
<< "and current ones" << _current;
auto *selector = new AWAbstractSelector(ui->scrollAreaWidgetContents, m_editable); auto *selector = new AWAbstractSelector(ui->scrollAreaWidgetContents, m_editable);
selector->init(_keys, _values, _current); selector->init(_keys, _values, _current);

View File

@ -35,8 +35,7 @@ class AWAbstractPairConfig : public QDialog
Q_OBJECT Q_OBJECT
public: public:
explicit AWAbstractPairConfig(QWidget *_parent = nullptr, bool _hasEdit = false, explicit AWAbstractPairConfig(QWidget *_parent = nullptr, bool _hasEdit = false, QStringList _keys = QStringList());
QStringList _keys = QStringList());
~AWAbstractPairConfig() override; ~AWAbstractPairConfig() override;
template <class T> void initHelper() template <class T> void initHelper()
{ {
@ -62,8 +61,7 @@ private:
bool m_hasEdit = false; bool m_hasEdit = false;
QStringList m_keys; QStringList m_keys;
// methods // methods
void addSelector(const QStringList &_keys, const QStringList &_values, void addSelector(const QStringList &_keys, const QStringList &_values, const QPair<QString, QString> &_current);
const QPair<QString, QString> &_current);
void clearSelectors(); void clearSelectors();
void execDialog(); void execDialog();
[[nodiscard]] QPair<QStringList, QStringList> initKeys() const; [[nodiscard]] QPair<QStringList, QStringList> initKeys() const;

View File

@ -69,8 +69,7 @@ void AWAbstractPairHelper::initItems()
{ {
m_pairs.clear(); m_pairs.clear();
QStringList configs QStringList configs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_filePath);
= QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_filePath);
for (auto &fileName : configs) { for (auto &fileName : configs) {
QSettings settings(fileName, QSettings::IniFormat); QSettings settings(fileName, QSettings::IniFormat);
@ -80,8 +79,7 @@ void AWAbstractPairHelper::initItems()
QStringList keys = settings.childKeys(); QStringList keys = settings.childKeys();
for (auto &key : keys) { for (auto &key : keys) {
QString value = settings.value(key).toString(); QString value = settings.value(key).toString();
qCInfo(LOG_AW) << "Found key" << key << "for value" << value << "in" qCInfo(LOG_AW) << "Found key" << key << "for value" << value << "in" << settings.fileName();
<< settings.fileName();
if (value.isEmpty()) { if (value.isEmpty()) {
qCInfo(LOG_AW) << "Skip empty value for" << key; qCInfo(LOG_AW) << "Skip empty value for" << key;
continue; continue;
@ -98,9 +96,7 @@ bool AWAbstractPairHelper::writeItems(const QHash<QString, QString> &_configurat
qCDebug(LOG_AW) << "Write configuration" << _configuration; qCDebug(LOG_AW) << "Write configuration" << _configuration;
QString fileName QString fileName
= QString("%1/%2") = QString("%1/%2").arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)).arg(m_filePath);
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation))
.arg(m_filePath);
QSettings settings(fileName, QSettings::IniFormat); QSettings settings(fileName, QSettings::IniFormat);
qCInfo(LOG_AW) << "Configuration file" << fileName; qCInfo(LOG_AW) << "Configuration file" << fileName;
@ -120,9 +116,7 @@ bool AWAbstractPairHelper::removeUnusedKeys(const QStringList &_keys) const
qCDebug(LOG_AW) << "Remove keys" << _keys; qCDebug(LOG_AW) << "Remove keys" << _keys;
QString fileName QString fileName
= QString("%1/%2") = QString("%1/%2").arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)).arg(m_filePath);
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation))
.arg(m_filePath);
QSettings settings(fileName, QSettings::IniFormat); QSettings settings(fileName, QSettings::IniFormat);
qCInfo(LOG_AW) << "Configuration file" << fileName; qCInfo(LOG_AW) << "Configuration file" << fileName;

View File

@ -60,8 +60,8 @@ void AWAbstractSelector::init(const QStringList &_keys, const QStringList &_valu
qCWarning(LOG_AW) << "Invalid current value" << _current << "not found in default ones"; qCWarning(LOG_AW) << "Invalid current value" << _current << "not found in default ones";
return; return;
} }
qCDebug(LOG_AW) << "Init selector with keys" << _keys << "and values" << _values qCDebug(LOG_AW) << "Init selector with keys" << _keys << "and values" << _values << "and current ones are"
<< "and current ones are" << _current; << _current;
// set data // set data
ui->comboBox_key->clear(); ui->comboBox_key->clear();

View File

@ -32,12 +32,10 @@ class AWAbstractSelector : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit AWAbstractSelector(QWidget *_parent = nullptr, explicit AWAbstractSelector(QWidget *_parent = nullptr, const QPair<bool, bool> &_editable = {false, false});
const QPair<bool, bool> &_editable = {false, false});
~AWAbstractSelector() override; ~AWAbstractSelector() override;
[[nodiscard]] QPair<QString, QString> current() const; [[nodiscard]] QPair<QString, QString> current() const;
void init(const QStringList &_keys, const QStringList &_values, void init(const QStringList &_keys, const QStringList &_values, const QPair<QString, QString> &_current);
const QPair<QString, QString> &_current);
signals: signals:
void selectionChanged(); void selectionChanged();

View File

@ -124,8 +124,8 @@ QVariantMap AWActions::getFont(const QVariantMap &_defaultFont)
QVariantMap fontMap; QVariantMap fontMap;
int ret = 0; int ret = 0;
CFont defaultCFont = CFont(_defaultFont["family"].toString(), _defaultFont["size"].toInt(), 400, CFont defaultCFont = CFont(_defaultFont["family"].toString(), _defaultFont["size"].toInt(), 400, false,
false, _defaultFont["color"].toString()); _defaultFont["color"].toString());
CFont font = CFontDialog::getFont(i18n("Select font"), defaultCFont, false, false, &ret); CFont font = CFontDialog::getFont(i18n("Select font"), defaultCFont, false, false, &ret);
fontMap["applied"] = ret; fontMap["applied"] = ret;

View File

@ -44,13 +44,12 @@ AWBugReporter::~AWBugReporter()
void AWBugReporter::doConnect() void AWBugReporter::doConnect()
{ {
// additional method for testing needs // additional method for testing needs
connect(this, SIGNAL(replyReceived(const int, const QString &)), this, connect(this, SIGNAL(replyReceived(const int, const QString &)), this, SLOT(showInformation(int, const QString &)));
SLOT(showInformation(int, const QString &)));
} }
QString AWBugReporter::generateText(const QString &_description, const QString &_reproduce, QString AWBugReporter::generateText(const QString &_description, const QString &_reproduce, const QString &_expected,
const QString &_expected, const QString &_logs) const QString &_logs)
{ {
// do not log _logs here, it may have quite large size // do not log _logs here, it may have quite large size
qCDebug(LOG_AW) << "Generate text with description" << _description << "steps" << _reproduce qCDebug(LOG_AW) << "Generate text with description" << _description << "steps" << _reproduce
@ -73,8 +72,7 @@ void AWBugReporter::sendBugReport(const QString &_title, const QString &_body)
qCDebug(LOG_AW) << "Send bug report with title" << _title << "and body" << _body; qCDebug(LOG_AW) << "Send bug report with title" << _title << "and body" << _body;
auto *manager = new QNetworkAccessManager(nullptr); auto *manager = new QNetworkAccessManager(nullptr);
connect(manager, SIGNAL(finished(QNetworkReply *)), this, connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(issueReplyRecieved(QNetworkReply *)));
SLOT(issueReplyRecieved(QNetworkReply *)));
QNetworkRequest request = QNetworkRequest(QUrl(BUGTRACKER_API)); QNetworkRequest request = QNetworkRequest(QUrl(BUGTRACKER_API));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
@ -95,8 +93,7 @@ void AWBugReporter::sendBugReport(const QString &_title, const QString &_body)
void AWBugReporter::issueReplyRecieved(QNetworkReply *_reply) void AWBugReporter::issueReplyRecieved(QNetworkReply *_reply)
{ {
if (_reply->error() != QNetworkReply::NoError) { if (_reply->error() != QNetworkReply::NoError) {
qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString();
<< _reply->errorString();
return emit(replyReceived(0, "")); return emit(replyReceived(0, ""));
} }

View File

@ -31,8 +31,7 @@ AWConfigHelper::AWConfigHelper(QObject *_parent)
{ {
qCDebug(LOG_AW) << __PRETTY_FUNCTION__; qCDebug(LOG_AW) << __PRETTY_FUNCTION__;
m_baseDir = QString("%1/awesomewidgets") m_baseDir = QString("%1/awesomewidgets").arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
} }
@ -45,8 +44,7 @@ AWConfigHelper::~AWConfigHelper()
QString AWConfigHelper::configurationDirectory() QString AWConfigHelper::configurationDirectory()
{ {
// get readable directory // get readable directory
QString localDir QString localDir = QString("%1/awesomewidgets/configs")
= QString("%1/awesomewidgets/configs")
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)); .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
// create directory and copy files from default settings // create directory and copy files from default settings
@ -63,8 +61,7 @@ QString AWConfigHelper::configurationDirectory()
bool AWConfigHelper::dropCache() bool AWConfigHelper::dropCache()
{ {
QString fileName QString fileName
= QString("%1/awesomewidgets.ndx") = QString("%1/awesomewidgets.ndx").arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
return QFile(fileName).remove(); return QFile(fileName).remove();
} }
@ -88,8 +85,8 @@ bool AWConfigHelper::exportConfiguration(QObject *_nativeConfig, const QString &
// extensions // extensions
for (auto &item : m_dirs) { for (auto &item : m_dirs) {
QStringList items = QDir(QString("%1/%2").arg(m_baseDir).arg(item)) QStringList items
.entryList(QStringList() << "*.desktop", QDir::Files); = QDir(QString("%1/%2").arg(m_baseDir).arg(item)).entryList(QStringList() << "*.desktop", QDir::Files);
settings.beginGroup(item); settings.beginGroup(item);
for (auto &it : items) for (auto &it : items)
copyExtensions(it, item, settings, false); copyExtensions(it, item, settings, false);
@ -99,11 +96,9 @@ bool AWConfigHelper::exportConfiguration(QObject *_nativeConfig, const QString &
// additional files // additional files
settings.beginGroup("json"); settings.beginGroup("json");
// script filters // script filters
readFile(settings, "filters", readFile(settings, "filters", QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(m_baseDir));
QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(m_baseDir));
// weather icon settings // weather icon settings
readFile(settings, "weathers", readFile(settings, "weathers", QString("%1/weather/awesomewidgets-extweather-ids.json").arg(m_baseDir));
QString("%1/weather/awesomewidgets-extweather-ids.json").arg(m_baseDir));
settings.endGroup(); settings.endGroup();
settings.beginGroup("ini"); settings.beginGroup("ini");
@ -120,10 +115,8 @@ bool AWConfigHelper::exportConfiguration(QObject *_nativeConfig, const QString &
} }
QVariantMap AWConfigHelper::importConfiguration(const QString &_fileName, QVariantMap AWConfigHelper::importConfiguration(const QString &_fileName, const bool _importPlasmoid,
const bool _importPlasmoid, const bool _importExtensions, const bool _importAdds) const
const bool _importExtensions,
const bool _importAdds) const
{ {
qCDebug(LOG_AW) << "Selected filename" << _fileName; qCDebug(LOG_AW) << "Selected filename" << _fileName;
@ -144,11 +137,9 @@ QVariantMap AWConfigHelper::importConfiguration(const QString &_fileName,
if (_importAdds) { if (_importAdds) {
settings.beginGroup("json"); settings.beginGroup("json");
// script filters // script filters
writeFile(settings, "filters", writeFile(settings, "filters", QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(m_baseDir));
QString("%1/scripts/awesomewidgets-extscripts-filters.json").arg(m_baseDir));
// weather icon settings // weather icon settings
writeFile(settings, "weathers", writeFile(settings, "weathers", QString("%1/weather/awesomewidgets-extweather-ids.json").arg(m_baseDir));
QString("%1/weather/awesomewidgets-extweather-ids.json").arg(m_baseDir));
settings.endGroup(); settings.endGroup();
settings.beginGroup("ini"); settings.beginGroup("ini");
@ -173,8 +164,7 @@ QVariantMap AWConfigHelper::importConfiguration(const QString &_fileName,
QVariantMap AWConfigHelper::readDataEngineConfiguration() QVariantMap AWConfigHelper::readDataEngineConfiguration()
{ {
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, "plasma-dataengine-extsysmon.conf");
"plasma-dataengine-extsysmon.conf");
qCInfo(LOG_AW) << "Configuration file" << fileName; qCInfo(LOG_AW) << "Configuration file" << fileName;
QSettings settings(fileName, QSettings::IniFormat); QSettings settings(fileName, QSettings::IniFormat);
QVariantMap configuration; QVariantMap configuration;
@ -228,8 +218,7 @@ void AWConfigHelper::copyConfigs(const QString &_localDir)
{ {
qCDebug(LOG_AW) << "Local directory" << _localDir; qCDebug(LOG_AW) << "Local directory" << _localDir;
QStringList dirs QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "awesomewidgets/configs",
= QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, "awesomewidgets/configs",
QStandardPaths::LocateDirectory); QStandardPaths::LocateDirectory);
for (auto &dir : dirs) { for (auto &dir : dirs) {
if (dir == _localDir) if (dir == _localDir)
@ -238,21 +227,19 @@ void AWConfigHelper::copyConfigs(const QString &_localDir)
for (auto &source : files) { for (auto &source : files) {
QString destination = QString("%1/%2").arg(_localDir).arg(source); QString destination = QString("%1/%2").arg(_localDir).arg(source);
bool status = QFile::copy(QString("%1/%2").arg(dir).arg(source), destination); bool status = QFile::copy(QString("%1/%2").arg(dir).arg(source), destination);
qCInfo(LOG_AW) << "File" << source << "has been copied to" << destination qCInfo(LOG_AW) << "File" << source << "has been copied to" << destination << "with status" << status;
<< "with status" << status;
} }
} }
} }
void AWConfigHelper::copyExtensions(const QString &_item, const QString &_type, void AWConfigHelper::copyExtensions(const QString &_item, const QString &_type, QSettings &_settings,
QSettings &_settings, const bool _inverse) const const bool _inverse) const
{ {
qCDebug(LOG_AW) << "Extension" << _item << "has type" << _type << "inverse copying" << _inverse; qCDebug(LOG_AW) << "Extension" << _item << "has type" << _type << "inverse copying" << _inverse;
_settings.beginGroup(_item); _settings.beginGroup(_item);
QSettings itemSettings(QString("%1/%2/%3").arg(m_baseDir).arg(_type).arg(_item), QSettings itemSettings(QString("%1/%2/%3").arg(m_baseDir).arg(_type).arg(_item), QSettings::IniFormat);
QSettings::IniFormat);
itemSettings.beginGroup("Desktop Entry"); itemSettings.beginGroup("Desktop Entry");
if (_inverse) if (_inverse)
copySettings(_settings, itemSettings); copySettings(_settings, itemSettings);

View File

@ -35,10 +35,8 @@ public:
Q_INVOKABLE [[nodiscard]] static QString configurationDirectory(); Q_INVOKABLE [[nodiscard]] static QString configurationDirectory();
Q_INVOKABLE static bool dropCache(); Q_INVOKABLE static bool dropCache();
Q_INVOKABLE bool exportConfiguration(QObject *_nativeConfig, const QString &_fileName) const; Q_INVOKABLE bool exportConfiguration(QObject *_nativeConfig, const QString &_fileName) const;
Q_INVOKABLE [[nodiscard]] QVariantMap importConfiguration(const QString &_fileName, Q_INVOKABLE [[nodiscard]] QVariantMap importConfiguration(const QString &_fileName, bool _importPlasmoid,
bool _importPlasmoid, bool _importExtensions, bool _importAdds) const;
bool _importExtensions,
bool _importAdds) const;
// dataengine // dataengine
Q_INVOKABLE static QVariantMap readDataEngineConfiguration(); Q_INVOKABLE static QVariantMap readDataEngineConfiguration();
Q_INVOKABLE static bool writeDataEngineConfiguration(const QVariantMap &_configuration); Q_INVOKABLE static bool writeDataEngineConfiguration(const QVariantMap &_configuration);
@ -46,8 +44,7 @@ public:
private: private:
// methods // methods
static void copyConfigs(const QString &_localDir); static void copyConfigs(const QString &_localDir);
void copyExtensions(const QString &_item, const QString &_type, QSettings &_settings, void copyExtensions(const QString &_item, const QString &_type, QSettings &_settings, bool _inverse) const;
bool _inverse) const;
static void copySettings(QSettings &_from, QSettings &_to); static void copySettings(QSettings &_from, QSettings &_to);
static void readFile(QSettings &_settings, const QString &_key, const QString &_fileName); static void readFile(QSettings &_settings, const QString &_key, const QString &_fileName);
static void writeFile(QSettings &_settings, const QString &_key, const QString &_fileName); static void writeFile(QSettings &_settings, const QString &_key, const QString &_fileName);

View File

@ -27,8 +27,7 @@ class AWCustomKeysConfig : public AWAbstractPairConfig
Q_OBJECT Q_OBJECT
public: public:
explicit AWCustomKeysConfig(QWidget *_parent = nullptr, explicit AWCustomKeysConfig(QWidget *_parent = nullptr, const QStringList &_keys = QStringList());
const QStringList &_keys = QStringList());
~AWCustomKeysConfig() override; ~AWCustomKeysConfig() override;
}; };

View File

@ -61,8 +61,7 @@ QString AWDataAggregator::htmlImage(const QPixmap &_source)
_source.save(&buffer, "PNG"); _source.save(&buffer, "PNG");
return byteArray.isEmpty() ? "" return byteArray.isEmpty() ? ""
: QString("<img src=\"data:image/png;base64,%1\"/>") : QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64()));
.arg(QString(byteArray.toBase64()));
} }
@ -102,8 +101,7 @@ void AWDataAggregator::setParameters(const QVariantMap &_settings)
requiredKeys.append("batTooltip"); requiredKeys.append("batTooltip");
// background // background
m_toolTipScene->setBackgroundBrush( m_toolTipScene->setBackgroundBrush(m_configuration["useTooltipBackground"].toBool()
m_configuration["useTooltipBackground"].toBool()
? QBrush(QColor(m_configuration["tooltipBackground"].toString())) ? QBrush(QColor(m_configuration["tooltipBackground"].toString()))
: QBrush(Qt::NoBrush)); : QBrush(Qt::NoBrush));
} }
@ -156,11 +154,10 @@ void AWDataAggregator::dataUpdate(const QVariantHash &_values)
} }
void AWDataAggregator::checkValue(const QString &_source, const float _value, void AWDataAggregator::checkValue(const QString &_source, const float _value, const float _extremum) const
const float _extremum) const
{ {
qCDebug(LOG_AW) << "Notification source" << _source << "with value" << _value qCDebug(LOG_AW) << "Notification source" << _source << "with value" << _value << "called with extremum"
<< "called with extremum" << _extremum; << _extremum;
if (_value >= 0.0) { if (_value >= 0.0) {
if ((m_enablePopup) && (_value > _extremum) && (m_values[_source].last() < _extremum)) if ((m_enablePopup) && (_value > _extremum) && (m_values[_source].last() < _extremum))
@ -172,11 +169,10 @@ void AWDataAggregator::checkValue(const QString &_source, const float _value,
} }
void AWDataAggregator::checkValue(const QString &_source, const QString &_current, void AWDataAggregator::checkValue(const QString &_source, const QString &_current, const QString &_received) const
const QString &_received) const
{ {
qCDebug(LOG_AW) << "Notification source" << _source << "with current value" << _current qCDebug(LOG_AW) << "Notification source" << _source << "with current value" << _current << "and received one"
<< "and received one" << _received; << _received;
if ((m_enablePopup) && (_current != _received) && (!_received.isEmpty())) if ((m_enablePopup) && (_current != _received) && (!_received.isEmpty()))
return AWActions::sendNotification("event", notificationText(_source, _received)); return AWActions::sendNotification("event", notificationText(_source, _received));
@ -231,8 +227,7 @@ void AWDataAggregator::setData(const QVariantHash &_values)
{ {
// do not log these arguments // do not log these arguments
// battery update requires info is AC online or not // battery update requires info is AC online or not
setData(_values["ac"].toString() == m_configuration["acOnline"], "batTooltip", setData(_values["ac"].toString() == m_configuration["acOnline"], "batTooltip", _values["bat"].toFloat());
_values["bat"].toFloat());
// usual case // usual case
setData("cpuTooltip", _values["cpu"].toFloat(), 90.0); setData("cpuTooltip", _values["cpu"].toFloat(), 90.0);
setData("cpuclTooltip", _values["cpucl"].toFloat()); setData("cpuclTooltip", _values["cpucl"].toFloat());
@ -269,8 +264,7 @@ void AWDataAggregator::setData(const QString &_source, float _value, const float
QList<float> netValues = m_values["downkbTooltip"] + m_values["upkbTooltip"]; QList<float> netValues = m_values["downkbTooltip"] + m_values["upkbTooltip"];
// to avoid inf value of normY // to avoid inf value of normY
netValues << 1.0; netValues << 1.0;
m_boundaries["downkbTooltip"] m_boundaries["downkbTooltip"] = 1.2f * *std::max_element(netValues.cbegin(), netValues.cend());
= 1.2f * *std::max_element(netValues.cbegin(), netValues.cend());
m_boundaries["upkbTooltip"] = m_boundaries["downkbTooltip"]; m_boundaries["upkbTooltip"] = m_boundaries["downkbTooltip"];
} }
} }
@ -278,8 +272,7 @@ void AWDataAggregator::setData(const QString &_source, float _value, const float
void AWDataAggregator::setData(const bool _dontInvert, const QString &_source, float _value) void AWDataAggregator::setData(const bool _dontInvert, const QString &_source, float _value)
{ {
qCDebug(LOG_AW) << "Do not invert" << _dontInvert << "value" << _value << "for source" qCDebug(LOG_AW) << "Do not invert" << _dontInvert << "value" << _value << "for source" << _source;
<< _source;
// invert values for different battery colours // invert values for different battery colours
_value = _dontInvert ? _value : -_value; _value = _dontInvert ? _value : -_value;

View File

@ -50,8 +50,7 @@ private:
QGraphicsScene *m_toolTipScene = nullptr; QGraphicsScene *m_toolTipScene = nullptr;
QGraphicsView *m_toolTipView = nullptr; QGraphicsView *m_toolTipView = nullptr;
void checkValue(const QString &_source, float _value, float _extremum) const; void checkValue(const QString &_source, float _value, float _extremum) const;
void checkValue(const QString &_source, const QString &_current, void checkValue(const QString &_source, const QString &_current, const QString &_received) const;
const QString &_received) const;
void initScene(); void initScene();
static QString notificationText(const QString &_source, float _value); static QString notificationText(const QString &_source, float _value);
static QString notificationText(const QString &_source, const QString &_value); static QString notificationText(const QString &_source, const QString &_value);

View File

@ -35,8 +35,7 @@ AWDataEngineAggregator::AWDataEngineAggregator(QObject *_parent)
// additional method required by systemmonitor structure // additional method required by systemmonitor structure
m_newSourceConnection m_newSourceConnection
= connect(m_dataEngines["systemmonitor"], &Plasma::DataEngine::sourceAdded, = connect(m_dataEngines["systemmonitor"], &Plasma::DataEngine::sourceAdded, [this](const QString &source) {
[this](const QString &source) {
emit(deviceAdded(source)); emit(deviceAdded(source));
m_dataEngines["systemmonitor"]->connectSource(source, parent(), 1000); m_dataEngines["systemmonitor"]->connectSource(source, parent(), 1000);
}); });
@ -74,8 +73,7 @@ void AWDataEngineAggregator::reconnectSources(const int _interval)
m_dataEngines["time"]->connectSource("Local", parent(), 1000); m_dataEngines["time"]->connectSource("Local", parent(), 1000);
m_newSourceConnection = connect( m_newSourceConnection = connect(
m_dataEngines["systemmonitor"], &Plasma::DataEngine::sourceAdded, m_dataEngines["systemmonitor"], &Plasma::DataEngine::sourceAdded, [this, _interval](const QString &source) {
[this, _interval](const QString &source) {
emit(deviceAdded(source)); emit(deviceAdded(source));
m_dataEngines["systemmonitor"]->connectSource(source, parent(), (uint)_interval); m_dataEngines["systemmonitor"]->connectSource(source, parent(), (uint)_interval);
}); });
@ -103,12 +101,10 @@ void AWDataEngineAggregator::createQueuedConnection()
// for more details refer to plasma-framework source code // for more details refer to plasma-framework source code
for (auto &dataEngine : m_dataEngines.keys()) { for (auto &dataEngine : m_dataEngines.keys()) {
// different source set for different engines // different source set for different engines
QStringList sources = dataEngine == "time" ? QStringList() << "Local" QStringList sources = dataEngine == "time" ? QStringList() << "Local" : m_dataEngines[dataEngine]->sources();
: m_dataEngines[dataEngine]->sources();
// reconnect sources // reconnect sources
for (auto &source : sources) { for (auto &source : sources) {
Plasma::DataContainer *container Plasma::DataContainer *container = m_dataEngines[dataEngine]->containerForSource(source);
= m_dataEngines[dataEngine]->containerForSource(source);
// disconnect old connections first // disconnect old connections first
disconnect(container, SIGNAL(dataUpdated(QString, Plasma::DataEngine::Data)), parent(), disconnect(container, SIGNAL(dataUpdated(QString, Plasma::DataEngine::Data)), parent(),
SLOT(dataUpdated(QString, Plasma::DataEngine::Data))); SLOT(dataUpdated(QString, Plasma::DataEngine::Data)));

View File

@ -76,8 +76,7 @@ QStringList AWDataEngineMapper::keysFromSource(const QString &_source) const
// HACK units required to define should the value be calculated as temperature // HACK units required to define should the value be calculated as temperature
// or fan data // or fan data
QStringList AWDataEngineMapper::registerSource(const QString &_source, const QString &_units, QStringList AWDataEngineMapper::registerSource(const QString &_source, const QString &_units, const QStringList &_keys)
const QStringList &_keys)
{ {
qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; qCDebug(LOG_AW) << "Source" << _source << "with units" << _units;
@ -180,10 +179,8 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
m_map.insert(_source, key); m_map.insert(_source, key);
m_formatter[key] = AWKeysAggregator::FormatterType::Float; m_formatter[key] = AWKeysAggregator::FormatterType::Float;
// additional keys // additional keys
m_formatter[QString("hddtotmb%1").arg(index)] m_formatter[QString("hddtotmb%1").arg(index)] = AWKeysAggregator::FormatterType::MemMBFormat;
= AWKeysAggregator::FormatterType::MemMBFormat; m_formatter[QString("hddtotgb%1").arg(index)] = AWKeysAggregator::FormatterType::MemGBFormat;
m_formatter[QString("hddtotgb%1").arg(index)]
= AWKeysAggregator::FormatterType::MemGBFormat;
} }
} else if (_source.contains(mountFreeRegExp)) { } else if (_source.contains(mountFreeRegExp)) {
// free space // free space
@ -427,9 +424,9 @@ QStringList AWDataEngineMapper::registerSource(const QString &_source, const QSt
// drop key from dictionary if no one user requested key required it // drop key from dictionary if no one user requested key required it
qCInfo(LOG_AW) << "Looking for keys" << foundKeys << "in" << _keys; qCInfo(LOG_AW) << "Looking for keys" << foundKeys << "in" << _keys;
bool required = _keys.isEmpty() bool required = _keys.isEmpty() || std::any_of(foundKeys.cbegin(), foundKeys.cend(), [&_keys](const QString &key) {
|| std::any_of(foundKeys.cbegin(), foundKeys.cend(), return _keys.contains(key);
[&_keys](const QString &key) { return _keys.contains(key); }); });
if (!required) { if (!required) {
m_map.remove(_source); m_map.remove(_source);
for (auto &key : foundKeys) for (auto &key : foundKeys)

View File

@ -38,8 +38,7 @@ public:
[[nodiscard]] AWKeysAggregator::FormatterType formatter(const QString &_key) const; [[nodiscard]] AWKeysAggregator::FormatterType formatter(const QString &_key) const;
[[nodiscard]] QStringList keysFromSource(const QString &_source) const; [[nodiscard]] QStringList keysFromSource(const QString &_source) const;
// set methods // set methods
QStringList registerSource(const QString &_source, const QString &_units, QStringList registerSource(const QString &_source, const QString &_units, const QStringList &_keys);
const QStringList &_keys);
void setDevices(const QHash<QString, QStringList> &_devices); void setDevices(const QHash<QString, QStringList> &_devices);
private: private:

View File

@ -40,8 +40,7 @@ AWDBusAdaptor::~AWDBusAdaptor()
QStringList AWDBusAdaptor::ActiveServices() const QStringList AWDBusAdaptor::ActiveServices() const
{ {
QDBusMessage listServices QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, "ListNames");
= QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, "ListNames");
if (listServices.arguments().isEmpty()) { if (listServices.arguments().isEmpty()) {
qCWarning(LOG_DBUS) << "Could not find any DBus service"; qCWarning(LOG_DBUS) << "Could not find any DBus service";
return {}; return {};
@ -86,8 +85,7 @@ void AWDBusAdaptor::SetLogLevel(const QString &what, const int level)
qCDebug(LOG_DBUS) << "Set log level" << level << "for" << what; qCDebug(LOG_DBUS) << "Set log level" << level << "for" << what;
if (level >= m_logLevels.count()) { if (level >= m_logLevels.count()) {
qCDebug(LOG_DBUS) << "Invalid logging level" << level << "should be less than" qCDebug(LOG_DBUS) << "Invalid logging level" << level << "should be less than" << m_logLevels.count();
<< m_logLevels.count();
return; return;
} }

View File

@ -27,8 +27,7 @@ class AWFormatterConfig : public AWAbstractPairConfig
Q_OBJECT Q_OBJECT
public: public:
explicit AWFormatterConfig(QWidget *_parent = nullptr, explicit AWFormatterConfig(QWidget *_parent = nullptr, const QStringList &_keys = QStringList());
const QStringList &_keys = QStringList());
~AWFormatterConfig() override; ~AWFormatterConfig() override;
}; };

View File

@ -120,8 +120,7 @@ void AWFormatterHelper::editItems()
} }
AWAbstractFormatter::FormatterClass AWAbstractFormatter::FormatterClass AWFormatterHelper::defineFormatterClass(const QString &_stringType)
AWFormatterHelper::defineFormatterClass(const QString &_stringType)
{ {
qCDebug(LOG_AW) << "Define formatter class for" << _stringType; qCDebug(LOG_AW) << "Define formatter class for" << _stringType;
@ -163,9 +162,7 @@ void AWFormatterHelper::initFormatters()
// check if already exists // check if already exists
auto values = m_formattersClasses.values(); auto values = m_formattersClasses.values();
if (std::any_of(values.cbegin(), values.cend(), if (std::any_of(values.cbegin(), values.cend(),
[&filePath](const AWAbstractFormatter *item) { [&filePath](const AWAbstractFormatter *item) { return (item->fileName() == filePath); }))
return (item->fileName() == filePath);
}))
continue; continue;
auto metadata = readMetadata(filePath); auto metadata = readMetadata(filePath);
@ -197,8 +194,7 @@ void AWFormatterHelper::initFormatters()
} }
QPair<QString, AWAbstractFormatter::FormatterClass> QPair<QString, AWAbstractFormatter::FormatterClass> AWFormatterHelper::readMetadata(const QString &_filePath)
AWFormatterHelper::readMetadata(const QString &_filePath)
{ {
qCDebug(LOG_AW) << "Read initial parameters from" << _filePath; qCDebug(LOG_AW) << "Read initial parameters from" << _filePath;
@ -217,8 +213,7 @@ void AWFormatterHelper::doCreateItem()
{ {
QStringList selection = {"NoFormat", "DateTime", "Float", "List", "Script", "String", "Json"}; QStringList selection = {"NoFormat", "DateTime", "Float", "List", "Script", "String", "Json"};
bool ok; bool ok;
QString select QString select = QInputDialog::getItem(this, i18n("Select type"), i18n("Type:"), selection, 0, false, &ok);
= QInputDialog::getItem(this, i18n("Select type"), i18n("Type:"), selection, 0, false, &ok);
if (!ok) { if (!ok) {
qCWarning(LOG_AW) << "No type selected"; qCWarning(LOG_AW) << "No type selected";
return; return;

View File

@ -49,8 +49,7 @@ private:
// methods // methods
static AWAbstractFormatter::FormatterClass defineFormatterClass(const QString &_stringType); static AWAbstractFormatter::FormatterClass defineFormatterClass(const QString &_stringType);
void initFormatters(); void initFormatters();
[[nodiscard]] static QPair<QString, AWAbstractFormatter::FormatterClass> [[nodiscard]] static QPair<QString, AWAbstractFormatter::FormatterClass> readMetadata(const QString &_filePath);
readMetadata(const QString &_filePath);
// parent methods // parent methods
void doCreateItem() override; void doCreateItem() override;
// properties // properties

View File

@ -31,8 +31,7 @@ bool AWKeyCache::addKeyToCache(const QString &_type, const QString &_key)
qCDebug(LOG_AW) << "Key" << _key << "with type" << _type; qCDebug(LOG_AW) << "Key" << _key << "with type" << _type;
QString fileName QString fileName
= QString("%1/awesomewidgets.ndx") = QString("%1/awesomewidgets.ndx").arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
qCInfo(LOG_AW) << "Cache file" << fileName; qCInfo(LOG_AW) << "Cache file" << fileName;
QSettings cache(fileName, QSettings::IniFormat); QSettings cache(fileName, QSettings::IniFormat);
@ -75,12 +74,10 @@ bool AWKeyCache::addKeyToCache(const QString &_type, const QString &_key)
} }
QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringList &_bars, QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringList &_bars, const QVariantMap &_tooltip,
const QVariantMap &_tooltip, const QStringList &_userKeys, const QStringList &_userKeys, const QStringList &_allKeys)
const QStringList &_allKeys)
{ {
qCDebug(LOG_AW) << "Looking for required keys in" << _keys << _bars << "using tooltip settings" qCDebug(LOG_AW) << "Looking for required keys in" << _keys << _bars << "using tooltip settings" << _tooltip;
<< _tooltip;
// initial copy // initial copy
QSet<QString> used(_keys.cbegin(), _keys.cend()); QSet<QString> used(_keys.cbegin(), _keys.cend());
@ -136,8 +133,8 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringL
used << "swapgb" used << "swapgb"
<< "swapfreegb"; << "swapfreegb";
// network keys // network keys
QStringList netKeys({"up", "upkb", "uptot", "uptotkb", "upunits", "down", "downkb", "downtot", QStringList netKeys(
"downtotkb", "downunits"}); {"up", "upkb", "uptot", "uptotkb", "upunits", "down", "downkb", "downtot", "downtotkb", "downunits"});
for (auto &key : netKeys) { for (auto &key : netKeys) {
if (!used.contains(key)) if (!used.contains(key))
continue; continue;
@ -146,8 +143,7 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringL
used << filtered; used << filtered;
} }
// netdev key // netdev key
if (std::any_of(netKeys.cbegin(), netKeys.cend(), if (std::any_of(netKeys.cbegin(), netKeys.cend(), [&used](const QString &key) { return used.contains(key); }))
[&used](const QString &key) { return used.contains(key); }))
used << "netdev"; used << "netdev";
// HACK append dummy if there are no other keys. This hack is required // HACK append dummy if there are no other keys. This hack is required
@ -162,8 +158,7 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys, const QStringL
QHash<QString, QStringList> AWKeyCache::loadKeysFromCache() QHash<QString, QStringList> AWKeyCache::loadKeysFromCache()
{ {
QString fileName QString fileName
= QString("%1/awesomewidgets.ndx") = QString("%1/awesomewidgets.ndx").arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation));
qCInfo(LOG_AW) << "Cache file" << fileName; qCInfo(LOG_AW) << "Cache file" << fileName;
QSettings cache(fileName, QSettings::IniFormat); QSettings cache(fileName, QSettings::IniFormat);

View File

@ -27,9 +27,8 @@
namespace AWKeyCache namespace AWKeyCache
{ {
bool addKeyToCache(const QString &_type, const QString &_key = ""); bool addKeyToCache(const QString &_type, const QString &_key = "");
QStringList getRequiredKeys(const QStringList &_keys, const QStringList &_bars, QStringList getRequiredKeys(const QStringList &_keys, const QStringList &_bars, const QVariantMap &_tooltip,
const QVariantMap &_tooltip, const QStringList &_userKeys, const QStringList &_userKeys, const QStringList &_allKeys);
const QStringList &_allKeys);
QHash<QString, QStringList> loadKeysFromCache(); QHash<QString, QStringList> loadKeysFromCache();
} // namespace AWKeyCache } // namespace AWKeyCache

View File

@ -281,8 +281,7 @@ void AWKeyOperations::editItem(const QString &_type)
qCDebug(LOG_AW) << "Item type" << _type; qCDebug(LOG_AW) << "Item type" << _type;
if (_type == "graphicalitem") { if (_type == "graphicalitem") {
QStringList keys QStringList keys = dictKeys().filter(QRegExp("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)"));
= dictKeys().filter(QRegExp("^(cpu(?!cl).*|gpu$|mem$|swap$|hdd[0-9].*|bat.*)"));
keys.sort(); keys.sort();
m_graphicalItems->setConfigArgs(keys); m_graphicalItems->setConfigArgs(keys);
return m_graphicalItems->editItems(); return m_graphicalItems->editItems();

View File

@ -56,8 +56,7 @@ AWKeys::AWKeys(QObject *_parent)
createDBusInterface(); createDBusInterface();
// update key data if required // update key data if required
connect(m_keyOperator, SIGNAL(updateKeys(const QStringList &)), this, connect(m_keyOperator, SIGNAL(updateKeys(const QStringList &)), this, SLOT(reinitKeys(const QStringList &)));
SLOT(reinitKeys(const QStringList &)));
connect(m_timer, SIGNAL(timeout()), this, SLOT(updateTextData())); connect(m_timer, SIGNAL(timeout()), this, SLOT(updateTextData()));
// transfer signal from AWDataAggregator object to QML ui // transfer signal from AWDataAggregator object to QML ui
connect(m_dataAggregator, SIGNAL(toolTipPainted(const QString &)), this, connect(m_dataAggregator, SIGNAL(toolTipPainted(const QString &)), this,
@ -91,11 +90,10 @@ void AWKeys::initDataAggregator(const QVariantMap &_tooltipParams)
} }
void AWKeys::initKeys(const QString &_currentPattern, const int _interval, const int _limit, void AWKeys::initKeys(const QString &_currentPattern, const int _interval, const int _limit, const bool _optimize)
const bool _optimize)
{ {
qCDebug(LOG_AW) << "Pattern" << _currentPattern << "with interval" << _interval qCDebug(LOG_AW) << "Pattern" << _currentPattern << "with interval" << _interval << "and queue limit" << _limit
<< "and queue limit" << _limit << "with optimization" << _optimize; << "with optimization" << _optimize;
// init // init
m_optimize = _optimize; m_optimize = _optimize;
@ -227,8 +225,7 @@ void AWKeys::reinitKeys(const QStringList &_currentKeys)
barKeys.append(item->usedKeys()); barKeys.append(item->usedKeys());
} }
// get required keys // get required keys
m_requiredKeys m_requiredKeys = m_optimize ? AWKeyCache::getRequiredKeys(m_foundKeys, barKeys, m_tooltipParams,
= m_optimize ? AWKeyCache::getRequiredKeys(m_foundKeys, barKeys, m_tooltipParams,
m_keyOperator->requiredUserKeys(), _currentKeys) m_keyOperator->requiredUserKeys(), _currentKeys)
: QStringList(); : QStringList();
@ -260,11 +257,9 @@ void AWKeys::calculateValues()
for (auto &device : mountDevices) { for (auto &device : mountDevices) {
int index = mountDevices.indexOf(device); int index = mountDevices.indexOf(device);
m_values[QString("hddtotmb%1").arg(index)] m_values[QString("hddtotmb%1").arg(index)]
= m_values[QString("hddfreemb%1").arg(index)].toFloat() = m_values[QString("hddfreemb%1").arg(index)].toFloat() + m_values[QString("hddmb%1").arg(index)].toFloat();
+ m_values[QString("hddmb%1").arg(index)].toFloat();
m_values[QString("hddtotgb%1").arg(index)] m_values[QString("hddtotgb%1").arg(index)]
= m_values[QString("hddfreegb%1").arg(index)].toFloat() = m_values[QString("hddfreegb%1").arg(index)].toFloat() + m_values[QString("hddgb%1").arg(index)].toFloat();
+ m_values[QString("hddgb%1").arg(index)].toFloat();
} }
// memtot* // memtot*
@ -312,20 +307,16 @@ void AWKeys::createDBusInterface()
// HACK we are going to use different services because it binds to // HACK we are going to use different services because it binds to
// application // application
if (instanceBus.registerService(QString("%1.i%2").arg(AWDBUS_SERVICE).arg(id))) { if (instanceBus.registerService(QString("%1.i%2").arg(AWDBUS_SERVICE).arg(id))) {
if (!instanceBus.registerObject(AWDBUS_PATH, new AWDBusAdaptor(this), if (!instanceBus.registerObject(AWDBUS_PATH, new AWDBusAdaptor(this), QDBusConnection::ExportAllContents))
QDBusConnection::ExportAllContents)) qCWarning(LOG_AW) << "Could not register DBus object, last error" << instanceBus.lastError().message();
qCWarning(LOG_AW) << "Could not register DBus object, last error"
<< instanceBus.lastError().message();
} else { } else {
qCWarning(LOG_AW) << "Could not register DBus service, last error" qCWarning(LOG_AW) << "Could not register DBus service, last error" << instanceBus.lastError().message();
<< instanceBus.lastError().message();
} }
// and same instance but for id independent service // and same instance but for id independent service
QDBusConnection commonBus = QDBusConnection::sessionBus(); QDBusConnection commonBus = QDBusConnection::sessionBus();
if (commonBus.registerService(AWDBUS_SERVICE)) if (commonBus.registerService(AWDBUS_SERVICE))
commonBus.registerObject(AWDBUS_PATH, new AWDBusAdaptor(this), commonBus.registerObject(AWDBUS_PATH, new AWDBusAdaptor(this), QDBusConnection::ExportAllContents);
QDBusConnection::ExportAllContents);
} }
@ -340,14 +331,13 @@ QString AWKeys::parsePattern(QString _pattern) const
// main keys // main keys
for (auto &key : m_foundKeys) for (auto &key : m_foundKeys)
_pattern.replace(QString("$%1").arg(key), _pattern.replace(QString("$%1").arg(key), m_aggregator->formatter(m_values[key], key, true));
m_aggregator->formatter(m_values[key], key, true));
// bars // bars
for (auto &bar : m_foundBars) { for (auto &bar : m_foundBars) {
GraphicalItem *item = m_keyOperator->giByKey(bar); GraphicalItem *item = m_keyOperator->giByKey(bar);
QString image = item->isCustom() ? item->image(AWPatternFunctions::expandLambdas( QString image = item->isCustom() ? item->image(
item->bar(), m_aggregator, m_values, item->usedKeys())) AWPatternFunctions::expandLambdas(item->bar(), m_aggregator, m_values, item->usedKeys()))
: item->image(m_values[item->bar()]); : item->image(m_values[item->bar()]);
_pattern.replace(QString("$%1").arg(bar), image); _pattern.replace(QString("$%1").arg(bar), image);
} }

View File

@ -40,16 +40,14 @@ public:
explicit AWKeys(QObject *_parent = nullptr); explicit AWKeys(QObject *_parent = nullptr);
~AWKeys() override; ~AWKeys() override;
Q_INVOKABLE void initDataAggregator(const QVariantMap &_tooltipParams); Q_INVOKABLE void initDataAggregator(const QVariantMap &_tooltipParams);
Q_INVOKABLE void initKeys(const QString &_currentPattern, int _interval, int _limit, Q_INVOKABLE void initKeys(const QString &_currentPattern, int _interval, int _limit, bool _optimize);
bool _optimize);
Q_INVOKABLE void setAggregatorProperty(const QString &_key, const QVariant &_value); Q_INVOKABLE void setAggregatorProperty(const QString &_key, const QVariant &_value);
Q_INVOKABLE void setWrapNewLines(bool _wrap); Q_INVOKABLE void setWrapNewLines(bool _wrap);
// additional method to force load keys from Qml UI. Used in some // additional method to force load keys from Qml UI. Used in some
// configuration pages // configuration pages
Q_INVOKABLE void updateCache(); Q_INVOKABLE void updateCache();
// keys // keys
Q_INVOKABLE [[nodiscard]] QStringList dictKeys(bool _sorted = false, Q_INVOKABLE [[nodiscard]] QStringList dictKeys(bool _sorted = false, const QString &_regexp = "") const;
const QString &_regexp = "") const;
Q_INVOKABLE [[nodiscard]] QVariantList getHddDevices() const; Q_INVOKABLE [[nodiscard]] QVariantList getHddDevices() const;
// values // values
Q_INVOKABLE [[nodiscard]] QString infoByKey(const QString &_key) const; Q_INVOKABLE [[nodiscard]] QString infoByKey(const QString &_key) const;

View File

@ -55,8 +55,7 @@ void AWKeysAggregator::initFormatters()
} }
QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key, QString AWKeysAggregator::formatter(const QVariant &_data, const QString &_key, bool replaceSpace) const
bool replaceSpace) const
{ {
qCDebug(LOG_AW) << "Data" << _data << "for key" << _key; qCDebug(LOG_AW) << "Data" << _data << "for key" << _key;
@ -235,8 +234,7 @@ void AWKeysAggregator::setTranslate(const bool _translate)
} }
QStringList AWKeysAggregator::registerSource(const QString &_source, const QString &_units, QStringList AWKeysAggregator::registerSource(const QString &_source, const QString &_units, const QStringList &_keys)
const QStringList &_keys)
{ {
qCDebug(LOG_AW) << "Source" << _source << "with units" << _units; qCDebug(LOG_AW) << "Source" << _source << "with units" << _units;

View File

@ -69,8 +69,7 @@ public:
~AWKeysAggregator() override; ~AWKeysAggregator() override;
void initFormatters(); void initFormatters();
// get methods // get methods
[[nodiscard]] QString formatter(const QVariant &_data, const QString &_key, [[nodiscard]] QString formatter(const QVariant &_data, const QString &_key, bool replaceSpace) const;
bool replaceSpace) const;
[[nodiscard]] QStringList keysFromSource(const QString &_source) const; [[nodiscard]] QStringList keysFromSource(const QString &_source) const;
// set methods // set methods
void setAcOffline(const QString &_inactive); void setAcOffline(const QString &_inactive);
@ -82,8 +81,7 @@ public:
void setTranslate(bool _translate); void setTranslate(bool _translate);
public slots: public slots:
QStringList registerSource(const QString &_source, const QString &_units, QStringList registerSource(const QString &_source, const QString &_units, const QStringList &_keys);
const QStringList &_keys);
private: private:
[[nodiscard]] float temperature(float temp) const; [[nodiscard]] float temperature(float temp) const;

View File

@ -24,8 +24,7 @@
#include "awkeysaggregator.h" #include "awkeysaggregator.h"
QString AWPatternFunctions::expandLambdas(QString _code, AWKeysAggregator *_aggregator, QString AWPatternFunctions::expandLambdas(QString _code, AWKeysAggregator *_aggregator, const QVariantHash &_metadata,
const QVariantHash &_metadata,
const QStringList &_usedKeys) const QStringList &_usedKeys)
{ {
qCDebug(LOG_AW) << "Expand lambdas in" << _code; qCDebug(LOG_AW) << "Expand lambdas in" << _code;
@ -35,13 +34,12 @@ QString AWPatternFunctions::expandLambdas(QString _code, AWKeysAggregator *_aggr
_code.replace("$this", _metadata[_code].toString()); _code.replace("$this", _metadata[_code].toString());
// parsed values // parsed values
for (auto &lambdaKey : _usedKeys) for (auto &lambdaKey : _usedKeys)
_code.replace(QString("$%1").arg(lambdaKey), _code.replace(QString("$%1").arg(lambdaKey), _aggregator->formatter(_metadata[lambdaKey], lambdaKey, false));
_aggregator->formatter(_metadata[lambdaKey], lambdaKey, false));
qCInfo(LOG_AW) << "Expression" << _code; qCInfo(LOG_AW) << "Expression" << _code;
QJSValue result = engine.evaluate(_code); QJSValue result = engine.evaluate(_code);
if (result.isError()) { if (result.isError()) {
qCWarning(LOG_AW) << "Uncaught exception at line" << result.property("lineNumber").toInt() qCWarning(LOG_AW) << "Uncaught exception at line" << result.property("lineNumber").toInt() << ":"
<< ":" << result.toString(); << result.toString();
return ""; return "";
} else { } else {
return result.toString(); return result.toString();
@ -67,8 +65,8 @@ QString AWPatternFunctions::expandTemplates(QString _code)
QJSValue result = engine.evaluate(body); QJSValue result = engine.evaluate(body);
QString templateResult = ""; QString templateResult = "";
if (result.isError()) { if (result.isError()) {
qCWarning(LOG_AW) << "Uncaught exception at line" qCWarning(LOG_AW) << "Uncaught exception at line" << result.property("lineNumber").toInt() << ":"
<< result.property("lineNumber").toInt() << ":" << result.toString(); << result.toString();
} else { } else {
templateResult = result.toString(); templateResult = result.toString();
} }
@ -81,8 +79,8 @@ QString AWPatternFunctions::expandTemplates(QString _code)
} }
QList<AWPatternFunctions::AWFunction> QList<AWPatternFunctions::AWFunction> AWPatternFunctions::findFunctionCalls(const QString &_function,
AWPatternFunctions::findFunctionCalls(const QString &_function, const QString &_code) const QString &_code)
{ {
qCDebug(LOG_AW) << "Looking for function" << _function << "in" << _code; qCDebug(LOG_AW) << "Looking for function" << _function << "in" << _code;
@ -109,8 +107,7 @@ AWPatternFunctions::findFunctionCalls(const QString &_function, const QString &_
// replace '$,' to 0x1d // replace '$,' to 0x1d
argsString.replace("$,", QString(0x1d)); argsString.replace("$,", QString(0x1d));
QStringList args = argsString.split(','); QStringList args = argsString.split(',');
std::for_each(args.begin(), args.end(), std::for_each(args.begin(), args.end(), [](QString &arg) { arg.replace(QString(0x1d), ","); });
[](QString &arg) { arg.replace(QString(0x1d), ","); });
metadata.args = args; metadata.args = args;
} }
// other variables // other variables
@ -130,13 +127,11 @@ QString AWPatternFunctions::insertAllKeys(QString _code, const QStringList &_key
{ {
qCDebug(LOG_AW) << "Looking for keys in code" << _code << "using list" << _keys; qCDebug(LOG_AW) << "Looking for keys in code" << _code << "using list" << _keys;
QList<AWPatternFunctions::AWFunction> found QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_all", _code);
= AWPatternFunctions::findFunctionCalls("aw_all", _code);
for (auto &function : found) { for (auto &function : found) {
QString separator = function.args.isEmpty() ? "," : function.args.at(0); QString separator = function.args.isEmpty() ? "," : function.args.at(0);
QStringList required = _keys.filter(QRegExp(function.body)); QStringList required = _keys.filter(QRegExp(function.body));
std::for_each(required.begin(), required.end(), std::for_each(required.begin(), required.end(), [](QString &value) { value = QString("%1: $%1").arg(value); });
[](QString &value) { value = QString("%1: $%1").arg(value); });
_code.replace(function.what, required.join(separator)); _code.replace(function.what, required.join(separator));
} }
@ -149,8 +144,7 @@ QString AWPatternFunctions::insertKeyCount(QString _code, const QStringList &_ke
{ {
qCDebug(LOG_AW) << "Looking for count in code" << _code << "using list" << _keys; qCDebug(LOG_AW) << "Looking for count in code" << _code << "using list" << _keys;
QList<AWPatternFunctions::AWFunction> found QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_count", _code);
= AWPatternFunctions::findFunctionCalls("aw_count", _code);
for (auto &function : found) { for (auto &function : found) {
int count = _keys.filter(QRegExp(function.body)).count(); int count = _keys.filter(QRegExp(function.body)).count();
@ -165,8 +159,7 @@ QString AWPatternFunctions::insertKeyNames(QString _code, const QStringList &_ke
{ {
qCDebug(LOG_AW) << "Looking for key names in code" << _code << "using list" << _keys; qCDebug(LOG_AW) << "Looking for key names in code" << _code << "using list" << _keys;
QList<AWPatternFunctions::AWFunction> found QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_names", _code);
= AWPatternFunctions::findFunctionCalls("aw_names", _code);
for (auto &function : found) { for (auto &function : found) {
QString separator = function.args.isEmpty() ? "," : function.args.at(0); QString separator = function.args.isEmpty() ? "," : function.args.at(0);
QStringList required = _keys.filter(QRegExp(function.body)); QStringList required = _keys.filter(QRegExp(function.body));
@ -182,13 +175,11 @@ QString AWPatternFunctions::insertKeys(QString _code, const QStringList &_keys)
{ {
qCDebug(LOG_AW) << "Looking for keys in code" << _code << "using list" << _keys; qCDebug(LOG_AW) << "Looking for keys in code" << _code << "using list" << _keys;
QList<AWPatternFunctions::AWFunction> found QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_keys", _code);
= AWPatternFunctions::findFunctionCalls("aw_keys", _code);
for (auto &function : found) { for (auto &function : found) {
QString separator = function.args.isEmpty() ? "," : function.args.at(0); QString separator = function.args.isEmpty() ? "," : function.args.at(0);
QStringList required = _keys.filter(QRegExp(function.body)); QStringList required = _keys.filter(QRegExp(function.body));
std::for_each(required.begin(), required.end(), std::for_each(required.begin(), required.end(), [](QString &value) { value = QString("$%1").arg(value); });
[](QString &value) { value = QString("$%1").arg(value); });
_code.replace(function.what, required.join(separator)); _code.replace(function.what, required.join(separator));
} }
@ -201,8 +192,7 @@ QString AWPatternFunctions::insertMacros(QString _code)
{ {
qCDebug(LOG_AW) << "Looking for macros in code" << _code; qCDebug(LOG_AW) << "Looking for macros in code" << _code;
QList<AWPatternFunctions::AWFunction> found QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls("aw_macro", _code);
= AWPatternFunctions::findFunctionCalls("aw_macro", _code);
for (auto &macro : found) { for (auto &macro : found) {
// get macro params // get macro params
if (macro.args.isEmpty()) { if (macro.args.isEmpty()) {
@ -215,14 +205,12 @@ QString AWPatternFunctions::insertMacros(QString _code)
= AWPatternFunctions::findFunctionCalls(QString("aw_macro_%1").arg(name), _code); = AWPatternFunctions::findFunctionCalls(QString("aw_macro_%1").arg(name), _code);
for (auto &function : macroUsage) { for (auto &function : macroUsage) {
if (function.args.count() != macro.args.count()) { if (function.args.count() != macro.args.count()) {
qCWarning(LOG_AW) << "Invalid args count found for call" << function.what qCWarning(LOG_AW) << "Invalid args count found for call" << function.what << "with macro" << macro.what;
<< "with macro" << macro.what;
continue; continue;
} }
// generate body to replace // generate body to replace
QString result = macro.body; QString result = macro.body;
std::for_each(macro.args.cbegin(), macro.args.cend(), std::for_each(macro.args.cbegin(), macro.args.cend(), [&result, macro, function](const QString &arg) {
[&result, macro, function](const QString &arg) {
int index = macro.args.indexOf(arg); int index = macro.args.indexOf(arg);
result.replace(QString("$%1").arg(arg), function.args.at(index)); result.replace(QString("$%1").arg(arg), function.args.at(index));
}); });
@ -238,16 +226,14 @@ QString AWPatternFunctions::insertMacros(QString _code)
} }
QStringList AWPatternFunctions::findKeys(const QString &_code, const QStringList &_keys, QStringList AWPatternFunctions::findKeys(const QString &_code, const QStringList &_keys, const bool _isBars)
const bool _isBars)
{ {
qCDebug(LOG_AW) << "Looking for keys in code" << _code << "using list" << _keys; qCDebug(LOG_AW) << "Looking for keys in code" << _code << "using list" << _keys;
QStringList selectedKeys; QStringList selectedKeys;
QString replacedCode = _code; QString replacedCode = _code;
for (auto &key : _keys) for (auto &key : _keys)
if ((key.startsWith("bar") == _isBars) if ((key.startsWith("bar") == _isBars) && (replacedCode.contains(QString("$%1").arg(key)))) {
&& (replacedCode.contains(QString("$%1").arg(key)))) {
qCInfo(LOG_AW) << "Found key" << key << "with bar enabled" << _isBars; qCInfo(LOG_AW) << "Found key" << key << "with bar enabled" << _isBars;
selectedKeys.append(key); selectedKeys.append(key);
replacedCode.replace(QString("$%1").arg(key), ""); replacedCode.replace(QString("$%1").arg(key), "");

View File

@ -73,8 +73,8 @@ QString AWTelemetryHandler::getLast(const QString &_group) const
void AWTelemetryHandler::init(const int _count, const bool _enableRemote, const QString &_clientId) void AWTelemetryHandler::init(const int _count, const bool _enableRemote, const QString &_clientId)
{ {
qCDebug(LOG_AW) << "Init telemetry with count" << _count << "enable remote" << _enableRemote qCDebug(LOG_AW) << "Init telemetry with count" << _count << "enable remote" << _enableRemote << "client ID"
<< "client ID" << _clientId; << _clientId;
m_storeCount = _count; m_storeCount = _count;
m_uploadEnabled = _enableRemote; m_uploadEnabled = _enableRemote;
@ -127,8 +127,7 @@ void AWTelemetryHandler::uploadTelemetry(const QString &_group, const QString &_
} }
auto *manager = new QNetworkAccessManager(nullptr); auto *manager = new QNetworkAccessManager(nullptr);
connect(manager, SIGNAL(finished(QNetworkReply *)), this, connect(manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(telemetryReplyRecieved(QNetworkReply *)));
SLOT(telemetryReplyRecieved(QNetworkReply *)));
QUrl url(REMOTE_TELEMETRY_URL); QUrl url(REMOTE_TELEMETRY_URL);
QNetworkRequest request(url); QNetworkRequest request(url);
@ -151,8 +150,7 @@ void AWTelemetryHandler::uploadTelemetry(const QString &_group, const QString &_
void AWTelemetryHandler::telemetryReplyRecieved(QNetworkReply *_reply) void AWTelemetryHandler::telemetryReplyRecieved(QNetworkReply *_reply)
{ {
if (_reply->error() != QNetworkReply::NoError) { if (_reply->error() != QNetworkReply::NoError) {
qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString();
<< _reply->errorString();
return; return;
} }

View File

@ -34,8 +34,7 @@ AWUpdateHelper::AWUpdateHelper(QObject *_parent)
qCDebug(LOG_AW) << __PRETTY_FUNCTION__; qCDebug(LOG_AW) << __PRETTY_FUNCTION__;
m_foundVersion = QVersionNumber::fromString(VERSION); m_foundVersion = QVersionNumber::fromString(VERSION);
m_genericConfig m_genericConfig = QString("%1/awesomewidgets/general.ini")
= QString("%1/awesomewidgets/general.ini")
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)); .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
} }
@ -53,9 +52,8 @@ void AWUpdateHelper::checkUpdates(const bool _showAnyway)
// showAnyway options requires to show message if no updates found on direct // showAnyway options requires to show message if no updates found on direct
// request. In case of automatic check no message will be shown // request. In case of automatic check no message will be shown
auto *manager = new QNetworkAccessManager(nullptr); auto *manager = new QNetworkAccessManager(nullptr);
connect(manager, &QNetworkAccessManager::finished, [_showAnyway, this](QNetworkReply *reply) { connect(manager, &QNetworkAccessManager::finished,
return versionReplyRecieved(reply, _showAnyway); [_showAnyway, this](QNetworkReply *reply) { return versionReplyRecieved(reply, _showAnyway); });
});
manager->get(QNetworkRequest(QUrl(VERSION_API))); manager->get(QNetworkRequest(QUrl(VERSION_API)));
} }
@ -64,16 +62,14 @@ void AWUpdateHelper::checkUpdates(const bool _showAnyway)
bool AWUpdateHelper::checkVersion() bool AWUpdateHelper::checkVersion()
{ {
QSettings settings(m_genericConfig, QSettings::IniFormat); QSettings settings(m_genericConfig, QSettings::IniFormat);
QVersionNumber version QVersionNumber version = QVersionNumber::fromString(settings.value("Version", QString(VERSION)).toString());
= QVersionNumber::fromString(settings.value("Version", QString(VERSION)).toString());
// update version // update version
settings.setValue("Version", QString(VERSION)); settings.setValue("Version", QString(VERSION));
settings.sync(); settings.sync();
qCInfo(LOG_AW) << "Found version" << version << "actual one is" << m_foundVersion; qCInfo(LOG_AW) << "Found version" << version << "actual one is" << m_foundVersion;
if ((version != m_foundVersion) && (!QString(CHANGELOG).isEmpty())) { if ((version != m_foundVersion) && (!QString(CHANGELOG).isEmpty())) {
genMessageBox(i18nc("Changelog of %1", VERSION), QString(CHANGELOG).replace('@', '\n'), genMessageBox(i18nc("Changelog of %1", VERSION), QString(CHANGELOG).replace('@', '\n'), QMessageBox::Ok)
QMessageBox::Ok)
->open(); ->open();
return true; return true;
} else if (version != m_foundVersion) { } else if (version != m_foundVersion) {
@ -133,8 +129,7 @@ void AWUpdateHelper::versionReplyRecieved(QNetworkReply *_reply, const bool _sho
{ {
qCDebug(LOG_AW) << "Show message anyway" << _showAnyway; qCDebug(LOG_AW) << "Show message anyway" << _showAnyway;
if (_reply->error() != QNetworkReply::NoError) { if (_reply->error() != QNetworkReply::NoError) {
qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString();
<< _reply->errorString();
return; return;
} }

View File

@ -34,8 +34,7 @@ AbstractExtItemAggregator::AbstractExtItemAggregator(QWidget *_parent, QString _
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
// create directory at $HOME // create directory at $HOME
QString localDir QString localDir = QString("%1/awesomewidgets/%2")
= QString("%1/awesomewidgets/%2")
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation))
.arg(type()); .arg(type());
QDir localDirectory; QDir localDirectory;
@ -47,11 +46,9 @@ AbstractExtItemAggregator::AbstractExtItemAggregator(QWidget *_parent, QString _
createButton = ui->buttonBox->addButton(i18n("Create"), QDialogButtonBox::ActionRole); createButton = ui->buttonBox->addButton(i18n("Create"), QDialogButtonBox::ActionRole);
deleteButton = ui->buttonBox->addButton(i18n("Remove"), QDialogButtonBox::ActionRole); deleteButton = ui->buttonBox->addButton(i18n("Remove"), QDialogButtonBox::ActionRole);
connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton *)), this, connect(ui->buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(editItemButtonPressed(QAbstractButton *)));
SLOT(editItemButtonPressed(QAbstractButton *)));
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject())); connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
connect(ui->listWidget, SIGNAL(itemActivated(QListWidgetItem *)), this, connect(ui->listWidget, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editItemActivated(QListWidgetItem *)));
SLOT(editItemActivated(QListWidgetItem *)));
} }
@ -118,8 +115,7 @@ void AbstractExtItemAggregator::editItem()
QString AbstractExtItemAggregator::getName() QString AbstractExtItemAggregator::getName()
{ {
bool ok; bool ok;
QString name = QInputDialog::getText(this, i18n("Enter file name"), i18n("File name"), QString name = QInputDialog::getText(this, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, "", &ok);
QLineEdit::Normal, "", &ok);
if ((!ok) || (name.isEmpty())) if ((!ok) || (name.isEmpty()))
return ""; return "";
if (!name.endsWith(".desktop")) if (!name.endsWith(".desktop"))
@ -187,8 +183,7 @@ QVariant AbstractExtItemAggregator::configArgs() const
QStringList AbstractExtItemAggregator::directories() const QStringList AbstractExtItemAggregator::directories() const
{ {
auto dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, auto dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString("awesomewidgets/%1").arg(type()),
QString("awesomewidgets/%1").arg(type()),
QStandardPaths::LocateDirectory); QStandardPaths::LocateDirectory);
return dirs; return dirs;

View File

@ -47,8 +47,7 @@ public:
{ {
QString fileName = getName(); QString fileName = getName();
int number = uniqNumber(); int number = uniqNumber();
QString dir QString dir = QString("%1/awesomewidgets/%2")
= QString("%1/awesomewidgets/%2")
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation))
.arg(m_type); .arg(m_type);
if (fileName.isEmpty()) { if (fileName.isEmpty()) {

View File

@ -33,8 +33,7 @@ public:
: QObject(_parent){}; : QObject(_parent){};
~AbstractQuotesProvider() override = default; ~AbstractQuotesProvider() override = default;
virtual void initUrl(const QString &_asset) = 0; virtual void initUrl(const QString &_asset) = 0;
[[nodiscard]] virtual QVariantHash parse(const QByteArray &_source, [[nodiscard]] virtual QVariantHash parse(const QByteArray &_source, const QVariantHash &_oldValues) const = 0;
const QVariantHash &_oldValues) const = 0;
[[nodiscard]] QString tag(const QString &_type) const [[nodiscard]] QString tag(const QString &_type) const
{ {
return dynamic_cast<AbstractExtItem *>(parent())->tag(_type); return dynamic_cast<AbstractExtItem *>(parent())->tag(_type);

View File

@ -51,8 +51,8 @@ QString AWFloatFormatter::convert(const QVariant &_value) const
{ {
qCDebug(LOG_LIB) << "Convert value" << _value; qCDebug(LOG_LIB) << "Convert value" << _value;
QString output = QString("%1").arg(_value.toDouble() * multiplier() + summand(), count(), QString output
format(), precision(), fillChar()); = QString("%1").arg(_value.toDouble() * multiplier() + summand(), count(), format(), precision(), fillChar());
if (forceWidth()) if (forceWidth())
output = output.left(count()); output = output.left(count());
@ -149,8 +149,7 @@ void AWFloatFormatter::setFormat(char _format)
{ {
qCDebug(LOG_LIB) << "Set format" << _format; qCDebug(LOG_LIB) << "Set format" << _format;
// http://doc.qt.io/qt-5/qstring.html#argument-formats // http://doc.qt.io/qt-5/qstring.html#argument-formats
if ((_format != 'e') && (_format != 'E') && (_format != 'f') && (_format != 'g') if ((_format != 'e') && (_format != 'E') && (_format != 'f') && (_format != 'g') && (_format != 'G')) {
&& (_format != 'G')) {
qCWarning(LOG_LIB) << "Invalid format" << _format; qCWarning(LOG_LIB) << "Invalid format" << _format;
_format = 'f'; _format = 'f';
} }

View File

@ -53,8 +53,7 @@ QString AWJsonFormatter::convert(const QVariant &_value) const
qCDebug(LOG_LIB) << "Convert value" << _value; qCDebug(LOG_LIB) << "Convert value" << _value;
// check if _value is string and parse first if required // check if _value is string and parse first if required
QJsonDocument json = _value.type() == QVariant::String QJsonDocument json = _value.type() == QVariant::String ? QJsonDocument::fromJson(_value.toString().toUtf8())
? QJsonDocument::fromJson(_value.toString().toUtf8())
: QJsonDocument::fromVariant(_value); : QJsonDocument::fromVariant(_value);
QVariant converted = json.toVariant(); QVariant converted = json.toVariant();
for (auto &element : m_splittedPath) for (auto &element : m_splittedPath)

View File

@ -59,8 +59,8 @@ QString AWScriptFormatter::convert(const QVariant &_value) const
QJSValue result = fn.call(args); QJSValue result = fn.call(args);
if (result.isError()) { if (result.isError()) {
qCWarning(LOG_LIB) << "Uncaught exception at line" << result.property("lineNumber").toInt() qCWarning(LOG_LIB) << "Uncaught exception at line" << result.property("lineNumber").toInt() << ":"
<< ":" << result.toString(); << result.toString();
return ""; return "";
} else { } else {
return result.toString(); return result.toString();
@ -199,9 +199,7 @@ void AWScriptFormatter::initProgram()
{ {
// init JS code // init JS code
if (appendCode()) if (appendCode())
m_program = QString("(function(value) { %1%2 })") m_program = QString("(function(value) { %1%2 })").arg(code()).arg(hasReturn() ? "" : "; return output;");
.arg(code())
.arg(hasReturn() ? "" : "; return output;");
else else
m_program = code(); m_program = code();

View File

@ -139,9 +139,8 @@ private:
qCInfo(LOG_LIB) << "Found file" << file << "in" << dir; qCInfo(LOG_LIB) << "Found file" << file << "in" << dir;
QString filePath = QString("%1/%2").arg(dir).arg(file); QString filePath = QString("%1/%2").arg(dir).arg(file);
// check if already exists // check if already exists
if (std::any_of(items.cbegin(), items.cend(), [&filePath](AbstractExtItem *item) { if (std::any_of(items.cbegin(), items.cend(),
return (item->fileName() == filePath); [&filePath](AbstractExtItem *item) { return (item->fileName() == filePath); }))
}))
continue; continue;
items.append(new T(this, filePath)); items.append(new T(this, filePath));
} }
@ -149,9 +148,7 @@ private:
// sort items // sort items
std::sort(items.begin(), items.end(), std::sort(items.begin(), items.end(),
[](const AbstractExtItem *lhs, const AbstractExtItem *rhs) { [](const AbstractExtItem *lhs, const AbstractExtItem *rhs) { return lhs->number() < rhs->number(); });
return lhs->number() < rhs->number();
});
return items; return items;
}; };
}; };

View File

@ -45,8 +45,7 @@ ExtNetworkRequest::ExtNetworkRequest(QWidget *_parent, const QString &_filePath)
// HACK declare as child of nullptr to avoid crash with plasmawindowed // HACK declare as child of nullptr to avoid crash with plasmawindowed
// in the destructor // in the destructor
m_manager = new QNetworkAccessManager(nullptr); m_manager = new QNetworkAccessManager(nullptr);
connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(networkReplyReceived(QNetworkReply *)));
SLOT(networkReplyReceived(QNetworkReply *)));
connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest()));
} }
@ -56,8 +55,7 @@ ExtNetworkRequest::~ExtNetworkRequest()
{ {
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(networkReplyReceived(QNetworkReply *)));
SLOT(networkReplyReceived(QNetworkReply *)));
disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest()));
m_manager->deleteLater(); m_manager->deleteLater();
@ -171,14 +169,12 @@ void ExtNetworkRequest::writeConfiguration() const
void ExtNetworkRequest::networkReplyReceived(QNetworkReply *_reply) void ExtNetworkRequest::networkReplyReceived(QNetworkReply *_reply)
{ {
if (_reply->error() != QNetworkReply::NoError) { if (_reply->error() != QNetworkReply::NoError) {
qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString();
<< _reply->errorString();
return; return;
} }
m_isRunning = false; m_isRunning = false;
m_values[tag("response")] m_values[tag("response")] = QTextCodec::codecForMib(106)->toUnicode(_reply->readAll()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(_reply->readAll()).trimmed();
emit(dataReceived(m_values)); emit(dataReceived(m_values));
} }

View File

@ -50,8 +50,7 @@ ExtQuotes::ExtQuotes(QWidget *_parent, const QString &_filePath)
// HACK declare as child of nullptr to avoid crash with plasmawindowed // HACK declare as child of nullptr to avoid crash with plasmawindowed
// in the destructor // in the destructor
m_manager = new QNetworkAccessManager(nullptr); m_manager = new QNetworkAccessManager(nullptr);
connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(quotesReplyReceived(QNetworkReply *)));
SLOT(quotesReplyReceived(QNetworkReply *)));
connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest()));
} }
@ -61,8 +60,7 @@ ExtQuotes::~ExtQuotes()
{ {
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(quotesReplyReceived(QNetworkReply *)));
SLOT(quotesReplyReceived(QNetworkReply *)));
disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest()));
m_manager->deleteLater(); m_manager->deleteLater();
@ -176,8 +174,7 @@ void ExtQuotes::writeConfiguration() const
void ExtQuotes::quotesReplyReceived(QNetworkReply *_reply) void ExtQuotes::quotesReplyReceived(QNetworkReply *_reply)
{ {
if (_reply->error() != QNetworkReply::NoError) { if (_reply->error() != QNetworkReply::NoError) {
qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString();
<< _reply->errorString();
return; return;
} }
@ -218,8 +215,7 @@ void ExtQuotes::translate()
ui->label_name->setText(i18n("Name")); ui->label_name->setText(i18n("Name"));
ui->label_comment->setText(i18n("Comment")); ui->label_comment->setText(i18n("Comment"));
ui->label_number->setText(i18n("Tag")); ui->label_number->setText(i18n("Tag"));
ui->label->setText( ui->label->setText(i18n("<html><head/><body><p>Use Stooq ticker to get quotes for the instrument. Refer to <a "
i18n("<html><head/><body><p>Use Stooq ticker to get quotes for the instrument. Refer to <a "
"href=\"https://stooq.com/\"><span style=\" text-decoration: underline; " "href=\"https://stooq.com/\"><span style=\" text-decoration: underline; "
"color:#0057ae;\">https://stooq.com/</span></a></p></body></html>")); "color:#0057ae;\">https://stooq.com/</span></a></p></body></html>"));
ui->label_ticker->setText(i18n("Ticker")); ui->label_ticker->setText(i18n("Ticker"));

View File

@ -80,8 +80,7 @@ ExtScript *ExtScript::copy(const QString &_fileName, const int _number)
QString ExtScript::jsonFiltersFile() QString ExtScript::jsonFiltersFile()
{ {
QString fileName QString fileName = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
= QStandardPaths::locate(QStandardPaths::GenericDataLocation,
"awesomewidgets/scripts/awesomewidgets-extscripts-filters.json"); "awesomewidgets/scripts/awesomewidgets-extscripts-filters.json");
qCInfo(LOG_LIB) << "Filters file" << fileName; qCInfo(LOG_LIB) << "Filters file" << fileName;
@ -272,12 +271,9 @@ int ExtScript::showConfiguration(const QVariant &_args)
ui->lineEdit_socket->setText(socket()); ui->lineEdit_socket->setText(socket());
ui->spinBox_interval->setValue(interval()); ui->spinBox_interval->setValue(interval());
// filters // filters
ui->checkBox_colorFilter->setCheckState(filters().contains("color") ? Qt::Checked ui->checkBox_colorFilter->setCheckState(filters().contains("color") ? Qt::Checked : Qt::Unchecked);
: Qt::Unchecked); ui->checkBox_linesFilter->setCheckState(filters().contains("newline") ? Qt::Checked : Qt::Unchecked);
ui->checkBox_linesFilter->setCheckState(filters().contains("newline") ? Qt::Checked ui->checkBox_spaceFilter->setCheckState(filters().contains("space") ? Qt::Checked : Qt::Unchecked);
: Qt::Unchecked);
ui->checkBox_spaceFilter->setCheckState(filters().contains("space") ? Qt::Checked
: Qt::Unchecked);
int ret = exec(); int ret = exec();
if (ret != 1) if (ret != 1)
@ -329,11 +325,9 @@ void ExtScript::startProcess()
void ExtScript::updateValue() void ExtScript::updateValue()
{ {
qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode(); qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode();
QString qdebug QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
qCInfo(LOG_LIB) << "Error" << qdebug; qCInfo(LOG_LIB) << "Error" << qdebug;
QString qoutput QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
qCInfo(LOG_LIB) << "Output" << qoutput; qCInfo(LOG_LIB) << "Output" << qoutput;
QString strValue; QString strValue;

View File

@ -215,11 +215,9 @@ void ExtUpgrade::updateValue()
qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode(); qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode();
qCInfo(LOG_LIB) << "Error" << m_process->readAllStandardError(); qCInfo(LOG_LIB) << "Error" << m_process->readAllStandardError();
QString qoutput QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
m_values[tag("pkgcount")] = [this](const QString &output) { m_values[tag("pkgcount")] = [this](const QString &output) {
return filter().isEmpty() return filter().isEmpty() ? output.split('\n', Qt::SkipEmptyParts).count() - null()
? output.split('\n', Qt::SkipEmptyParts).count() - null()
: output.split('\n', Qt::SkipEmptyParts).filter(QRegExp(filter())).count(); : output.split('\n', Qt::SkipEmptyParts).filter(QRegExp(filter())).count();
}(qoutput); }(qoutput);

View File

@ -53,8 +53,7 @@ ExtWeather::ExtWeather(QWidget *_parent, const QString &_filePath)
// HACK declare as child of nullptr to avoid crash with plasmawindowed // HACK declare as child of nullptr to avoid crash with plasmawindowed
// in the destructor // in the destructor
m_manager = new QNetworkAccessManager(nullptr); m_manager = new QNetworkAccessManager(nullptr);
connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, connect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(weatherReplyReceived(QNetworkReply *)));
SLOT(weatherReplyReceived(QNetworkReply *)));
connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); connect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest()));
} }
@ -64,8 +63,7 @@ ExtWeather::~ExtWeather()
{ {
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, disconnect(m_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(weatherReplyReceived(QNetworkReply *)));
SLOT(weatherReplyReceived(QNetworkReply *)));
disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest()));
m_manager->deleteLater(); m_manager->deleteLater();
@ -92,8 +90,7 @@ ExtWeather *ExtWeather::copy(const QString &_fileName, const int _number)
QString ExtWeather::jsonMapFile() QString ExtWeather::jsonMapFile()
{ {
QString fileName QString fileName = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
= QStandardPaths::locate(QStandardPaths::GenericDataLocation,
"awesomewidgets/weather/awesomewidgets-extweather-ids.json"); "awesomewidgets/weather/awesomewidgets-extweather-ids.json");
qCInfo(LOG_LIB) << "Map file" << fileName; qCInfo(LOG_LIB) << "Map file" << fileName;
@ -339,8 +336,7 @@ void ExtWeather::sendRequest()
void ExtWeather::weatherReplyReceived(QNetworkReply *_reply) void ExtWeather::weatherReplyReceived(QNetworkReply *_reply)
{ {
if (_reply->error() != QNetworkReply::NoError) { if (_reply->error() != QNetworkReply::NoError) {
qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" qCWarning(LOG_AW) << "An error occurs" << _reply->error() << "with message" << _reply->errorString();
<< _reply->errorString();
return; return;
} }

View File

@ -136,8 +136,7 @@ QString GraphicalItem::image(const QVariant &value)
QByteArray byteArray; QByteArray byteArray;
QBuffer buffer(&byteArray); QBuffer buffer(&byteArray);
pixmap.save(&buffer, "PNG"); pixmap.save(&buffer, "PNG");
QString url QString url = QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64()));
= QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64()));
return url; return url;
} }
@ -541,8 +540,7 @@ void GraphicalItem::changeColor()
QString outputColor; QString outputColor;
if (state == 0) { if (state == 0) {
QColor color = m_helper->stringToColor(lineEdit->text()); QColor color = m_helper->stringToColor(lineEdit->text());
QColor newColor = QColorDialog::getColor(color, this, i18n("Select color"), QColor newColor = QColorDialog::getColor(color, this, i18n("Select color"), QColorDialog::ShowAlphaChannel);
QColorDialog::ShowAlphaChannel);
if (!newColor.isValid()) if (!newColor.isValid())
return; return;
qCInfo(LOG_LIB) << "Selected color" << newColor; qCInfo(LOG_LIB) << "Selected color" << newColor;
@ -557,8 +555,7 @@ void GraphicalItem::changeColor()
} else if (state == 1) { } else if (state == 1) {
QString path = lineEdit->text(); QString path = lineEdit->text();
QString directory = QFileInfo(path).absolutePath(); QString directory = QFileInfo(path).absolutePath();
outputColor outputColor = QFileDialog::getOpenFileUrl(this, i18n("Select path"), directory,
= QFileDialog::getOpenFileUrl(this, i18n("Select path"), directory,
i18n("Images (*.png *.bpm *.jpg);;All files (*.*)")) i18n("Images (*.png *.bpm *.jpg);;All files (*.*)"))
.toString(); .toString();

View File

@ -40,11 +40,11 @@ GraphicalItemHelper::~GraphicalItemHelper()
} }
void GraphicalItemHelper::setParameters(const QString &_active, const QString &_inactive, void GraphicalItemHelper::setParameters(const QString &_active, const QString &_inactive, const int _width,
const int _width, const int _height, const int _count) const int _height, const int _count)
{ {
qCDebug(LOG_LIB) << "Use active color" << _active << ", inactive" << _inactive << ", width" qCDebug(LOG_LIB) << "Use active color" << _active << ", inactive" << _inactive << ", width" << _width << ", height"
<< _width << ", height" << _height << ", count" << _count; << _height << ", count" << _count;
// put images to pens if any otherwise set pen colors // put images to pens if any otherwise set pen colors
// Images resize to content here as well // Images resize to content here as well
@ -155,11 +155,10 @@ void GraphicalItemHelper::paintHorizontal(const float _percent)
m_inactivePen.setWidth(m_height); m_inactivePen.setWidth(m_height);
// inactive // inactive
auto width = static_cast<float>(m_width); auto width = static_cast<float>(m_width);
m_scene->addLine(_percent * width + 0.5 * m_height, 0.5 * m_height, m_width + 0.5 * m_height, m_scene->addLine(_percent * width + 0.5 * m_height, 0.5 * m_height, m_width + 0.5 * m_height, 0.5 * m_height,
0.5 * m_height, m_inactivePen); m_inactivePen);
// active // active
m_scene->addLine(-0.5 * m_height, 0.5 * m_height, _percent * width - 0.5 * m_height, m_scene->addLine(-0.5 * m_height, 0.5 * m_height, _percent * width - 0.5 * m_height, 0.5 * m_height, m_activePen);
0.5 * m_height, m_activePen);
} }
@ -170,8 +169,8 @@ void GraphicalItemHelper::paintVertical(const float _percent)
m_activePen.setWidth(m_height); m_activePen.setWidth(m_height);
m_inactivePen.setWidth(m_height); m_inactivePen.setWidth(m_height);
// inactive // inactive
m_scene->addLine(0.5 * m_width, -0.5 * m_width, 0.5 * m_width, m_scene->addLine(0.5 * m_width, -0.5 * m_width, 0.5 * m_width, (1.0 - _percent) * m_height - 0.5 * m_width,
(1.0 - _percent) * m_height - 0.5 * m_width, m_inactivePen); m_inactivePen);
// active // active
m_scene->addLine(0.5 * m_width, (1.0 - _percent) * m_height + 0.5 * m_width, 0.5 * m_width, m_scene->addLine(0.5 * m_width, (1.0 - _percent) * m_height + 0.5 * m_width, 0.5 * m_width,
m_height + 0.5 * m_width, m_activePen); m_height + 0.5 * m_width, m_activePen);

View File

@ -33,8 +33,7 @@ public:
explicit GraphicalItemHelper(QObject *_parent = nullptr, QGraphicsScene *_scene = nullptr); explicit GraphicalItemHelper(QObject *_parent = nullptr, QGraphicsScene *_scene = nullptr);
~GraphicalItemHelper() override; ~GraphicalItemHelper() override;
// parameters // parameters
void setParameters(const QString &_active, const QString &_inactive, int _width, int _height, void setParameters(const QString &_active, const QString &_inactive, int _width, int _height, int _count);
int _count);
// paint methods // paint methods
void paintBars(float _value); void paintBars(float _value);
void paintCircle(float _percent); void paintCircle(float _percent);

View File

@ -66,8 +66,7 @@ QVariantHash OWMWeatherProvider::parse(const QVariantMap &_json) const
return parseSingleJson(_json); return parseSingleJson(_json);
} else { } else {
QVariantList list = _json["list"].toList(); QVariantList list = _json["list"].toList();
return parseSingleJson(list.count() <= m_ts ? list.at(m_ts - 1).toMap() return parseSingleJson(list.count() <= m_ts ? list.at(m_ts - 1).toMap() : list.last().toMap());
: list.last().toMap());
} }
} }

View File

@ -67,10 +67,8 @@ void QCronScheduler::expired()
{ {
QDateTime now = QDateTime::currentDateTime(); QDateTime now = QDateTime::currentDateTime();
if (m_schedule.minutes.contains(now.time().minute()) if (m_schedule.minutes.contains(now.time().minute()) && m_schedule.hours.contains(now.time().hour())
&& m_schedule.hours.contains(now.time().hour()) && m_schedule.days.contains(now.date().day()) && m_schedule.months.contains(now.date().month())
&& m_schedule.days.contains(now.date().day())
&& m_schedule.months.contains(now.date().month())
&& m_schedule.weekdays.contains(now.date().dayOfWeek())) && m_schedule.weekdays.contains(now.date().dayOfWeek()))
emit(activated()); emit(activated());
} }

View File

@ -49,15 +49,13 @@ void StooqQuotesProvider::initUrl(const QString &_asset)
} }
QVariantHash StooqQuotesProvider::parse(const QByteArray &_source, QVariantHash StooqQuotesProvider::parse(const QByteArray &_source, const QVariantHash &_oldValues) const
const QVariantHash &_oldValues) const
{ {
qCDebug(LOG_LIB) << "Parse csv" << _source; qCDebug(LOG_LIB) << "Parse csv" << _source;
QVariantHash values; QVariantHash values;
QStringList sourceValues QStringList sourceValues = QTextCodec::codecForMib(106)->toUnicode(_source).trimmed().split(',');
= QTextCodec::codecForMib(106)->toUnicode(_source).trimmed().split(',');
if (sourceValues.count() != 2) { if (sourceValues.count() != 2) {
qCWarning(LOG_LIB) << "Parse error" << sourceValues; qCWarning(LOG_LIB) << "Parse error" << sourceValues;
return values; return values;

View File

@ -31,8 +31,7 @@ public:
explicit StooqQuotesProvider(QObject *_parent); explicit StooqQuotesProvider(QObject *_parent);
~StooqQuotesProvider() override; ~StooqQuotesProvider() override;
void initUrl(const QString &_asset) override; void initUrl(const QString &_asset) override;
[[nodiscard]] QVariantHash parse(const QByteArray &_source, [[nodiscard]] QVariantHash parse(const QByteArray &_source, const QVariantHash &_oldValues) const override;
const QVariantHash &_oldValues) const override;
[[nodiscard]] QUrl url() const override; [[nodiscard]] QUrl url() const override;
private: private:

View File

@ -49,8 +49,7 @@ void YahooQuotesProvider::initUrl(const QString &_asset)
} }
QVariantHash YahooQuotesProvider::parse(const QByteArray &_source, QVariantHash YahooQuotesProvider::parse(const QByteArray &_source, const QVariantHash &_oldValues) const
const QVariantHash &_oldValues) const
{ {
qCDebug(LOG_LIB) << "Parse json" << _source; qCDebug(LOG_LIB) << "Parse json" << _source;

View File

@ -32,8 +32,7 @@ public:
explicit YahooQuotesProvider(QObject *_parent); explicit YahooQuotesProvider(QObject *_parent);
~YahooQuotesProvider() override; ~YahooQuotesProvider() override;
void initUrl(const QString &_asset) override; void initUrl(const QString &_asset) override;
[[nodiscard]] QVariantHash parse(const QByteArray &_source, [[nodiscard]] QVariantHash parse(const QByteArray &_source, const QVariantHash &_oldValues) const override;
const QVariantHash &_oldValues) const override;
[[nodiscard]] QUrl url() const override; [[nodiscard]] QUrl url() const override;
private: private:

View File

@ -73,8 +73,7 @@ QUrl YahooWeatherProvider::url() const
} }
QVariantHash YahooWeatherProvider::parseCurrent(const QVariantMap &_json, QVariantHash YahooWeatherProvider::parseCurrent(const QVariantMap &_json, const QVariantMap &_atmosphere) const
const QVariantMap &_atmosphere) const
{ {
qCDebug(LOG_LIB) << "Parse current weather from" << _json; qCDebug(LOG_LIB) << "Parse current weather from" << _json;
@ -99,8 +98,7 @@ QVariantHash YahooWeatherProvider::parseForecast(const QVariantMap &_json) const
QVariantHash values; QVariantHash values;
QVariantList weatherList = _json["forecast"].toList(); QVariantList weatherList = _json["forecast"].toList();
QVariantMap weatherMap QVariantMap weatherMap = weatherList.count() < m_ts ? weatherList.last().toMap() : weatherList.at(m_ts).toMap();
= weatherList.count() < m_ts ? weatherList.last().toMap() : weatherList.at(m_ts).toMap();
int id = weatherMap["code"].toInt(); int id = weatherMap["code"].toInt();
values[tag("weatherId")] = id; values[tag("weatherId")] = id;
values[tag("timestamp")] = weatherMap["date"].toString(); values[tag("timestamp")] = weatherMap["date"].toString();

View File

@ -38,8 +38,7 @@ public:
[[nodiscard]] QUrl url() const override; [[nodiscard]] QUrl url() const override;
private: private:
[[nodiscard]] QVariantHash parseCurrent(const QVariantMap &_json, [[nodiscard]] QVariantHash parseCurrent(const QVariantMap &_json, const QVariantMap &_atmosphere) const;
const QVariantMap &_atmosphere) const;
[[nodiscard]] QVariantHash parseForecast(const QVariantMap &_json) const; [[nodiscard]] QVariantHash parseForecast(const QVariantMap &_json) const;
int m_ts = 0; int m_ts = 0;
QUrl m_url; QUrl m_url;

View File

@ -17,7 +17,7 @@ else ()
endif () endif ()
# some flags # some flags
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
# verbose output for debug builds # verbose output for debug builds

View File

@ -21,17 +21,11 @@ import QtQuick.Layouts 1.1
import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.private.desktoppanel 1.0 import org.kde.plasma.private.desktoppanel 1.0
import "." import "."
Item { Item {
id: main id: main
// backend
DPAdds {
id: dpAdds
}
property bool debug: dpAdds.isDebugEnabled() property bool debug: dpAdds.isDebugEnabled()
property variant tooltipSettings: { property variant tooltipSettings: {
@ -40,20 +34,113 @@ Item {
"tooltipWidth": plasmoid.configuration.tooltipWidth "tooltipWidth": plasmoid.configuration.tooltipWidth
} }
signal needUpdate signal needUpdate()
signal needTooltipUpdate signal needTooltipUpdate()
signal sizeUpdate signal sizeUpdate()
// init // init
Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation
Plasmoid.compactRepresentation: Plasmoid.fullRepresentation Plasmoid.compactRepresentation: Plasmoid.fullRepresentation
Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
Plasmoid.icon: "utilities-system-monitor" Plasmoid.icon: "utilities-system-monitor"
Plasmoid.backgroundHints: plasmoid.configuration.background ? "DefaultBackground" : "NoBackground" Plasmoid.backgroundHints: plasmoid.configuration.background ? "DefaultBackground" : "NoBackground"
onNeedUpdate: {
if (debug)
console.debug();
for (var i = 0; i < repeater.count; i++) {
if (!repeater.itemAt(i)) {
if (debug)
console.info("Nothing to do here yet", i);
timer.start();
return ;
}
repeater.itemAt(i).text = dpAdds.parsePattern(plasmoid.configuration.text, i);
if (dpAdds.currentDesktop() === i) {
repeater.itemAt(i).color = plasmoid.configuration.currentFontColor;
repeater.itemAt(i).font.family = plasmoid.configuration.currentFontFamily;
repeater.itemAt(i).font.italic = plasmoid.configuration.currentFontStyle === "italic";
repeater.itemAt(i).font.pointSize = plasmoid.configuration.currentFontSize;
repeater.itemAt(i).font.weight = General.fontWeight[plasmoid.configuration.currentFontWeight];
repeater.itemAt(i).style = General.textStyle[plasmoid.configuration.currentTextStyle];
repeater.itemAt(i).styleColor = plasmoid.configuration.currentTextStyleColor;
} else {
repeater.itemAt(i).color = plasmoid.configuration.fontColor;
repeater.itemAt(i).font.family = plasmoid.configuration.fontFamily;
repeater.itemAt(i).font.italic = plasmoid.configuration.fontStyle === "italic";
repeater.itemAt(i).font.pointSize = plasmoid.configuration.fontSize;
repeater.itemAt(i).font.weight = General.fontWeight[plasmoid.configuration.fontWeight];
repeater.itemAt(i).style = General.textStyle[plasmoid.configuration.textStyle];
repeater.itemAt(i).styleColor = plasmoid.configuration.textStyleColor;
}
repeater.itemAt(i).update();
}
sizeUpdate();
needTooltipUpdate();
}
onNeedTooltipUpdate: {
if (debug)
console.debug();
for (var i = 0; i < repeater.count; i++) {
repeater.itemAt(i).tooltip.text = dpAdds.toolTipImage(i);
// resize text tooltip to content size
// this hack does not work for images-based tooltips
if (tooltipSettings.tooltipType === "names") {
repeater.itemAt(i).tooltip.height = repeater.itemAt(i).tooltip.implicitHeight;
repeater.itemAt(i).tooltip.width = repeater.itemAt(i).tooltip.implicitWidth;
}
}
}
onSizeUpdate: {
if (debug)
console.debug();
if (plasmoid.configuration.height === 0) {
var newHeight = 0;
for (var i = 0; i < repeater.count; i++) newHeight += repeater.itemAt(i).contentHeight
Layout.minimumHeight = newHeight;
Layout.maximumHeight = -1;
} else {
Layout.minimumHeight = plasmoid.configuration.height;
Layout.maximumHeight = plasmoid.configuration.height;
}
if (plasmoid.configuration.width === 0) {
var newWidth = 0;
for (var i = 0; i < repeater.count; i++) newWidth += repeater.itemAt(i).contentWidth
Layout.minimumWidth = newWidth;
Layout.maximumWidth = -1;
} else {
Layout.minimumWidth = plasmoid.configuration.width;
Layout.maximumWidth = plasmoid.configuration.width;
}
}
Plasmoid.onUserConfiguringChanged: {
if (plasmoid.userConfiguring)
return ;
if (debug)
console.debug();
dpAdds.setMark(plasmoid.configuration.mark);
dpAdds.setToolTipData(tooltipSettings);
needUpdate();
}
Component.onCompleted: {
if (debug)
console.debug();
// init submodule
Plasmoid.userConfiguringChanged(false);
dpAdds.desktopChanged.connect(needUpdate);
dpAdds.windowListChanged.connect(needTooltipUpdate);
}
// backend
DPAdds {
id: dpAdds
}
// ui // ui
GridLayout { GridLayout {
@ -63,140 +150,56 @@ Item {
Repeater { Repeater {
id: repeater id: repeater
Layout.columnSpan: 0 Layout.columnSpan: 0
Layout.rowSpan: 0 Layout.rowSpan: 0
model: dpAdds.numberOfDesktops() model: dpAdds.numberOfDesktops()
Text { Text {
id: text id: text
property alias tooltip: tooltip
height: contentHeight height: contentHeight
width: contentWidth width: contentWidth
renderType: Text.NativeRendering renderType: Text.NativeRendering
textFormat: Text.RichText textFormat: Text.RichText
wrapMode: Text.NoWrap wrapMode: Text.NoWrap
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
text: dpAdds.parsePattern(plasmoid.configuration.text, index)
text: dpAdds.parsePattern(plasmoid.configuration.text, index + 1)
property alias tooltip: tooltip
MouseArea { MouseArea {
hoverEnabled: true hoverEnabled: true
anchors.fill: parent anchors.fill: parent
onClicked: dpAdds.setCurrentDesktop(index + 1) onClicked: dpAdds.setCurrentDesktop(index)
onEntered: needTooltipUpdate() onEntered: needTooltipUpdate()
} }
PlasmaCore.ToolTipArea { PlasmaCore.ToolTipArea {
height: tooltip.height height: tooltip.height
width: tooltip.width width: tooltip.width
mainItem: Text { mainItem: Text {
id: tooltip id: tooltip
height: contentHeight height: contentHeight
width: contentWidth width: contentWidth
textFormat: Text.RichText textFormat: Text.RichText
} }
}
}
}
} }
}
}
}
Timer { Timer {
id: timer id: timer
interval: 1000 interval: 1000
onTriggered: needUpdate() onTriggered: needUpdate()
} }
onNeedUpdate: {
if (debug) console.debug()
for (var i=0; i<repeater.count; i++) {
if (!repeater.itemAt(i)) {
if (debug) console.info("Nothing to do here yet", i)
timer.start()
return
}
repeater.itemAt(i).text = dpAdds.parsePattern(plasmoid.configuration.text, i + 1)
if (dpAdds.currentDesktop() == i + 1) {
repeater.itemAt(i).color = plasmoid.configuration.currentFontColor
repeater.itemAt(i).font.family = plasmoid.configuration.currentFontFamily
repeater.itemAt(i).font.italic = plasmoid.configuration.currentFontStyle == "italic" ? true : false
repeater.itemAt(i).font.pointSize = plasmoid.configuration.currentFontSize
repeater.itemAt(i).font.weight = General.fontWeight[plasmoid.configuration.currentFontWeight]
repeater.itemAt(i).style = General.textStyle[plasmoid.configuration.currentTextStyle]
repeater.itemAt(i).styleColor = plasmoid.configuration.currentTextStyleColor
} else {
repeater.itemAt(i).color = plasmoid.configuration.fontColor
repeater.itemAt(i).font.family = plasmoid.configuration.fontFamily
repeater.itemAt(i).font.italic = plasmoid.configuration.fontStyle == "italic" ? true : false
repeater.itemAt(i).font.pointSize = plasmoid.configuration.fontSize
repeater.itemAt(i).font.weight = General.fontWeight[plasmoid.configuration.fontWeight]
repeater.itemAt(i).style = General.textStyle[plasmoid.configuration.textStyle]
repeater.itemAt(i).styleColor = plasmoid.configuration.textStyleColor
}
repeater.itemAt(i).update()
}
sizeUpdate()
needTooltipUpdate()
}
onNeedTooltipUpdate: {
if (debug) console.debug()
for (var i=0; i<repeater.count; i++) {
repeater.itemAt(i).tooltip.text = dpAdds.toolTipImage(i + 1)
// resize text tooltip to content size
// this hack does not work for images-based tooltips
if (tooltipSettings.tooltipType == "names") {
repeater.itemAt(i).tooltip.height = repeater.itemAt(i).tooltip.implicitHeight
repeater.itemAt(i).tooltip.width = repeater.itemAt(i).tooltip.implicitWidth
}
}
}
onSizeUpdate: {
if (debug) console.debug()
if (plasmoid.configuration.height == 0) {
var newHeight = 0
for (var i=0; i<repeater.count; i++)
newHeight += repeater.itemAt(i).contentHeight
Layout.minimumHeight = newHeight
Layout.maximumHeight = -1
} else {
Layout.minimumHeight = plasmoid.configuration.height
Layout.maximumHeight = plasmoid.configuration.height
}
if (plasmoid.configuration.width == 0) {
var newWidth = 0
for (var i=0; i<repeater.count; i++)
newWidth += repeater.itemAt(i).contentWidth
Layout.minimumWidth = newWidth
Layout.maximumWidth = -1
} else {
Layout.minimumWidth = plasmoid.configuration.width
Layout.maximumWidth = plasmoid.configuration.width
}
}
Plasmoid.onUserConfiguringChanged: {
if (plasmoid.userConfiguring) return
if (debug) console.debug()
dpAdds.setMark(plasmoid.configuration.mark)
dpAdds.setToolTipData(tooltipSettings)
needUpdate()
}
Component.onCompleted: {
if (debug) console.debug()
// init submodule
Plasmoid.userConfiguringChanged(false)
dpAdds.desktopChanged.connect(needUpdate)
dpAdds.windowListChanged.connect(needTooltipUpdate)
}
} }

View File

@ -21,6 +21,10 @@
#include <KNotifications/KNotification> #include <KNotifications/KNotification>
#include <KWindowSystem/KWindowSystem> #include <KWindowSystem/KWindowSystem>
#include <KWindowSystem/KX11Extras> #include <KWindowSystem/KX11Extras>
#include <taskmanager/virtualdesktopinfo.h>
#include <taskmanager/waylandtasksmodel.h>
#include <taskmanager/windowtasksmodel.h>
#include <taskmanager/xwindowtasksmodel.h>
#include <QBuffer> #include <QBuffer>
#include <QGraphicsPixmapItem> #include <QGraphicsPixmapItem>
@ -43,8 +47,10 @@ DPAdds::DPAdds(QObject *_parent)
for (auto &metadata : AWDebug::getBuildData()) for (auto &metadata : AWDebug::getBuildData())
qCDebug(LOG_DP) << metadata; qCDebug(LOG_DP) << metadata;
connect(KWindowSystem::self(), SIGNAL(currentDesktopChanged(int)), this, m_vdi = new TaskManager::VirtualDesktopInfo(this);
SIGNAL(desktopChanged())); m_taskModel = new TaskManager::WindowTasksModel(this);
connect(m_vdi, SIGNAL(currentDesktopChanged()), this, SIGNAL(desktopChanged()));
connect(KWindowSystem::self(), SIGNAL(windowAdded(WId)), this, SIGNAL(windowListChanged())); connect(KWindowSystem::self(), SIGNAL(windowAdded(WId)), this, SIGNAL(windowListChanged()));
connect(KWindowSystem::self(), SIGNAL(windowRemoved(WId)), this, SIGNAL(windowListChanged())); connect(KWindowSystem::self(), SIGNAL(windowRemoved(WId)), this, SIGNAL(windowListChanged()));
} }
@ -53,6 +59,9 @@ DPAdds::DPAdds(QObject *_parent)
DPAdds::~DPAdds() DPAdds::~DPAdds()
{ {
qCDebug(LOG_DP) << __PRETTY_FUNCTION__; qCDebug(LOG_DP) << __PRETTY_FUNCTION__;
delete m_vdi;
delete m_taskModel;
} }
@ -63,9 +72,11 @@ bool DPAdds::isDebugEnabled()
} }
int DPAdds::currentDesktop() int DPAdds::currentDesktop() const
{ {
return KX11Extras::currentDesktop(); auto current = m_vdi->currentDesktop();
auto decrement = KWindowSystem::isPlatformX11() ? 1 : 0;
return m_vdi->position(current) - decrement;
} }
@ -86,9 +97,9 @@ QStringList DPAdds::dictKeys(const bool _sorted, const QString &_regexp)
} }
int DPAdds::numberOfDesktops() int DPAdds::numberOfDesktops() const
{ {
return KX11Extras::numberOfDesktops(); return m_vdi->numberOfDesktops();
} }
@ -118,12 +129,16 @@ QString DPAdds::toolTipImage(const int _desktop) const
toolTipView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); toolTipView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
toolTipView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); toolTipView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
auto screens = QGuiApplication::screens();
auto desktop = std::accumulate(screens.cbegin(), screens.cend(), QRect(), [](QRect source, const QScreen *screen) {
return source.united(screen->availableGeometry());
});
// update // update
auto width = static_cast<float>(info.desktop.width()); auto width = static_cast<float>(desktop.width());
auto height = static_cast<float>(info.desktop.height()); auto height = static_cast<float>(desktop.height());
float margin = 5.0f * width / 400.0f; float margin = 5.0f * width / 400.0f;
toolTipView->resize(static_cast<int>(width + 2.0f * margin), toolTipView->resize(static_cast<int>(width + 2.0f * margin), static_cast<int>(height + 2.0f * margin));
static_cast<int>(height + 2.0f * margin));
toolTipScene->clear(); toolTipScene->clear();
toolTipScene->setBackgroundBrush(QBrush(Qt::NoBrush)); toolTipScene->setBackgroundBrush(QBrush(Qt::NoBrush));
// borders // borders
@ -144,32 +159,27 @@ QString DPAdds::toolTipImage(const int _desktop) const
auto bottom = static_cast<float>(rect.bottom()); auto bottom = static_cast<float>(rect.bottom());
toolTipScene->addLine(left + margin, bottom + margin, left + margin, top + margin, pen); toolTipScene->addLine(left + margin, bottom + margin, left + margin, top + margin, pen);
toolTipScene->addLine(left + margin, top + margin, right + margin, top + margin, pen); toolTipScene->addLine(left + margin, top + margin, right + margin, top + margin, pen);
toolTipScene->addLine(right + margin, top + margin, right + margin, bottom + margin, toolTipScene->addLine(right + margin, top + margin, right + margin, bottom + margin, pen);
pen); toolTipScene->addLine(right + margin, bottom + margin, left + margin, bottom + margin, pen);
toolTipScene->addLine(right + margin, bottom + margin, left + margin, bottom + margin,
pen);
} }
} else if (m_tooltipType == "clean") { } else if (m_tooltipType == "clean") {
QScreen *screen = QGuiApplication::primaryScreen(); auto *screen = QGuiApplication::primaryScreen();
std::for_each(info.desktopsData.cbegin(), info.desktopsData.cend(), std::for_each(info.desktopsData.cbegin(), info.desktopsData.cend(),
[&toolTipScene, &screen](const WindowData &data) { [&toolTipScene, &screen](const WindowData &data) {
QPixmap desktop = screen->grabWindow(data.id); QPixmap desktop = screen->grabWindow(data.id);
toolTipScene->addPixmap(desktop)->setOffset(data.rect.left(), toolTipScene->addPixmap(desktop)->setOffset(data.rect.left(), data.rect.top());
data.rect.top());
}); });
} else if (m_tooltipType == "windows") { } else if (m_tooltipType == "windows") {
QScreen *screen = QGuiApplication::primaryScreen(); auto *screen = QGuiApplication::primaryScreen();
std::for_each(info.desktopsData.cbegin(), info.desktopsData.cend(), std::for_each(info.desktopsData.cbegin(), info.desktopsData.cend(),
[&toolTipScene, &screen](const WindowData &data) { [&toolTipScene, &screen](const WindowData &data) {
QPixmap desktop = screen->grabWindow(data.id); QPixmap desktop = screen->grabWindow(data.id);
toolTipScene->addPixmap(desktop)->setOffset(data.rect.left(), toolTipScene->addPixmap(desktop)->setOffset(data.rect.left(), data.rect.top());
data.rect.top());
}); });
std::for_each(info.windowsData.cbegin(), info.windowsData.cend(), std::for_each(info.windowsData.cbegin(), info.windowsData.cend(),
[&toolTipScene, &screen](const WindowData &data) { [&toolTipScene, &screen](const WindowData &data) {
QPixmap window = screen->grabWindow(data.id); QPixmap window = screen->grabWindow(data.id);
toolTipScene->addPixmap(window)->setOffset(data.rect.left(), toolTipScene->addPixmap(window)->setOffset(data.rect.left(), data.rect.top());
data.rect.top());
}); });
} }
@ -233,13 +243,12 @@ QString DPAdds::valueByKey(const QString &_key, int _desktop) const
QString currentMark = currentDesktop() == _desktop ? m_mark : ""; QString currentMark = currentDesktop() == _desktop ? m_mark : "";
if (_key == "mark") if (_key == "mark")
return QString("%1") return QString("%1").arg(currentMark, m_mark.count(), QLatin1Char(' ')).replace(" ", "&nbsp;");
.arg(currentMark, m_mark.count(), QLatin1Char(' ')) else if (_key == "name") {
.replace(" ", "&nbsp;"); auto name = m_vdi->desktopNames().at(_desktop);
else if (_key == "name") return name.replace(" ", "&nbsp;");
return KX11Extras::desktopName(_desktop).replace(" ", "&nbsp;"); } else if (_key == "number")
else if (_key == "number") return QString::number(_desktop + 1);
return QString::number(_desktop);
else if (_key == "total") else if (_key == "total")
return QString::number(numberOfDesktops()); return QString::number(numberOfDesktops());
else else
@ -262,8 +271,8 @@ QVariantMap DPAdds::getFont(const QVariantMap &_defaultFont)
QVariantMap fontMap; QVariantMap fontMap;
int ret = 0; int ret = 0;
CFont defaultCFont = CFont(_defaultFont["family"].toString(), _defaultFont["size"].toInt(), 400, CFont defaultCFont = CFont(_defaultFont["family"].toString(), _defaultFont["size"].toInt(), 400, false,
false, _defaultFont["color"].toString()); _defaultFont["color"].toString());
CFont font = CFontDialog::getFont(i18n("Select font"), defaultCFont, false, false, &ret); CFont font = CFontDialog::getFont(i18n("Select font"), defaultCFont, false, false, &ret);
fontMap["applied"] = ret; fontMap["applied"] = ret;
@ -291,35 +300,34 @@ void DPAdds::setCurrentDesktop(const int _desktop)
{ {
qCDebug(LOG_DP) << "Desktop" << _desktop; qCDebug(LOG_DP) << "Desktop" << _desktop;
KX11Extras::setCurrentDesktop(_desktop); m_vdi->requestActivate(m_vdi->desktopIds().at(_desktop));
} }
DPAdds::DesktopWindowsInfo DPAdds::getInfoByDesktop(const int _desktop) DPAdds::DesktopWindowsInfo DPAdds::getInfoByDesktop(const int _desktop) const
{ {
qCDebug(LOG_DP) << "Desktop" << _desktop; qCDebug(LOG_DP) << "Desktop" << _desktop;
auto desktop = m_vdi->desktopIds().at(_desktop);
DesktopWindowsInfo info; DesktopWindowsInfo info;
info.desktop = KX11Extras::workArea(_desktop); for (auto i = 0; i < m_taskModel->rowCount(); i++) {
auto model = m_taskModel->index(i, 0);
for (auto &id : KX11Extras::windows()) {
KWindowInfo winInfo = KWindowInfo(
id, NET::Property::WMDesktop | NET::Property::WMGeometry | NET::Property::WMState
| NET::Property::WMWindowType | NET::Property::WMVisibleName);
if (!winInfo.isOnDesktop(_desktop))
continue;
WindowData data; WindowData data;
data.id = id;
data.name = winInfo.visibleName(); data.id = WId(0); // TODO
data.rect = winInfo.geometry(); data.name = model.data(TaskManager::AbstractTasksModel::AppName).toString();
if (winInfo.windowType(NET::WindowTypeMask::NormalMask) == NET::WindowType::Normal) { data.rect = model.data(TaskManager::AbstractTasksModel::Geometry).toRect();
if (winInfo.isMinimized())
auto desktops = model.data(TaskManager::AbstractTasksModel::VirtualDesktops).toList();
if (desktops.isEmpty()) {
// don't think it is possible to put desktop to desktop
info.desktopsData.append(data);
} else {
auto isMinimized = model.data(TaskManager::AbstractTasksModel::IsMinimized).toBool();
if (isMinimized || !desktops.contains(desktop))
continue; continue;
info.windowsData.append(data); info.windowsData.append(data);
} else if (winInfo.windowType(NET::WindowTypeMask::DesktopMask)
== NET::WindowType::Desktop) {
info.desktopsData.append(data);
} }
} }

View File

@ -24,6 +24,11 @@
#include <QRect> #include <QRect>
namespace TaskManager
{
class VirtualDesktopInfo;
class WindowTasksModel;
} // namespace TaskManager
class DPAdds : public QObject class DPAdds : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -35,7 +40,6 @@ class DPAdds : public QObject
} WindowData; } WindowData;
typedef struct { typedef struct {
QRect desktop;
QList<WindowData> desktopsData; QList<WindowData> desktopsData;
QList<WindowData> windowsData; QList<WindowData> windowsData;
} DesktopWindowsInfo; } DesktopWindowsInfo;
@ -44,9 +48,9 @@ public:
explicit DPAdds(QObject *_parent = nullptr); explicit DPAdds(QObject *_parent = nullptr);
~DPAdds() override; ~DPAdds() override;
Q_INVOKABLE static bool isDebugEnabled(); Q_INVOKABLE static bool isDebugEnabled();
Q_INVOKABLE static int currentDesktop(); Q_INVOKABLE [[nodiscard]] int currentDesktop() const;
Q_INVOKABLE static QStringList dictKeys(bool _sorted = true, const QString &_regexp = ""); Q_INVOKABLE static QStringList dictKeys(bool _sorted = true, const QString &_regexp = "");
Q_INVOKABLE static int numberOfDesktops(); Q_INVOKABLE [[nodiscard]] int numberOfDesktops() const;
Q_INVOKABLE [[nodiscard]] QString toolTipImage(int _desktop) const; Q_INVOKABLE [[nodiscard]] QString toolTipImage(int _desktop) const;
Q_INVOKABLE [[nodiscard]] QString parsePattern(const QString &_pattern, int _desktop) const; Q_INVOKABLE [[nodiscard]] QString parsePattern(const QString &_pattern, int _desktop) const;
// values // values
@ -64,11 +68,13 @@ signals:
public slots: public slots:
Q_INVOKABLE static void sendNotification(const QString &_eventId, const QString &_message); Q_INVOKABLE static void sendNotification(const QString &_eventId, const QString &_message);
Q_INVOKABLE static void setCurrentDesktop(int _desktop); Q_INVOKABLE void setCurrentDesktop(int _desktop);
private: private:
static DesktopWindowsInfo getInfoByDesktop(int _desktop); [[nodiscard]] DesktopWindowsInfo getInfoByDesktop(int _desktop) const;
// variables // variables
TaskManager::VirtualDesktopInfo *m_vdi = nullptr;
TaskManager::WindowTasksModel *m_taskModel = nullptr;
int m_tooltipWidth = 200; int m_tooltipWidth = 200;
QString m_mark = "*"; QString m_mark = "*";
QString m_tooltipColor = "#000000"; QString m_tooltipColor = "#000000";

View File

@ -86,8 +86,7 @@ bool ExtendedSysMon::updateSourceEvent(const QString &_source)
void ExtendedSysMon::readConfiguration() void ExtendedSysMon::readConfiguration()
{ {
QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, QString fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, "plasma-dataengine-extsysmon.conf");
"plasma-dataengine-extsysmon.conf");
qCInfo(LOG_ESM) << "Configuration file" << fileName; qCInfo(LOG_ESM) << "Configuration file" << fileName;
QSettings settings(fileName, QSettings::IniFormat); QSettings settings(fileName, QSettings::IniFormat);
QHash<QString, QString> rawConfig; QHash<QString, QString> rawConfig;
@ -138,8 +137,7 @@ QHash<QString, QString> ExtendedSysMon::updateConfiguration(QHash<QString, QStri
_rawConfig["HDDDEV"] = devices.join(','); _rawConfig["HDDDEV"] = devices.join(',');
} }
// player // player
if ((_rawConfig["PLAYER"] != "mpd") && (_rawConfig["PLAYER"] != "mpris") if ((_rawConfig["PLAYER"] != "mpd") && (_rawConfig["PLAYER"] != "mpris") && (_rawConfig["PLAYER"] != "disable"))
&& (_rawConfig["PLAYER"] != "disable"))
_rawConfig["PLAYER"] = "mpris"; _rawConfig["PLAYER"] = "mpris";
// player symbols // player symbols
if (_rawConfig["PLAYERSYMBOLS"].toInt() <= 0) if (_rawConfig["PLAYERSYMBOLS"].toInt() <= 0)

View File

@ -42,8 +42,7 @@ private:
QHash<QString, QString> m_configuration; QHash<QString, QString> m_configuration;
// methods // methods
void readConfiguration(); void readConfiguration();
[[nodiscard]] static QHash<QString, QString> [[nodiscard]] static QHash<QString, QString> updateConfiguration(QHash<QString, QString> _rawConfig);
updateConfiguration(QHash<QString, QString> _rawConfig);
}; };

View File

@ -87,8 +87,7 @@ void ExtSysMonAggregator::init(const QHash<QString, QString> &_config)
qCDebug(LOG_ESM) << "Configuration" << _config; qCDebug(LOG_ESM) << "Configuration" << _config;
// battery // battery
AbstractExtSysMonSource *batteryItem AbstractExtSysMonSource *batteryItem = new BatterySource(this, QStringList() << _config["ACPIPATH"]);
= new BatterySource(this, QStringList() << _config["ACPIPATH"]);
for (auto &source : batteryItem->sources()) for (auto &source : batteryItem->sources())
m_map[source] = batteryItem; m_map[source] = batteryItem;
// custom // custom
@ -100,13 +99,11 @@ void ExtSysMonAggregator::init(const QHash<QString, QString> &_config)
for (auto &source : desktopItem->sources()) for (auto &source : desktopItem->sources())
m_map[source] = desktopItem; m_map[source] = desktopItem;
// gpu load // gpu load
AbstractExtSysMonSource *gpuLoadItem AbstractExtSysMonSource *gpuLoadItem = new GPULoadSource(this, QStringList({_config["GPUDEV"]}));
= new GPULoadSource(this, QStringList({_config["GPUDEV"]}));
for (auto &source : gpuLoadItem->sources()) for (auto &source : gpuLoadItem->sources())
m_map[source] = gpuLoadItem; m_map[source] = gpuLoadItem;
// gpu temperature // gpu temperature
AbstractExtSysMonSource *gpuTempItem AbstractExtSysMonSource *gpuTempItem = new GPUTemperatureSource(this, QStringList({_config["GPUDEV"]}));
= new GPUTemperatureSource(this, QStringList({_config["GPUDEV"]}));
for (auto &source : gpuTempItem->sources()) for (auto &source : gpuTempItem->sources())
m_map[source] = gpuTempItem; m_map[source] = gpuTempItem;
// hdd temperature // hdd temperature
@ -119,8 +116,8 @@ void ExtSysMonAggregator::init(const QHash<QString, QString> &_config)
for (auto &source : networkItem->sources()) for (auto &source : networkItem->sources())
m_map[source] = networkItem; m_map[source] = networkItem;
// player // player
AbstractExtSysMonSource *playerItem = new PlayerSource( AbstractExtSysMonSource *playerItem
this, QStringList({_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"], = new PlayerSource(this, QStringList({_config["PLAYER"], _config["MPDADDRESS"], _config["MPDPORT"],
_config["MPRIS"], _config["PLAYERSYMBOLS"]})); _config["MPRIS"], _config["PLAYERSYMBOLS"]}));
for (auto &source : playerItem->sources()) for (auto &source : playerItem->sources())
m_map[source] = playerItem; m_map[source] = playerItem;

View File

@ -56,9 +56,7 @@ QStringList BatterySource::getSources()
if (directory.exists()) { if (directory.exists()) {
m_batteriesCount m_batteriesCount
= directory = directory.entryList(QStringList({"BAT*"}), QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name).count();
.entryList(QStringList({"BAT*"}), QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name)
.count();
qCInfo(LOG_ESS) << "Init batteries count as" << m_batteriesCount; qCInfo(LOG_ESS) << "Init batteries count as" << m_batteriesCount;
for (int i = 0; i < m_batteriesCount; i++) { for (int i = 0; i < m_batteriesCount; i++) {
@ -185,8 +183,7 @@ void BatterySource::run()
// total // total
QFile fullLevelFile(QString("%1/BAT%2/energy_full").arg(m_acpiPath).arg(i)); QFile fullLevelFile(QString("%1/BAT%2/energy_full").arg(m_acpiPath).arg(i));
if (fullLevelFile.open(QIODevice::ReadOnly | QIODevice::Text)) if (fullLevelFile.open(QIODevice::ReadOnly | QIODevice::Text))
m_values[QString("battery/battotal%1").arg(i)] m_values[QString("battery/battotal%1").arg(i)] = QString(fullLevelFile.readLine()).toInt();
= QString(fullLevelFile.readLine()).toInt();
fullLevelFile.close(); fullLevelFile.close();
m_values[QString("battery/bat%1").arg(i)] m_values[QString("battery/bat%1").arg(i)]

View File

@ -56,8 +56,7 @@ QVariantMap CustomSource::initialData(const QString &_source) const
QVariantMap data; QVariantMap data;
data["min"] = ""; data["min"] = "";
data["max"] = ""; data["max"] = "";
data["name"] = QString("Custom command '%1' output") data["name"] = QString("Custom command '%1' output").arg(m_extScripts->itemByTagNumber(index(_source))->uniq());
.arg(m_extScripts->itemByTagNumber(index(_source))->uniq());
data["type"] = "QString"; data["type"] = "QString";
data["units"] = ""; data["units"] = "";

View File

@ -18,7 +18,7 @@
#include "desktopsource.h" #include "desktopsource.h"
#include <KX11Extras> #include <taskmanager/virtualdesktopinfo.h>
#include "awdebug.h" #include "awdebug.h"
@ -28,12 +28,16 @@ DesktopSource::DesktopSource(QObject *_parent, const QStringList &_args)
{ {
Q_ASSERT(_args.count() == 0); Q_ASSERT(_args.count() == 0);
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
m_vdi = new TaskManager::VirtualDesktopInfo(this);
} }
DesktopSource::~DesktopSource() DesktopSource::~DesktopSource()
{ {
qCDebug(LOG_ESS) << __PRETTY_FUNCTION__; qCDebug(LOG_ESS) << __PRETTY_FUNCTION__;
delete m_vdi;
} }
@ -41,20 +45,16 @@ QVariant DesktopSource::data(const QString &_source)
{ {
qCDebug(LOG_ESS) << "Source" << _source; qCDebug(LOG_ESS) << "Source" << _source;
int current = KX11Extras::currentDesktop(); auto current = m_vdi->position(m_vdi->currentDesktop());
int total = KX11Extras::numberOfDesktops();
if (_source == "desktop/current/name") { if (_source == "desktop/current/name") {
return KX11Extras::desktopName(current); return m_vdi->desktopNames().at(current);
} else if (_source == "desktop/current/number") { } else if (_source == "desktop/current/number") {
return current; return current;
} else if (_source == "desktop/total/name") { } else if (_source == "desktop/total/name") {
QStringList desktops; return m_vdi->desktopNames();
for (int i = 1; i < total + 1; i++)
desktops.append(KX11Extras::desktopName(i));
return desktops;
} else if (_source == "desktop/total/number") { } else if (_source == "desktop/total/number") {
return total; return m_vdi->numberOfDesktops();
} }
return QVariant(); return QVariant();

View File

@ -23,6 +23,10 @@
#include "abstractextsysmonsource.h" #include "abstractextsysmonsource.h"
namespace TaskManager
{
class VirtualDesktopInfo;
}
class DesktopSource : public AbstractExtSysMonSource class DesktopSource : public AbstractExtSysMonSource
{ {
Q_OBJECT Q_OBJECT
@ -34,6 +38,9 @@ public:
[[nodiscard]] QVariantMap initialData(const QString &_source) const override; [[nodiscard]] QVariantMap initialData(const QString &_source) const override;
void run() override{}; void run() override{};
[[nodiscard]] QStringList sources() const override; [[nodiscard]] QStringList sources() const override;
private:
TaskManager::VirtualDesktopInfo *m_vdi = nullptr;
}; };

View File

@ -36,7 +36,7 @@ GPULoadSource::GPULoadSource(QObject *_parent, const QStringList &_args)
m_process = new QProcess(nullptr); m_process = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished // fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int, QProcess::ExitStatus) { return updateValue(); }); [this](int, QProcess::ExitStatus) { return updateValue(); });
m_process->waitForFinished(0); m_process->waitForFinished(0);
} }
@ -124,11 +124,9 @@ QStringList GPULoadSource::sources() const
void GPULoadSource::updateValue() void GPULoadSource::updateValue()
{ {
qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode(); qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode();
QString qdebug QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug; qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput; qCInfo(LOG_ESS) << "Output" << qoutput;
if (m_device == "nvidia") { if (m_device == "nvidia") {

View File

@ -36,7 +36,7 @@ GPUTemperatureSource::GPUTemperatureSource(QObject *_parent, const QStringList &
m_process = new QProcess(nullptr); m_process = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished // fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int, QProcess::ExitStatus) { return updateValue(); }); [this](int, QProcess::ExitStatus) { return updateValue(); });
m_process->waitForFinished(0); m_process->waitForFinished(0);
} }
@ -84,8 +84,7 @@ void GPUTemperatureSource::run()
return; return;
// build cmd // build cmd
QString cmd = m_device == "nvidia" ? "nvidia-smi" : "aticonfig"; QString cmd = m_device == "nvidia" ? "nvidia-smi" : "aticonfig";
auto args auto args = m_device == "nvidia" ? QStringList({"-q", "-x"}) : QStringList({"--od-gettemperature"});
= m_device == "nvidia" ? QStringList({"-q", "-x"}) : QStringList({"--od-gettemperature"});
qCInfo(LOG_ESS) << "cmd" << cmd; qCInfo(LOG_ESS) << "cmd" << cmd;
m_process->start(cmd, args); m_process->start(cmd, args);
@ -104,11 +103,9 @@ QStringList GPUTemperatureSource::sources() const
void GPUTemperatureSource::updateValue() void GPUTemperatureSource::updateValue()
{ {
qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode(); qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode();
QString qdebug QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug; qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput; qCInfo(LOG_ESS) << "Output" << qoutput;
if (m_device == "nvidia") { if (m_device == "nvidia") {

View File

@ -41,7 +41,7 @@ HDDTemperatureSource::HDDTemperatureSource(QObject *_parent, const QStringList &
m_processes[device] = new QProcess(nullptr); m_processes[device] = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished // fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
connect(m_processes[device], QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), connect(m_processes[device], QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int, QProcess::ExitStatus) { return updateValue(device); }); [this, &device](int, QProcess::ExitStatus) { return updateValue(device); });
m_processes[device]->waitForFinished(0); m_processes[device]->waitForFinished(0);
} }
} }
@ -120,13 +120,9 @@ void HDDTemperatureSource::updateValue(const QString &_device)
qCDebug(LOG_ESS) << "Called with device" << _device; qCDebug(LOG_ESS) << "Called with device" << _device;
qCInfo(LOG_ESS) << "Cmd returns" << m_processes[_device]->exitCode(); qCInfo(LOG_ESS) << "Cmd returns" << m_processes[_device]->exitCode();
QString qdebug = QTextCodec::codecForMib(106) QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_processes[_device]->readAllStandardError()).trimmed();
->toUnicode(m_processes[_device]->readAllStandardError())
.trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug; qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput = QTextCodec::codecForMib(106) QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_processes[_device]->readAllStandardOutput()).trimmed();
->toUnicode(m_processes[_device]->readAllStandardOutput())
.trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput; qCInfo(LOG_ESS) << "Output" << qoutput;
// parse // parse

View File

@ -34,7 +34,7 @@ NetworkSource::NetworkSource(QObject *_parent, const QStringList &_args)
m_process = new QProcess(nullptr); m_process = new QProcess(nullptr);
// fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished // fucking magic from http://doc.qt.io/qt-5/qprocess.html#finished
connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
[=](int, QProcess::ExitStatus) { return updateSsid(); }); [this](int, QProcess::ExitStatus) { return updateSsid(); });
m_process->waitForFinished(0); m_process->waitForFinished(0);
} }
@ -101,11 +101,9 @@ QStringList NetworkSource::sources() const
void NetworkSource::updateSsid() void NetworkSource::updateSsid()
{ {
qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode(); qCInfo(LOG_ESS) << "Cmd returns" << m_process->exitCode();
QString qdebug QString qdebug = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardError()).trimmed();
qCInfo(LOG_ESS) << "Error" << qdebug; qCInfo(LOG_ESS) << "Error" << qdebug;
QString qoutput QString qoutput = QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
= QTextCodec::codecForMib(106)->toUnicode(m_process->readAllStandardOutput()).trimmed();
qCInfo(LOG_ESS) << "Output" << qoutput; qCInfo(LOG_ESS) << "Output" << qoutput;
m_values["network/current/ssid"] = qoutput; m_values["network/current/ssid"] = qoutput;

View File

@ -68,8 +68,7 @@ QVariant PlayerSource::data(const QString &_source)
QString PlayerSource::getAutoMpris() QString PlayerSource::getAutoMpris()
{ {
QDBusMessage listServices QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, "ListNames");
= QDBusConnection::sessionBus().interface()->call(QDBus::BlockWithGui, "ListNames");
if (listServices.arguments().isEmpty()) { if (listServices.arguments().isEmpty()) {
qCWarning(LOG_ESS) << "Could not find any DBus service"; qCWarning(LOG_ESS) << "Could not find any DBus service";
return ""; return "";
@ -187,12 +186,12 @@ void PlayerSource::run()
m_values["player/sartist"] = stripString(m_values["player/artist"].toString(), m_symbols); m_values["player/sartist"] = stripString(m_values["player/artist"].toString(), m_symbols);
m_values["player/stitle"] = stripString(m_values["player/title"].toString(), m_symbols); m_values["player/stitle"] = stripString(m_values["player/title"].toString(), m_symbols);
// dynamic // dynamic
m_values["player/dalbum"] = buildString(m_values["player/dalbum"].toString(), m_values["player/dalbum"]
m_values["player/album"].toString(), m_symbols); = buildString(m_values["player/dalbum"].toString(), m_values["player/album"].toString(), m_symbols);
m_values["player/dartist"] = buildString(m_values["player/dartist"].toString(), m_values["player/dartist"]
m_values["player/artist"].toString(), m_symbols); = buildString(m_values["player/dartist"].toString(), m_values["player/artist"].toString(), m_symbols);
m_values["player/dtitle"] = buildString(m_values["player/dtitle"].toString(), m_values["player/dtitle"]
m_values["player/title"].toString(), m_symbols); = buildString(m_values["player/dtitle"].toString(), m_values["player/title"].toString(), m_symbols);
} }
@ -217,8 +216,7 @@ QStringList PlayerSource::sources() const
QString PlayerSource::buildString(const QString &_current, const QString &_value, const int _s) QString PlayerSource::buildString(const QString &_current, const QString &_value, const int _s)
{ {
qCDebug(LOG_ESS) << "Current value" << _current << "received" << _value qCDebug(LOG_ESS) << "Current value" << _current << "received" << _value << "will be stripped after" << _s;
<< "will be stripped after" << _s;
int index = _value.indexOf(_current); int index = _value.indexOf(_current);
if ((_current.isEmpty()) || ((index + _s + 1) > _value.count())) if ((_current.isEmpty()) || ((index + _s + 1) > _value.count()))
@ -245,8 +243,7 @@ bool PlayerSource::isMpdSocketConnected() const
void PlayerSource::mpdSocketConnected() void PlayerSource::mpdSocketConnected()
{ {
qCDebug(LOG_ESS) << "MPD socket connected to" << m_mpdSocket.peerName() << "with state" qCDebug(LOG_ESS) << "MPD socket connected to" << m_mpdSocket.peerName() << "with state" << m_mpdSocket.state();
<< m_mpdSocket.state();
} }
@ -329,8 +326,8 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris)
// /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get // /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get
// string:'org.mpris.MediaPlayer2.Player' string:'Metadata' // string:'org.mpris.MediaPlayer2.Player' string:'Metadata'
auto args = QVariantList({"org.mpris.MediaPlayer2.Player", "Metadata"}); auto args = QVariantList({"org.mpris.MediaPlayer2.Player", "Metadata"});
QDBusMessage request = QDBusMessage::createMethodCall( QDBusMessage request
QString("org.mpris.MediaPlayer2.%1").arg(_mpris), "/org/mpris/MediaPlayer2", = QDBusMessage::createMethodCall(QString("org.mpris.MediaPlayer2.%1").arg(_mpris), "/org/mpris/MediaPlayer2",
"org.freedesktop.DBus.Properties", "Get"); "org.freedesktop.DBus.Properties", "Get");
request.setArguments(args); request.setArguments(args);
auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT); auto response = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT);
@ -356,8 +353,7 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris)
} else { } else {
// this cast is simpler than the previous one ;) // this cast is simpler than the previous one ;)
info["player/progress"] info["player/progress"]
= response.arguments().first().value<QDBusVariant>().variant().toLongLong() = response.arguments().first().value<QDBusVariant>().variant().toLongLong() / (1000 * 1000);
/ (1000 * 1000);
} }
return info; return info;

View File

@ -79,8 +79,7 @@ QVariantMap ProcessesSource::initialData(const QString &_source) const
void ProcessesSource::run() void ProcessesSource::run()
{ {
QStringList allDirectories QStringList allDirectories = QDir("/proc").entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
= QDir("/proc").entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
QStringList directories = allDirectories.filter(QRegExp("(\\d+)")); QStringList directories = allDirectories.filter(QRegExp("(\\d+)"));
QStringList running; QStringList running;

View File

@ -66,8 +66,7 @@ QVariantMap QuotesSource::initialData(const QString &_source) const
if (_source.startsWith("quotes/pricechg")) { if (_source.startsWith("quotes/pricechg")) {
data["min"] = 0.0; data["min"] = 0.0;
data["max"] = 0.0; data["max"] = 0.0;
data["name"] = QString("Absolute prie changes for '%1'") data["name"] = QString("Absolute prie changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double"; data["type"] = "double";
data["units"] = ""; data["units"] = "";
} else if (_source.startsWith("quotes/price")) { } else if (_source.startsWith("quotes/price")) {
@ -79,15 +78,13 @@ QVariantMap QuotesSource::initialData(const QString &_source) const
} else if (_source.startsWith("quotes/percpricechg")) { } else if (_source.startsWith("quotes/percpricechg")) {
data["min"] = -100.0; data["min"] = -100.0;
data["max"] = 100.0; data["max"] = 100.0;
data["name"] data["name"] = QString("Price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
= QString("Price changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double"; data["type"] = "double";
data["units"] = ""; data["units"] = "";
} else if (_source.startsWith("quotes/volumechg")) { } else if (_source.startsWith("quotes/volumechg")) {
data["min"] = 0; data["min"] = 0;
data["max"] = 0; data["max"] = 0;
data["name"] = QString("Absolute volume changes for '%1'") data["name"] = QString("Absolute volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
.arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "int"; data["type"] = "int";
data["units"] = ""; data["units"] = "";
} else if (_source.startsWith("quotes/volume")) { } else if (_source.startsWith("quotes/volume")) {
@ -99,8 +96,7 @@ QVariantMap QuotesSource::initialData(const QString &_source) const
} else if (_source.startsWith("quotes/percvolumechg")) { } else if (_source.startsWith("quotes/percvolumechg")) {
data["min"] = -100.0; data["min"] = -100.0;
data["max"] = 100.0; data["max"] = 100.0;
data["name"] data["name"] = QString("Volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
= QString("Volume changes for '%1'").arg(m_extQuotes->itemByTagNumber(ind)->uniq());
data["type"] = "double"; data["type"] = "double";
data["units"] = ""; data["units"] = "";
} }

View File

@ -66,8 +66,7 @@ QVariantMap RequestSource::initialData(const QString &_source) const
if (_source.startsWith("network/response")) { if (_source.startsWith("network/response")) {
data["min"] = ""; data["min"] = "";
data["max"] = ""; data["max"] = "";
data["name"] data["name"] = QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq());
= QString("Network response for %1").arg(m_extNetRequest->itemByTagNumber(ind)->uniq());
data["type"] = "QString"; data["type"] = "QString";
data["units"] = ""; data["units"] = "";
} }

View File

@ -101,14 +101,12 @@ float SystemInfoSource::getCurrentBrightness()
{ {
qCDebug(LOG_ESS) << "Get current brightness"; qCDebug(LOG_ESS) << "Get current brightness";
auto maxBrightness = sendDBusRequest("org.kde.Solid.PowerManagement", auto maxBrightness
"/org/kde/Solid/PowerManagement/Actions/BrightnessControl", = sendDBusRequest("org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
"org.kde.Solid.PowerManagement.Actions.BrightnessControl", "org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightnessMax")
"brightnessMax")
.toFloat(); .toFloat();
auto brightness auto brightness
= sendDBusRequest("org.kde.Solid.PowerManagement", = sendDBusRequest("org.kde.Solid.PowerManagement", "/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
"/org/kde/Solid/PowerManagement/Actions/BrightnessControl",
"org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightness") "org.kde.Solid.PowerManagement.Actions.BrightnessControl", "brightness")
.toFloat(); .toFloat();
@ -122,8 +120,7 @@ float SystemInfoSource::getCurrentVolume()
// current device first // current device first
auto currentMixer auto currentMixer
= fromDBusVariant( = fromDBusVariant(sendDBusRequest("org.kde.kmix", "/Mixers", "org.freedesktop.DBus.Properties", "Get",
sendDBusRequest("org.kde.kmix", "/Mixers", "org.freedesktop.DBus.Properties", "Get",
QVariantList({"org.kde.KMix.MixSet", "currentMasterMixer"}))) QVariantList({"org.kde.KMix.MixSet", "currentMasterMixer"})))
.toString(); .toString();
@ -135,8 +132,7 @@ float SystemInfoSource::getCurrentVolume()
// get capture device // get capture device
auto currentControl auto currentControl
= fromDBusVariant( = fromDBusVariant(sendDBusRequest("org.kde.kmix", "/Mixers", "org.freedesktop.DBus.Properties", "Get",
sendDBusRequest("org.kde.kmix", "/Mixers", "org.freedesktop.DBus.Properties", "Get",
QVariantList({"org.kde.KMix.MixSet", "currentMasterControl"}))) QVariantList({"org.kde.KMix.MixSet", "currentMasterControl"})))
.toString(); .toString();
if (currentControl.isEmpty()) { if (currentControl.isEmpty()) {
@ -146,15 +142,14 @@ float SystemInfoSource::getCurrentVolume()
currentControl.replace(":", "_").replace(".", "_").replace("-", "_"); currentControl.replace(":", "_").replace(".", "_").replace("-", "_");
auto path = QString("/Mixers/%1/%2").arg(currentMixer).arg(currentControl); auto path = QString("/Mixers/%1/%2").arg(currentMixer).arg(currentControl);
return fromDBusVariant(sendDBusRequest("org.kde.kmix", path, "org.freedesktop.DBus.Properties", return fromDBusVariant(sendDBusRequest("org.kde.kmix", path, "org.freedesktop.DBus.Properties", "Get",
"Get", QVariantList({"org.kde.KMix.Control", "volume"}))) QVariantList({"org.kde.KMix.Control", "volume"})))
.toFloat(); .toFloat();
} }
QVariant SystemInfoSource::sendDBusRequest(const QString &destination, const QString &path, QVariant SystemInfoSource::sendDBusRequest(const QString &destination, const QString &path, const QString &interface,
const QString &interface, const QString &method, const QString &method, const QVariantList &args)
const QVariantList &args)
{ {
qCDebug(LOG_ESS) << "Send dbus request" << destination << path << interface << method << args; qCDebug(LOG_ESS) << "Send dbus request" << destination << path << interface << method << args;

View File

@ -41,9 +41,8 @@ private:
static QVariant fromDBusVariant(const QVariant &value); static QVariant fromDBusVariant(const QVariant &value);
static float getCurrentBrightness(); static float getCurrentBrightness();
static float getCurrentVolume(); static float getCurrentVolume();
static QVariant sendDBusRequest(const QString &destination, const QString &path, static QVariant sendDBusRequest(const QString &destination, const QString &path, const QString &interface,
const QString &interface, const QString &method, const QString &method, const QVariantList &args = QVariantList());
const QVariantList &args = QVariantList());
}; };

View File

@ -56,8 +56,7 @@ QVariantMap UpgradeSource::initialData(const QString &_source) const
QVariantMap data; QVariantMap data;
data["min"] = ""; data["min"] = "";
data["max"] = ""; data["max"] = "";
data["name"] = QString("Package manager '%1' metadata") data["name"] = QString("Package manager '%1' metadata").arg(m_extUpgrade->itemByTagNumber(index(_source))->uniq());
.arg(m_extUpgrade->itemByTagNumber(index(_source))->uniq());
data["type"] = "QString"; data["type"] = "QString";
data["units"] = ""; data["units"] = "";

View File

@ -66,15 +66,13 @@ QVariantMap WeatherSource::initialData(const QString &_source) const
if (_source.startsWith("weather/weatherId")) { if (_source.startsWith("weather/weatherId")) {
data["min"] = 0; data["min"] = 0;
data["max"] = 1000; data["max"] = 1000;
data["name"] = QString("Numeric weather ID for '%1'") data["name"] = QString("Numeric weather ID for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "integer"; data["type"] = "integer";
data["units"] = ""; data["units"] = "";
} else if (_source.startsWith("weather/weather")) { } else if (_source.startsWith("weather/weather")) {
data["min"] = ""; data["min"] = "";
data["max"] = ""; data["max"] = "";
data["name"] data["name"] = QString("ID string map for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
= QString("ID string map for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "QString"; data["type"] = "QString";
data["units"] = ""; data["units"] = "";
} else if (_source.startsWith("weather/humidity")) { } else if (_source.startsWith("weather/humidity")) {
@ -86,22 +84,19 @@ QVariantMap WeatherSource::initialData(const QString &_source) const
} else if (_source.startsWith("weather/pressure")) { } else if (_source.startsWith("weather/pressure")) {
data["min"] = 0; data["min"] = 0;
data["max"] = 0; data["max"] = 0;
data["name"] = QString("Atmospheric pressure for '%1'") data["name"] = QString("Atmospheric pressure for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
.arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "integer"; data["type"] = "integer";
data["units"] = "mb"; data["units"] = "mb";
} else if (_source.startsWith("weather/temperature")) { } else if (_source.startsWith("weather/temperature")) {
data["min"] = 0.0; data["min"] = 0.0;
data["max"] = 0.0; data["max"] = 0.0;
data["name"] data["name"] = QString("Temperature for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
= QString("Temperature for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "float"; data["type"] = "float";
data["units"] = "°C"; data["units"] = "°C";
} else if (_source.startsWith("weather/timestamp")) { } else if (_source.startsWith("weather/timestamp")) {
data["min"] = ""; data["min"] = "";
data["max"] = ""; data["max"] = "";
data["name"] data["name"] = QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
= QString("Timestamp for '%1'").arg(m_extWeather->itemByTagNumber(ind)->uniq());
data["type"] = "QString"; data["type"] = "QString";
data["units"] = ""; data["units"] = "";
} }

View File

@ -20,9 +20,10 @@ set(Qt_LIBRARIES
find_package(ECM 0.0.11 REQUIRED NO_MODULE) find_package(ECM 0.0.11 REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
find_package(KF5 REQUIRED COMPONENTS I18n Notifications Plasma Service WindowSystem) find_package(KF5 REQUIRED COMPONENTS I18n Notifications Plasma Service WindowSystem)
find_package(LibTaskManager REQUIRED)
include(KDEInstallDirs) include(KDEInstallDirs)
include(KDECMakeSettings) include(KDECMakeSettings)
include(KDECompilerSettings) include(KDECompilerSettings)
set(Kf5_INCLUDE ${I18n_INCLUDE_DIR} ${Notifications_INCLUDE_DIR} ${Plasma_INCLUDE_DIR}) set(Kf5_INCLUDE ${I18n_INCLUDE_DIR} ${Notifications_INCLUDE_DIR} ${Plasma_INCLUDE_DIR})
set(Kf5_LIBRARIES KF5::I18n KF5::Notifications KF5::Plasma KF5::WindowSystem) set(Kf5_LIBRARIES KF5::I18n KF5::Notifications KF5::Plasma KF5::WindowSystem PW::LibTaskManager)

View File

@ -50,11 +50,9 @@ char AWTestLibrary::randomChar()
QPair<QString, QString> AWTestLibrary::randomFilenames() QPair<QString, QString> AWTestLibrary::randomFilenames()
{ {
QString fileName QString fileName = QString("%1/").arg(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
= QString("%1/").arg(QStandardPaths::writableLocation(QStandardPaths::TempLocation));
QString writeFileName QString writeFileName
= QString("%1/awesomewidgets/tmp/") = QString("%1/awesomewidgets/tmp/").arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation));
QString name = randomString(1, 20); QString name = randomString(1, 20);
fileName += name; fileName += name;

View File

@ -175,15 +175,15 @@ void TestAWKeys::test_dbus()
QDBusConnection bus = QDBusConnection::sessionBus(); QDBusConnection bus = QDBusConnection::sessionBus();
// check if there is active sessions first // check if there is active sessions first
QDBusMessage sessions = QDBusMessage::createMethodCall(AWDBUS_SERVICE, AWDBUS_PATH, QDBusMessage sessions
AWDBUS_SERVICE, "ActiveServices"); = QDBusMessage::createMethodCall(AWDBUS_SERVICE, AWDBUS_PATH, AWDBUS_SERVICE, "ActiveServices");
QDBusMessage sessionsResponse = bus.call(sessions, QDBus::BlockWithGui); QDBusMessage sessionsResponse = bus.call(sessions, QDBus::BlockWithGui);
if (sessionsResponse.arguments().isEmpty()) if (sessionsResponse.arguments().isEmpty())
QSKIP("No active sessions found, skip DBus tests"); QSKIP("No active sessions found, skip DBus tests");
// dbus checks // dbus checks
QDBusMessage request = QDBusMessage::createMethodCall( QDBusMessage request = QDBusMessage::createMethodCall(QString("%1.i%2").arg(AWDBUS_SERVICE).arg(id), AWDBUS_PATH,
QString("%1.i%2").arg(AWDBUS_SERVICE).arg(id), AWDBUS_PATH, AWDBUS_SERVICE, "WhoAmI"); AWDBUS_SERVICE, "WhoAmI");
// send message to dbus // send message to dbus
QDBusMessage response = bus.call(request, QDBus::BlockWithGui); QDBusMessage response = bus.call(request, QDBus::BlockWithGui);

View File

@ -42,8 +42,7 @@ void TestAWPatternFunctions::test_findFunctionCalls()
QString pattern = AWTestLibrary::randomString() + function + AWTestLibrary::randomString(); QString pattern = AWTestLibrary::randomString() + function + AWTestLibrary::randomString();
QList<AWPatternFunctions::AWFunction> found QList<AWPatternFunctions::AWFunction> found = AWPatternFunctions::findFunctionCalls(name, pattern);
= AWPatternFunctions::findFunctionCalls(name, pattern);
QCOMPARE(found.count(), 1); QCOMPARE(found.count(), 1);
QCOMPARE(found.at(0).args, args); QCOMPARE(found.at(0).args, args);
@ -87,8 +86,8 @@ void TestAWPatternFunctions::test_findKeys()
void TestAWPatternFunctions::test_findLambdas() void TestAWPatternFunctions::test_findLambdas()
{ {
QStringList lambdas = AWTestLibrary::randomStringList(20); QStringList lambdas = AWTestLibrary::randomStringList(20);
QString pattern = AWTestLibrary::randomString() + QString("${{%1}}").arg(lambdas.join("}}${{")) QString pattern
+ AWTestLibrary::randomString(); = AWTestLibrary::randomString() + QString("${{%1}}").arg(lambdas.join("}}${{")) + AWTestLibrary::randomString();
QCOMPARE(AWPatternFunctions::findLambdas(pattern), lambdas); QCOMPARE(AWPatternFunctions::findLambdas(pattern), lambdas);
} }

View File

@ -64,8 +64,7 @@ void TestExtQuotes::test_run()
for (auto &type : types) { for (auto &type : types) {
QCOMPARE(firstValue[extQuotes->tag(type)].toDouble(), 0.0); QCOMPARE(firstValue[extQuotes->tag(type)].toDouble(), 0.0);
QVERIFY((cache[type].toDouble() >= price.first) QVERIFY((cache[type].toDouble() >= price.first) && (cache[type].toDouble() <= price.second));
&& (cache[type].toDouble() <= price.second));
} }
} }

View File

@ -65,8 +65,7 @@ void TestExtScript::test_run()
QList<QVariant> arguments = spy.takeFirst(); QList<QVariant> arguments = spy.takeFirst();
QCOMPARE(firstValue[extScript->tag("custom")].toString(), QString()); QCOMPARE(firstValue[extScript->tag("custom")].toString(), QString());
QCOMPARE(arguments.at(0).toHash()[extScript->tag("custom")].toString(), QCOMPARE(arguments.at(0).toHash()[extScript->tag("custom")].toString(), QString("\n%1").arg(randomString));
QString("\n%1").arg(randomString));
} }
@ -83,8 +82,7 @@ void TestExtScript::test_filters()
// check values // check values
QVERIFY(spy.wait(5000)); QVERIFY(spy.wait(5000));
QList<QVariant> arguments = spy.takeFirst(); QList<QVariant> arguments = spy.takeFirst();
QCOMPARE(arguments.at(0).toHash()[extScript->tag("custom")].toString(), QCOMPARE(arguments.at(0).toHash()[extScript->tag("custom")].toString(), QString("<br>%1").arg(randomString));
QString("<br>%1").arg(randomString));
} }

View File

@ -78,8 +78,7 @@ void TestExtUpgrade::test_null()
// check values // check values
QVERIFY(spy.wait(5000)); QVERIFY(spy.wait(5000));
QList<QVariant> arguments = spy.takeFirst(); QList<QVariant> arguments = spy.takeFirst();
QCOMPARE(arguments.at(0).toHash()[extUpgrade->tag("pkgcount")].toInt(), QCOMPARE(arguments.at(0).toHash()[extUpgrade->tag("pkgcount")].toInt(), randomStrings.count() - null);
randomStrings.count() - null);
} }

View File

@ -29,10 +29,8 @@ void TestHDDTemperatureSource::initTestCase()
AWTestLibrary::init(); AWTestLibrary::init();
devices = HDDTemperatureSource::allHdd(); devices = HDDTemperatureSource::allHdd();
hddtempSource hddtempSource = new HDDTemperatureSource(this, QStringList() << devices.join(',') << hddtempCmd);
= new HDDTemperatureSource(this, QStringList() << devices.join(',') << hddtempCmd); smartctlSource = new HDDTemperatureSource(this, QStringList() << devices.join(',') << smartctlCmd);
smartctlSource
= new HDDTemperatureSource(this, QStringList() << devices.join(',') << smartctlCmd);
} }
@ -48,8 +46,7 @@ void TestHDDTemperatureSource::test_sources()
if (devices.isEmpty()) if (devices.isEmpty())
QSKIP("No hdd devices found, test will be skipped"); QSKIP("No hdd devices found, test will be skipped");
std::for_each(devices.begin(), devices.end(), std::for_each(devices.begin(), devices.end(), [](QString &device) { device.prepend("hdd/temperature"); });
[](QString &device) { device.prepend("hdd/temperature"); });
QCOMPARE(hddtempSource->sources(), devices); QCOMPARE(hddtempSource->sources(), devices);
QCOMPARE(smartctlSource->sources(), devices); QCOMPARE(smartctlSource->sources(), devices);

View File

@ -79,8 +79,7 @@ void TestPlayerSource::test_autoMpris()
void TestPlayerSource::test_mpd() void TestPlayerSource::test_mpd()
{ {
QStringList args(QStringList() << "mpd" << mpdAddress << QString::number(mpdPort) << "auto" QStringList args(QStringList() << "mpd" << mpdAddress << QString::number(mpdPort) << "auto" << QString::number(10));
<< QString::number(10));
PlayerSource *source = new PlayerSource(this, args); PlayerSource *source = new PlayerSource(this, args);
_test_sources(source); _test_sources(source);

View File

@ -7,8 +7,7 @@ const char NAME[] = "Awesome Widgets";
const char VERSION[] = "@PROJECT_VERSION@"; const char VERSION[] = "@PROJECT_VERSION@";
const char COMMIT_SHA[] = "@PROJECT_COMMIT_SHA@"; const char COMMIT_SHA[] = "@PROJECT_COMMIT_SHA@";
const char AUTHOR[] = "@PROJECT_AUTHOR@"; const char AUTHOR[] = "@PROJECT_AUTHOR@";
const char TRANSLATORS[] const char TRANSLATORS[] = "Ernesto Aviles Vzqz (Spanish),Mermouy "
= "Ernesto Aviles Vzqz (Spanish),Mermouy "
"(French),underr (Brazillian Portuguese),Viktor " "(French),underr (Brazillian Portuguese),Viktor "
"Slobodyan (Ukrainian),Lemueler (Chinese),Heimen " "Slobodyan (Ukrainian),Lemueler (Chinese),Heimen "
"Stoffels (Dutch),Mariusz Kocoń (Polish),Ibnu " "Stoffels (Dutch),Mariusz Kocoń (Polish),Ibnu "
@ -54,8 +53,7 @@ const char TIME_KEYS[] = "d,dd,ddd,dddd,M,MM,MMM,MMMM,yy,yyyy,h,hh,H,HH,m,mm,s,s
const char STATIC_FUNCTIONS[] = "{{\n\n}},template{{\n\n}},aw_all<>{{}},aw_" const char STATIC_FUNCTIONS[] = "{{\n\n}},template{{\n\n}},aw_all<>{{}},aw_"
"count<>{{}},aw_keys<>{{}},aw_macro<>{{}},aw_" "count<>{{}},aw_keys<>{{}},aw_macro<>{{}},aw_"
"names<>{{}}"; "names<>{{}}";
const char STATIC_KEYS[] const char STATIC_KEYS[] = "time,isotime,shorttime,longtime,tstime,ctime,uptime,cuptime,cpucl,cpu,"
= "time,isotime,shorttime,longtime,tstime,ctime,uptime,cuptime,cpucl,cpu,"
"gputemp,gpu,memmb,memgb,memfreemb,memfreegb,memtotmb,memtotgb,memusedmb," "gputemp,gpu,memmb,memgb,memfreemb,memfreegb,memtotmb,memtotgb,memusedmb,"
"memusedgb,mem,swapmb,swapgb,swapfreemb,swapfreegb,swaptotmb,swaptotgb," "memusedgb,mem,swapmb,swapgb,swapfreemb,swapfreegb,swaptotmb,swaptotgb,"
"swap,downunits,upunits,downkb,downtotkb,downtot,down,uptotkb,uptot,upkb," "swap,downunits,upunits,downkb,downtotkb,downtot,down,uptotkb,uptot,upkb,"