refactor: refresh shared library

This commit is contained in:
Evgenii Alekseev 2024-04-12 18:27:47 +03:00
parent 332d78eb25
commit 54acc5f780
48 changed files with 288 additions and 317 deletions

View File

@ -41,18 +41,17 @@ QString AWDebug::getAboutText(const QString &_type)
} else if (_type == "description") {
text = i18n("A set of minimalistic plasmoid widgets");
} else if (_type == "links") {
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(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(TRANSLATION).arg(i18n("Translation issue"))
+ 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>";
text = i18n("Links:") + "<ul>" + QString("<li><a href=\"%1\">%2</a></li>").arg(HOMEPAGE, i18n("Homepage"))
+ QString("<li><a href=\"%1\">%2</a></li>").arg(REPOSITORY, i18n("Repository"))
+ QString("<li><a href=\"%1\">%2</a></li>").arg(BUGTRACKER, i18n("Bugtracker"))
+ QString("<li><a href=\"%1\">%2</a></li>").arg(TRANSLATION, i18n("Translation issue"))
+ QString("<li><a href=\"%1\">%2</a></li>").arg(AUR_PACKAGES, i18n("AUR packages"))
+ QString("<li><a href=\"%1\">%2</a></li>").arg(OPENSUSE_PACKAGES, i18n("openSUSE packages")) + "</ul>";
} else if (_type == "copy") {
text = QString("<small>&copy; %1 <a href=\"mailto:%2\">%3</a><br>").arg(DATE).arg(EMAIL).arg(AUTHOR)
+ i18nc("This software is licensed under %1", LICENSE) + "</small>";
text = QString("<small>&copy; %1 <a href=\"mailto:%2\">%3</a><br>").arg(DATE, EMAIL, AUTHOR)
+ i18n("This software is licensed under %1", LICENSE) + "</small>";
} else if (_type == "translators") {
QStringList translatorList = QString(TRANSLATORS).split(',');
auto translatorList = QString(TRANSLATORS).split(',');
for (auto &translator : translatorList)
translator = QString("<li>%1</li>").arg(translator);
text = i18n("Translators:") + "<ul>" + translatorList.join("") + "</ul>";
@ -60,16 +59,14 @@ QString AWDebug::getAboutText(const QString &_type)
QStringList trdPartyList = QString(TRDPARTY_LICENSE).split(';', Qt::SkipEmptyParts);
for (int i = 0; i < trdPartyList.count(); i++)
trdPartyList[i] = QString("<li><a href=\"%3\">%1</a> (%2 license)</li>")
.arg(trdPartyList.at(i).split(',')[0])
.arg(trdPartyList.at(i).split(',')[1])
.arg(trdPartyList.at(i).split(',')[2]);
.arg(trdPartyList.at(i).split(',')[0], trdPartyList.at(i).split(',')[1],
trdPartyList.at(i).split(',')[2]);
text = i18n("This software uses:") + "<ul>" + trdPartyList.join("") + "</ul>";
} else if (_type == "thanks") {
QStringList thanks = QString(SPECIAL_THANKS).split(';', Qt::SkipEmptyParts);
for (int i = 0; i < thanks.count(); i++)
thanks[i] = QString("<li><a href=\"%2\">%1</a></li>")
.arg(thanks.at(i).split(',')[0])
.arg(thanks.at(i).split(',')[1]);
thanks[i]
= QString("<li><a href=\"%2\">%1</a></li>").arg(thanks.at(i).split(',')[0], thanks.at(i).split(',')[1]);
text = i18n("Special thanks to:") + "<ul>" + thanks.join("") + "</ul>";
}

View File

@ -121,6 +121,6 @@ void AWActions::sendNotification(const QString &_eventId, const QString &_messag
{
qCDebug(LOG_AW) << "Event" << _eventId << "with message" << _message;
auto *event = KNotification::event(_eventId, QString("Awesome Widget ::: %1").arg(_eventId), _message);
auto event = KNotification::event(_eventId, QString("Awesome Widget ::: %1").arg(_eventId), _message);
event->setComponentName("plasma-applet-org.kde.plasma.awesome-widget");
}

View File

@ -84,8 +84,7 @@ bool AWConfigHelper::exportConfiguration(QObject *_nativeConfig, const QString &
// extensions
for (auto &item : m_dirs) {
QStringList items
= QDir(QString("%1/%2").arg(m_baseDir, item)).entryList({"*.desktop"}, QDir::Files);
QStringList items = QDir(QString("%1/%2").arg(m_baseDir, item)).entryList({"*.desktop"}, QDir::Files);
settings.beginGroup(item);
for (auto &it : items)
copyExtensions(it, item, settings, false);

View File

@ -161,7 +161,7 @@ void AWFormatterHelper::initFormatters()
// check if already exists
auto values = m_formattersClasses.values();
if (std::any_of(values.cbegin(), values.cend(),
[&filePath](const AWAbstractFormatter *item) { return (item->fileName() == filePath); }))
[&filePath](const AWAbstractFormatter *item) { return (item->filePath() == filePath); }))
continue;
auto metadata = readMetadata(filePath);

View File

@ -80,7 +80,7 @@ QStringList AWKeyOperations::dictKeys() const
{
QStringList allKeys;
// weather
for (auto &item : m_extWeather->activeItems()) {
for (auto item : m_extWeather->activeItems()) {
allKeys.append(item->tag("weatherId"));
allKeys.append(item->tag("weather"));
allKeys.append(item->tag("humidity"));
@ -140,10 +140,10 @@ QStringList AWKeyOperations::dictKeys() const
allKeys.append(QString("battotal%1").arg(i));
}
// package manager
for (auto &item : m_extUpgrade->activeItems())
for (auto item : m_extUpgrade->activeItems())
allKeys.append(item->tag("pkgcount"));
// quotes
for (auto &item : m_extQuotes->activeItems()) {
for (auto item : m_extQuotes->activeItems()) {
allKeys.append(item->tag("price"));
allKeys.append(item->tag("pricechg"));
allKeys.append(item->tag("percpricechg"));
@ -152,13 +152,13 @@ QStringList AWKeyOperations::dictKeys() const
allKeys.append(item->tag("percvolumechg"));
}
// custom
for (auto &item : m_extScripts->activeItems())
for (auto item : m_extScripts->activeItems())
allKeys.append(item->tag("custom"));
// network requests
for (auto &item : m_extNetRequest->activeItems())
for (auto item : m_extNetRequest->activeItems())
allKeys.append(item->tag("response"));
// bars
for (auto &item : m_graphicalItems->activeItems())
for (auto item : m_graphicalItems->activeItems())
allKeys.append(item->tag("bar"));
// user defined keys
allKeys.append(m_customKeys->keys());

View File

@ -71,7 +71,7 @@ bool AWUpdateHelper::checkVersion()
qCInfo(LOG_AW) << "Found version" << version << "actual one is" << m_foundVersion;
if ((version != m_foundVersion) && (!QString(CHANGELOG).isEmpty())) {
sendNotification(i18nc("Changelog of %1", VERSION), QString(CHANGELOG).replace('@', '\n'));
sendNotification(i18n("Changelog of %1", VERSION), QString(CHANGELOG).replace('@', '\n'));
return true;
} else if (version != m_foundVersion) {
qCWarning(LOG_AW) << "No changelog information provided";
@ -106,7 +106,7 @@ void AWUpdateHelper::showUpdates(const QVersionNumber &_version)
qCDebug(LOG_AW) << "Version" << _version;
QString text;
text += i18nc("Current version : %1", VERSION);
text += i18n("Current version : %1", VERSION);
text += QString(COMMIT_SHA).isEmpty() ? "\n" : QString(" (%1)\n").arg(QString(COMMIT_SHA));
text += i18n("New version : %1", _version.toString()) + "\n\n";
text += i18n("Click \"Ok\" to download");

View File

@ -29,13 +29,13 @@
AbstractExtItem::AbstractExtItem(QObject *_parent, const QString &_filePath)
: QObject(_parent)
, m_fileName(_filePath)
, m_filePath(_filePath)
{
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
qCDebug(LOG_LIB) << "Desktop name" << _filePath;
m_name = m_fileName;
m_name = m_filePath;
}
@ -95,10 +95,11 @@ void AbstractExtItem::startTimer()
}
QString AbstractExtItem::writtableConfig() const
QString AbstractExtItem::writableConfig() const
{
auto path = m_fileName;
auto name = QFileInfo(path).fileName();
auto path = m_filePath;
auto name = fileName();
// extract subdirectory
path.remove(path.length() - name.length() - 1, name.length() + 1);
auto dir = QFileInfo(path).fileName();
@ -127,7 +128,13 @@ QString AbstractExtItem::cron() const
QString AbstractExtItem::fileName() const
{
return m_fileName;
return QFileInfo(filePath()).fileName();
}
QString AbstractExtItem::filePath() const
{
return m_filePath;
}
@ -267,7 +274,7 @@ void AbstractExtItem::deinitSocket()
m_socket->close();
QLocalServer::removeServer(socket());
disconnect(m_socket, &QLocalServer::newConnection, this, &AbstractExtItem::newConnectionReceived);
disconnect(m_socket, &QLocalServer::newConnection, this, &AbstractExtItem::requestDataUpdate);
delete m_socket;
}
@ -280,13 +287,13 @@ void AbstractExtItem::initSocket()
m_socket = new QLocalServer(this);
auto listening = m_socket->listen(socket());
qCInfo(LOG_LIB) << "Server listening on" << socket() << listening;
connect(m_socket, &QLocalServer::newConnection, this, &AbstractExtItem::newConnectionReceived);
connect(m_socket, &QLocalServer::newConnection, this, &AbstractExtItem::requestDataUpdate);
}
void AbstractExtItem::readConfiguration()
{
QSettings settings(m_fileName, QSettings::IniFormat);
QSettings settings(m_filePath, QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setName(settings.value("Name", name()).toString());
@ -303,8 +310,8 @@ void AbstractExtItem::readConfiguration()
bool AbstractExtItem::tryDelete() const
{
auto status = QFile::remove(m_fileName);
qCInfo(LOG_LIB) << "Remove file" << m_fileName << status;
auto status = QFile::remove(m_filePath);
qCInfo(LOG_LIB) << "Remove file" << m_filePath << status;
return status;
}
@ -312,7 +319,7 @@ bool AbstractExtItem::tryDelete() const
void AbstractExtItem::writeConfiguration() const
{
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");
@ -329,9 +336,3 @@ void AbstractExtItem::writeConfiguration() const
settings.sync();
}
void AbstractExtItem::newConnectionReceived()
{
emit(requestDataUpdate());
}

View File

@ -32,6 +32,7 @@ class AbstractExtItem : public QObject
Q_PROPERTY(QString comment READ comment WRITE setComment)
Q_PROPERTY(QString cron READ cron WRITE setCron)
Q_PROPERTY(QString fileName READ fileName)
Q_PROPERTY(QString filePath READ filePath)
Q_PROPERTY(int interval READ interval WRITE setInterval)
Q_PROPERTY(QString name READ name WRITE setName)
Q_PROPERTY(int number READ number WRITE setNumber)
@ -45,12 +46,13 @@ public:
virtual AbstractExtItem *copy(const QString &_fileName, int _number) = 0;
virtual void copyDefaults(AbstractExtItem *_other) const;
virtual void startTimer();
[[nodiscard]] QString writtableConfig() const;
[[nodiscard]] QString writableConfig() const;
// get methods
[[nodiscard]] int apiVersion() const;
[[nodiscard]] QString comment() const;
[[nodiscard]] QString cron() const;
[[nodiscard]] QString fileName() const;
[[nodiscard]] QString filePath() const;
[[nodiscard]] int interval() const;
[[nodiscard]] bool isActive() const;
[[nodiscard]] QString name() const;
@ -81,12 +83,9 @@ public slots:
[[nodiscard]] virtual bool tryDelete() const;
virtual void writeConfiguration() const;
private slots:
void newConnectionReceived();
private:
QCronScheduler *m_scheduler = nullptr;
QString m_fileName = "/dev/null";
QString m_filePath = "";
int m_times = 0;
// FIXME find a better way to do it
virtual void translate(void *_ui) = 0;

View File

@ -35,8 +35,7 @@ AbstractExtItemAggregator::AbstractExtItemAggregator(QObject *_parent, QString _
// create directory at $HOME
auto localDir = QString("%1/awesomewidgets/%2")
.arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), type());
QDir localDirectory;
if (localDirectory.mkpath(localDir))
if (QDir().mkpath(localDir))
qCInfo(LOG_LIB) << "Created directory" << localDir;
}
@ -102,18 +101,13 @@ int AbstractExtItemAggregator::exec()
auto createButton = ui->buttonBox->addButton(i18n("Create"), QDialogButtonBox::ActionRole);
auto deleteButton = ui->buttonBox->addButton(i18n("Remove"), QDialogButtonBox::ActionRole);
connect(ui->buttonBox, &QDialogButtonBox::clicked, [&](QAbstractButton *_button) {
if (dynamic_cast<QPushButton *>(_button) == copyButton)
copyItem(ui->listWidget);
else if (dynamic_cast<QPushButton *>(_button) == createButton)
doCreateItem(ui->listWidget);
else if (dynamic_cast<QPushButton *>(_button) == deleteButton)
deleteItem(ui->listWidget);
else if (ui->buttonBox->buttonRole(_button) == QDialogButtonBox::AcceptRole)
editItem(ui->listWidget);
});
connect(copyButton, &QPushButton::clicked, [this, ui]() { copyItem(ui->listWidget); });
connect(createButton, &QPushButton::clicked, [this, ui]() { doCreateItem(ui->listWidget); });
connect(deleteButton, &QPushButton::clicked, [this, ui]() { deleteItem(ui->listWidget); });
connect(ui->buttonBox, &QDialogButtonBox::accepted, [this, ui]() { editItem(ui->listWidget); });
connect(ui->buttonBox, &QDialogButtonBox::rejected, [dialog]() { dialog->reject(); });
connect(ui->listWidget, &QListWidget::itemActivated, [&](QListWidgetItem *) { editItem(ui->listWidget); });
connect(ui->listWidget, &QListWidget::itemActivated, [this, ui](QListWidgetItem *) { editItem(ui->listWidget); });
repaintList(ui->listWidget);
auto ret = dialog->exec();
@ -145,8 +139,8 @@ AbstractExtItem *AbstractExtItemAggregator::itemFromWidget(QListWidget *_widget)
return nullptr;
AbstractExtItem *found = nullptr;
for (auto &item : items()) {
auto fileName = QFileInfo(item->fileName()).fileName();
for (auto item : items()) {
auto fileName = item->fileName();
if (fileName != widgetItem->text())
continue;
found = item;
@ -162,8 +156,8 @@ AbstractExtItem *AbstractExtItemAggregator::itemFromWidget(QListWidget *_widget)
void AbstractExtItemAggregator::repaintList(QListWidget *_widget) const
{
_widget->clear();
for (auto &_item : items()) {
QString fileName = QFileInfo(_item->fileName()).fileName();
for (auto _item : items()) {
QString fileName = _item->fileName();
auto item = new QListWidgetItem(fileName, _widget);
QStringList tooltip;
tooltip.append(i18n("Name: %1", _item->name()));
@ -178,9 +172,10 @@ void AbstractExtItemAggregator::repaintList(QListWidget *_widget) const
int AbstractExtItemAggregator::uniqNumber() const
{
QList<int> tagList;
for (auto &item : items())
for (auto item : items())
tagList.append(item->number());
int number = 0;
auto number = 0;
while (tagList.contains(number))
number++;
@ -196,10 +191,8 @@ QVariant AbstractExtItemAggregator::configArgs() const
QStringList AbstractExtItemAggregator::directories() const
{
auto dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString("awesomewidgets/%1").arg(type()),
QStandardPaths::LocateDirectory);
return dirs;
return QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QString("awesomewidgets/%1").arg(type()),
QStandardPaths::LocateDirectory);
}

View File

@ -23,7 +23,6 @@
#include "awdebug.h"
class QAbstractButton;
class QListWidget;
class QListWidgetItem;
@ -59,7 +58,7 @@ public:
void deleteItem(QListWidget *_widget);
void editItem(QListWidget *_widget);
[[nodiscard]] int exec();
QString getName();
[[nodiscard]] static QString getName();
virtual void initItems() = 0;
[[nodiscard]] AbstractExtItem *itemFromWidget(QListWidget *_widget) const;
void repaintList(QListWidget *_widget) const;

View File

@ -113,7 +113,7 @@ void AWAbstractFormatter::readConfiguration()
{
AbstractExtItem::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setStrType(settings.value("X-AW-Type", strType()).toString());
@ -125,7 +125,7 @@ void AWAbstractFormatter::writeConfiguration() const
{
AbstractExtItem::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -50,6 +50,7 @@ AWDateTimeFormatter *AWDateTimeFormatter::copy(const QString &_fileName, const i
auto item = new AWDateTimeFormatter(parent(), _fileName);
AWAbstractFormatter::copyDefaults(item);
item->setFormat(format());
item->setTranslateString(translateString());
item->setNumber(_number);
@ -91,7 +92,7 @@ void AWDateTimeFormatter::readConfiguration()
{
AWAbstractFormatter::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setFormat(settings.value("X-AW-Format", format()).toString());
@ -140,7 +141,7 @@ void AWDateTimeFormatter::writeConfiguration() const
{
AWAbstractFormatter::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -54,6 +54,7 @@ AWFloatFormatter *AWFloatFormatter::copy(const QString &_fileName, const int _nu
auto item = new AWFloatFormatter(parent(), _fileName);
AWAbstractFormatter::copyDefaults(item);
item->setCount(count());
item->setFormat(format());
item->setFillChar(fillChar());
@ -174,7 +175,7 @@ void AWFloatFormatter::readConfiguration()
{
AWAbstractFormatter::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setCount(settings.value("X-AW-Width", count()).toInt());
@ -238,7 +239,7 @@ void AWFloatFormatter::writeConfiguration() const
{
AWAbstractFormatter::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -41,10 +41,10 @@ QString AWJsonFormatter::convert(const QVariant &_value) const
qCDebug(LOG_LIB) << "Convert value" << _value;
// check if _value is string and parse first if required
QJsonDocument json = _value.userType() == QMetaType::QString ? QJsonDocument::fromJson(_value.toString().toUtf8())
: QJsonDocument::fromVariant(_value);
QVariant converted = json.toVariant();
for (auto &element : m_splittedPath)
auto json = _value.userType() == QMetaType::QString ? QJsonDocument::fromJson(_value.toString().toUtf8())
: QJsonDocument::fromVariant(_value);
auto converted = json.toVariant();
for (auto &element : m_path)
converted = getFromJson(converted, element);
return converted.toString();
@ -57,6 +57,7 @@ AWJsonFormatter *AWJsonFormatter::copy(const QString &_fileName, const int _numb
auto item = new AWJsonFormatter(parent(), _fileName);
AWAbstractFormatter::copyDefaults(item);
item->setNumber(_number);
item->setPath(path());
@ -66,7 +67,8 @@ AWJsonFormatter *AWJsonFormatter::copy(const QString &_fileName, const int _numb
QString AWJsonFormatter::path() const
{
return m_path;
return std::accumulate(m_path.cbegin(), m_path.cend(), QString(""),
[](auto acc, auto &value) { return QString("%1.%2").arg(acc, value.toString()); });
}
@ -74,8 +76,14 @@ void AWJsonFormatter::setPath(const QString &_path)
{
qCDebug(LOG_LIB) << "Path" << _path;
m_path = _path;
initPath();
m_path.clear();
auto elements = _path.split('.', Qt::SkipEmptyParts);
for (auto &element : elements) {
bool ok;
auto number = element.toInt(&ok);
m_path.append(ok ? QVariant(number) : QVariant(element));
}
}
@ -83,7 +91,7 @@ void AWJsonFormatter::readConfiguration()
{
AWAbstractFormatter::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setPath(settings.value("X-AW-Path", path()).toString());
@ -129,7 +137,7 @@ void AWJsonFormatter::writeConfiguration() const
{
AWAbstractFormatter::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");
@ -171,19 +179,6 @@ QVariant AWJsonFormatter::getFromMap(const QVariant &_value, const QString &_key
}
void AWJsonFormatter::initPath()
{
m_splittedPath.clear();
QStringList splittedByDot = m_path.split('.', Qt::SkipEmptyParts);
for (auto &element : splittedByDot) {
bool ok;
int number = element.toInt(&ok);
m_splittedPath.append(ok ? QVariant(number) : QVariant(element));
}
}
void AWJsonFormatter::translate(void *_ui)
{
auto ui = reinterpret_cast<Ui::AWJsonFormatter *>(_ui);

View File

@ -42,9 +42,7 @@ private:
static QVariant getFromJson(const QVariant &_value, const QVariant &_element);
static QVariant getFromList(const QVariant &_value, int _index);
static QVariant getFromMap(const QVariant &_value, const QString &_key);
void initPath();
void translate(void *_ui) override;
// properties
QString m_path;
QVariantList m_splittedPath;
QVariantList m_path;
};

View File

@ -53,6 +53,7 @@ AWListFormatter *AWListFormatter::copy(const QString &_fileName, const int _numb
auto item = new AWListFormatter(parent(), _fileName);
AWAbstractFormatter::copyDefaults(item);
item->setFilter(filter());
item->setSeparator(separator());
item->setSorted(isSorted());
@ -91,7 +92,7 @@ void AWListFormatter::setFilter(const QString &_filter)
void AWListFormatter::setSeparator(const QString &_separator)
{
qCDebug(LOG_LIB) << "Separtor" << _separator;
qCDebug(LOG_LIB) << "Separator" << _separator;
m_separator = _separator;
}
@ -109,7 +110,7 @@ void AWListFormatter::readConfiguration()
{
AWAbstractFormatter::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setFilter(settings.value("X-AW-Filter", filter()).toString());
@ -161,7 +162,7 @@ void AWListFormatter::writeConfiguration() const
{
AWAbstractFormatter::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -47,6 +47,7 @@ AWNoFormatter *AWNoFormatter::copy(const QString &_fileName, const int _number)
auto item = new AWNoFormatter(parent(), _fileName);
AWAbstractFormatter::copyDefaults(item);
item->setNumber(_number);
return item;

View File

@ -34,5 +34,4 @@ public slots:
private:
void translate(void *_ui) override;
// properties
};

View File

@ -61,6 +61,7 @@ AWScriptFormatter *AWScriptFormatter::copy(const QString &_fileName, const int _
auto item = new AWScriptFormatter(parent(), _fileName);
AWAbstractFormatter::copyDefaults(item);
item->setAppendCode(appendCode());
item->setCode(code());
item->setHasReturn(hasReturn());
@ -125,7 +126,7 @@ void AWScriptFormatter::readConfiguration()
{
AWAbstractFormatter::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setAppendCode(settings.value("X-AW-AppendCode", appendCode()).toBool());
@ -178,7 +179,7 @@ void AWScriptFormatter::writeConfiguration() const
{
AWAbstractFormatter::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -53,6 +53,7 @@ AWStringFormatter *AWStringFormatter::copy(const QString &_fileName, const int _
auto item = new AWStringFormatter(parent(), _fileName);
AWAbstractFormatter::copyDefaults(item);
item->setCount(count());
item->setFillChar(fillChar());
item->setForceWidth(forceWidth());
@ -108,7 +109,7 @@ void AWStringFormatter::readConfiguration()
{
AWAbstractFormatter::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setCount(settings.value("X-AW-Width", count()).toInt());
@ -160,7 +161,7 @@ void AWStringFormatter::writeConfiguration() const
{
AWAbstractFormatter::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -23,6 +23,8 @@
#include <QSettings>
#include <QStandardPaths>
#include <ranges>
#include "abstractextitemaggregator.h"
#include "awdebug.h"
@ -48,10 +50,12 @@ public:
qCDebug(LOG_LIB) << __PRETTY_FUNCTION__;
m_items.clear();
m_activeItems.clear();
};
QList<T *> activeItems() { return m_activeItems; };
auto activeItems()
{
return m_items | std::ranges::views::filter([](auto item) { return item->isActive(); });
};
void editItems()
{
@ -62,14 +66,7 @@ public:
void initItems() override
{
m_items.clear();
m_activeItems.clear();
m_items = getItems();
for (auto item : m_items) {
if (!item->isActive())
continue;
m_activeItems.append(static_cast<T *>(item));
}
};
void initSockets()
@ -85,41 +82,34 @@ public:
{
qCDebug(LOG_LIB) << "Tag" << _tag << "with used type" << _type;
T *found = nullptr;
for (auto item : m_items) {
if (item->tag(_type) != _tag)
continue;
found = static_cast<T *>(item);
break;
}
if (found == nullptr)
qCWarning(LOG_LIB) << "Could not find item by tag" << _tag;
auto found = std::find_if(m_items.cbegin(), m_items.cend(),
[&_tag, &_type](auto item) { return item->tag(_type) == _tag; });
return found;
if (found == std::end(m_items)) {
qCWarning(LOG_LIB) << "Could not find item by tag" << _tag;
return nullptr;
}
return static_cast<T *>(*found);
};
T *itemByTagNumber(const int _number) const
{
qCDebug(LOG_LIB) << "Number" << _number;
T *found = nullptr;
for (auto item : m_items) {
if (item->number() != _number)
continue;
found = static_cast<T *>(item);
break;
}
if (found == nullptr)
qCWarning(LOG_LIB) << "Could not find item by number" << _number;
auto found = std::find_if(m_items.cbegin(), m_items.cend(),
[_number](auto item) { return item->number() == _number; });
return found;
if (found == std::end(m_items)) {
qCWarning(LOG_LIB) << "Could not find item by number" << _number;
return nullptr;
}
return static_cast<T *>(*found);
};
[[nodiscard]] QList<AbstractExtItem *> items() const override { return m_items; };
private:
QList<AbstractExtItem *> m_items;
QList<T *> m_activeItems;
void doCreateItem(QListWidget *_widget) override { return createItem<T>(_widget); }
@ -127,8 +117,7 @@ private:
{
QList<AbstractExtItem *> items;
auto dirs = directories();
for (auto &dir : dirs) {
for (auto &dir : directories()) {
auto files = QDir(dir).entryList(QDir::Files, QDir::Name);
for (auto &file : files) {
// check filename
@ -137,8 +126,7 @@ private:
qCInfo(LOG_LIB) << "Found file" << file << "in" << dir;
auto filePath = QString("%1/%2").arg(dir, file);
// check if already exists
if (std::any_of(items.cbegin(), items.cend(),
[&filePath](AbstractExtItem *item) { return (item->fileName() == filePath); }))
if (std::any_of(items.cbegin(), items.cend(), [&file](auto item) { return item->fileName() == file; }))
continue;
items.append(new T(this, filePath));
}

View File

@ -62,31 +62,31 @@ ExtNetworkRequest *ExtNetworkRequest::copy(const QString &_fileName, const int _
auto item = new ExtNetworkRequest(parent(), _fileName);
copyDefaults(item);
item->setNumber(_number);
item->setStringUrl(stringUrl());
item->setUrl(url());
return item;
}
QString ExtNetworkRequest::stringUrl() const
{
return m_stringUrl;
}
QString ExtNetworkRequest::uniq() const
QString ExtNetworkRequest::url() const
{
return m_url.toString();
}
void ExtNetworkRequest::setStringUrl(const QString &_url)
QString ExtNetworkRequest::uniq() const
{
return url();
}
void ExtNetworkRequest::setUrl(const QString &_url)
{
qCDebug(LOG_LIB) << "Url" << _url;
m_stringUrl = _url;
initUrl();
m_url = QUrl(_url);
}
@ -94,10 +94,10 @@ void ExtNetworkRequest::readConfiguration()
{
AbstractExtItem::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setStringUrl(settings.value("X-AW-Url", stringUrl()).toString());
setUrl(settings.value("X-AW-Url", url()).toString());
settings.endGroup();
bumpApi(AW_EXTNETREQUEST_API);
@ -126,7 +126,7 @@ int ExtNetworkRequest::showConfiguration(QWidget *_parent, const QVariant &_args
ui->lineEdit_name->setText(name());
ui->lineEdit_comment->setText(comment());
ui->label_numberValue->setText(QString("%1").arg(number()));
ui->lineEdit_url->setText(stringUrl());
ui->lineEdit_url->setText(url());
ui->checkBox_active->setCheckState(isActive() ? Qt::Checked : Qt::Unchecked);
ui->lineEdit_schedule->setText(cron());
ui->lineEdit_socket->setText(socket());
@ -138,7 +138,7 @@ int ExtNetworkRequest::showConfiguration(QWidget *_parent, const QVariant &_args
setComment(ui->lineEdit_comment->text());
setNumber(ui->label_numberValue->text().toInt());
setApiVersion(AW_EXTNETREQUEST_API);
setStringUrl(ui->lineEdit_url->text());
setUrl(ui->lineEdit_url->text());
setActive(ui->checkBox_active->checkState() == Qt::Checked);
setCron(ui->lineEdit_schedule->text());
setSocket(ui->lineEdit_socket->text());
@ -158,11 +158,11 @@ void ExtNetworkRequest::writeConfiguration() const
{
AbstractExtItem::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");
settings.setValue("X-AW-Url", stringUrl());
settings.setValue("X-AW-Url", url());
settings.endGroup();
settings.sync();
@ -190,12 +190,6 @@ void ExtNetworkRequest::sendRequest()
}
void ExtNetworkRequest::initUrl()
{
m_url = QUrl(m_stringUrl);
}
void ExtNetworkRequest::translate(void *_ui)
{
auto ui = reinterpret_cast<Ui::ExtNetworkRequest *>(_ui);

View File

@ -25,17 +25,17 @@
class ExtNetworkRequest : public AbstractExtItem
{
Q_OBJECT
Q_PROPERTY(QString stringUrl READ stringUrl WRITE setStringUrl)
Q_PROPERTY(QString url READ url WRITE setUrl)
public:
explicit ExtNetworkRequest(QObject *_parent = nullptr, const QString &_filePath = "");
~ExtNetworkRequest() override;
ExtNetworkRequest *copy(const QString &_fileName, int _number) override;
// get methods
[[nodiscard]] QString stringUrl() const;
[[nodiscard]] QString url() const;
[[nodiscard]] QString uniq() const override;
// set methods
void setStringUrl(const QString &_url);
void setUrl(const QString &_url);
public slots:
void readConfiguration() override;
@ -51,7 +51,6 @@ private:
QNetworkAccessManager *m_manager = nullptr;
QUrl m_url;
bool m_isRunning = false;
void initUrl();
void translate(void *_ui) override;
// properties
QString m_stringUrl = "https://httpbin.org/get";

View File

@ -68,6 +68,7 @@ ExtQuotes *ExtQuotes::copy(const QString &_fileName, const int _number)
auto item = new ExtQuotes(parent(), _fileName);
copyDefaults(item);
item->setNumber(_number);
item->setTicker(ticker());
@ -100,7 +101,7 @@ void ExtQuotes::readConfiguration()
{
AbstractExtItem::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setTicker(settings.value("X-AW-Ticker", ticker()).toString());
@ -164,7 +165,7 @@ void ExtQuotes::writeConfiguration() const
{
AbstractExtItem::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -63,6 +63,7 @@ ExtScript *ExtScript::copy(const QString &_fileName, const int _number)
auto item = new ExtScript(parent(), _fileName);
copyDefaults(item);
item->setExecutable(executable());
item->setNumber(_number);
item->setRedirect(redirect());
@ -179,8 +180,8 @@ QString ExtScript::applyFilters(QString _value) const
qCWarning(LOG_LIB) << "Could not find filter" << _value << "in the json";
continue;
}
for (auto &f : filter.keys())
_value.replace(f, filter[f].toString());
for (auto [key, value] : filter.asKeyValueRange())
_value.replace(key, value.toString());
}
return _value;
@ -205,7 +206,7 @@ void ExtScript::readConfiguration()
{
AbstractExtItem::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setExecutable(settings.value("Exec", executable()).toString());
@ -305,7 +306,7 @@ void ExtScript::writeConfiguration() const
{
AbstractExtItem::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");
@ -332,24 +333,24 @@ void ExtScript::updateValue()
qCInfo(LOG_LIB) << "Error" << qdebug;
auto qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed();
qCInfo(LOG_LIB) << "Output" << qoutput;
QString strValue;
QString result;
switch (redirect()) {
case Redirect::stdout2stderr:
break;
case Redirect::stderr2stdout:
strValue = QString("%1\n%2").arg(qdebug).arg(qoutput);
result = QString("%1\n%2").arg(qdebug, qoutput);
break;
case Redirect::swap:
strValue = qdebug;
result = qdebug;
break;
case Redirect::nothing:
strValue = qoutput;
result = qoutput;
break;
}
// filters
m_values[tag("custom")] = applyFilters(strValue);
m_values[tag("custom")] = applyFilters(result);
emit(dataReceived(m_values));
}

View File

@ -59,6 +59,7 @@ ExtUpgrade *ExtUpgrade::copy(const QString &_fileName, const int _number)
auto item = new ExtUpgrade(parent(), _fileName);
copyDefaults(item);
item->setExecutable(executable());
item->setFilter(filter());
item->setNumber(_number);
@ -122,7 +123,7 @@ void ExtUpgrade::readConfiguration()
{
AbstractExtItem::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setExecutable(settings.value("Exec", executable()).toString());
@ -193,7 +194,7 @@ void ExtUpgrade::writeConfiguration() const
{
AbstractExtItem::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -71,6 +71,7 @@ ExtWeather *ExtWeather::copy(const QString &_fileName, const int _number)
auto item = new ExtWeather(parent(), _fileName);
copyDefaults(item);
item->setCity(city());
item->setCountry(country());
item->setImage(image());
@ -212,7 +213,7 @@ void ExtWeather::readConfiguration()
{
AbstractExtItem::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setCity(settings.value("X-AW-City", city()).toString());
@ -313,7 +314,7 @@ void ExtWeather::writeConfiguration() const
{
AbstractExtItem::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -39,7 +39,7 @@ GraphicalItem::GraphicalItem(QObject *_parent, const QString &_filePath)
// init scene
m_scene = new QGraphicsScene();
m_scene->setBackgroundBrush(QBrush(Qt::NoBrush));
m_scene->setBackgroundBrush({Qt::NoBrush});
// init view
m_view = new QGraphicsView(m_scene);
m_view->setStyleSheet("background: transparent");
@ -61,6 +61,7 @@ GraphicalItem *GraphicalItem::copy(const QString &_fileName, const int _number)
auto item = new GraphicalItem(parent(), _fileName);
copyDefaults(item);
item->setActiveColor(activeColor());
item->setBar(bar());
item->setCount(count());
@ -83,44 +84,41 @@ QString GraphicalItem::image(const QVariant &value)
qCDebug(LOG_LIB) << "Value" << value;
m_scene->clear();
int scale[2] = {1, 1};
auto scaleX = 1, scaleY = 1;
auto converted = GraphicalItemHelper::getPercents(value.toFloat(), minValue(), maxValue());
// paint
switch (m_type) {
case Type::Vertical:
m_helper->paintVertical(converted);
// scale
scale[1] = -2 * static_cast<int>(direction()) + 1;
scaleY = -2 * static_cast<int>(direction()) + 1;
break;
case Type::Circle:
m_helper->paintCircle(converted);
// scale
scale[0] = -2 * static_cast<int>(direction()) + 1;
scaleX = -2 * static_cast<int>(direction()) + 1;
break;
case Type::Graph:
m_helper->paintGraph(converted);
scale[0] = -2 * static_cast<int>(direction()) + 1;
scale[1] = -1;
scaleX = -2 * static_cast<int>(direction()) + 1;
scaleY = -1;
break;
case Type::Bars:
m_helper->paintBars(converted);
scale[0] = -2 * static_cast<int>(direction()) + 1;
scale[1] = -1;
scaleX = -2 * static_cast<int>(direction()) + 1;
scaleY = -1;
break;
case Type::Horizontal:
m_helper->paintHorizontal(converted);
// scale
scale[0] = -2 * static_cast<int>(direction()) + 1;
scaleX = -2 * static_cast<int>(direction()) + 1;
break;
}
// convert
auto pixmap = m_view->grab().transformed(QTransform().scale(scale[0], scale[1]));
auto pixmap = m_view->grab().transformed(QTransform().scale(scaleX, scaleY));
QByteArray byteArray;
QBuffer buffer(&byteArray);
pixmap.save(&buffer, "PNG");
auto url = QString("<img src=\"data:image/png;base64,%1\"/>").arg(QString(byteArray.toBase64()));
auto url = QString("<img src=\"data:image/png;base64,%1\"/>").arg(byteArray.toBase64());
return url;
}
@ -393,7 +391,7 @@ void GraphicalItem::readConfiguration()
{
AbstractExtItem::readConfiguration();
QSettings settings(fileName(), QSettings::IniFormat);
QSettings settings(filePath(), QSettings::IniFormat);
settings.beginGroup("Desktop Entry");
setCount(settings.value("X-AW-Count", count()).toInt());
@ -502,7 +500,7 @@ void GraphicalItem::writeConfiguration() const
{
AbstractExtItem::writeConfiguration();
QSettings settings(writtableConfig(), QSettings::IniFormat);
QSettings settings(writableConfig(), QSettings::IniFormat);
qCInfo(LOG_LIB) << "Configuration file" << settings.fileName();
settings.beginGroup("Desktop Entry");

View File

@ -95,8 +95,8 @@ public slots:
private slots:
void changeColor(Ui::GraphicalItem *_ui);
void changeCountState(Ui::GraphicalItem *_ui, int _state);
void changeValue(Ui::GraphicalItem *_ui, int _state);
static void changeCountState(Ui::GraphicalItem *_ui, int _state);
static void changeValue(Ui::GraphicalItem *_ui, int _state);
private:
GraphicalItemHelper *m_helper = nullptr;

View File

@ -48,30 +48,9 @@ void GraphicalItemHelper::setParameters(const QString &_active, const QString &_
// put images to pens if any otherwise set pen colors
// Images resize to content here as well
if (isColor(_active)) {
m_activePen.setBrush(QBrush(stringToColor(_active)));
} else {
qCInfo(LOG_LIB) << "Found path, trying to load Pixmap from" << _active;
QPixmap pixmap = QPixmap(QUrl(_active).toLocalFile());
if (pixmap.isNull()) {
qCWarning(LOG_LIB) << "Invalid pixmap found" << _active;
m_activePen.setBrush(QBrush(QColor(0, 0, 0, 130)));
} else {
m_activePen.setBrush(QBrush(pixmap.scaled(_width, _height)));
}
}
if (isColor(_inactive)) {
m_inactivePen.setBrush(QBrush(stringToColor(_inactive)));
} else {
qCInfo(LOG_LIB) << "Found path, trying to load Pixmap from" << _inactive;
QPixmap pixmap = QPixmap(QUrl(_inactive).toLocalFile());
if (pixmap.isNull()) {
qCWarning(LOG_LIB) << "Invalid pixmap found" << _inactive;
m_inactivePen.setBrush(QBrush(QColor(255, 255, 255, 130)));
} else {
m_inactivePen.setBrush(QBrush(pixmap.scaled(_width, _height)));
}
}
m_activePen.setBrush(parseBrush(_active, _width, _height, QColor(0, 0, 0, 130)));
m_inactivePen.setBrush(parseBrush(_inactive, _width, _height, QColor(255, 255, 255, 130)));
m_width = _width;
m_height = _height;
m_count = _count;
@ -88,14 +67,14 @@ void GraphicalItemHelper::paintBars(const float _value)
storeValue(_value);
// default norms
float normX = static_cast<float>(m_width) / static_cast<float>(m_values.count());
auto normX = static_cast<float>(m_width) / static_cast<float>(m_values.count());
auto normY = static_cast<float>(m_height - 1);
// paint graph
for (int i = 0; i < m_values.count(); i++) {
float x = static_cast<float>(i) * normX;
float y = 0.5f;
float width = normX;
float height = m_values.at(i) * normY + 0.5f;
for (auto i = 0; i < m_values.count(); ++i) {
auto x = static_cast<float>(i) * normX;
auto y = 0.5f;
auto width = normX;
auto height = m_values.at(i) * normY + 0.5f;
m_scene->addRect(x, y, width, height, m_activePen, m_activePen.brush());
}
}
@ -107,17 +86,16 @@ void GraphicalItemHelper::paintCircle(const float _percent)
m_activePen.setWidth(1);
m_inactivePen.setWidth(1);
QGraphicsEllipseItem *circle;
// 16 is because of qt. From Qt documentation:
// Returns the start angle for an ellipse segment in 16ths of a degree
// inactive
circle = m_scene->addEllipse(0.0, 0.0, m_width, m_height, m_inactivePen, m_inactivePen.brush());
circle->setSpanAngle(static_cast<int>(-(1.0f - _percent) * 360.0f * 16.0f));
circle->setStartAngle(static_cast<int>(90.0f * 16.0f - _percent * 360.0f * 16.0f));
auto circle = m_scene->addEllipse(0.0, 0.0, m_width, m_height, m_inactivePen, m_inactivePen.brush());
circle->setSpanAngle(static_cast<int>(-(1.0 - _percent) * 360.0 * 16.0));
circle->setStartAngle(static_cast<int>(90.0 * 16.0 - _percent * 360.0 * 16.0));
// active
circle = m_scene->addEllipse(0.0, 0.0, m_width, m_height, m_activePen, m_activePen.brush());
circle->setSpanAngle(static_cast<int>(-_percent * 360.0f * 16.0f));
circle->setSpanAngle(static_cast<int>(-_percent * 360.0 * 16.0));
circle->setStartAngle(90 * 16);
}
@ -132,16 +110,16 @@ void GraphicalItemHelper::paintGraph(const float _value)
storeValue(_value);
// default norms
float normX = static_cast<float>(m_width) / static_cast<float>(m_values.count());
auto normX = static_cast<float>(m_width) / static_cast<float>(m_values.count());
auto normY = static_cast<float>(m_height - 1);
// paint graph
for (int i = 0; i < m_values.count() - 1; i++) {
for (auto i = 0; i < m_values.count() - 1; ++i) {
// some magic here
auto value = static_cast<float>(i);
float x1 = value * normX;
float y1 = m_values.at(i) * normY + 0.5f;
float x2 = (value + 1) * normX;
float y2 = m_values.at(i + 1) * normY + 0.5f;
auto x1 = value * normX;
auto y1 = m_values.at(i) * normY + 0.5f;
auto x2 = (value + 1) * normX;
auto y2 = m_values.at(i + 1) * normY + 0.5f;
m_scene->addLine(x1, y1, x2, y2, m_activePen);
}
}
@ -200,7 +178,7 @@ QColor GraphicalItemHelper::stringToColor(const QString &_color)
{
qCDebug(LOG_LIB) << "Color" << _color;
QStringList listColor = _color.split(',');
auto listColor = _color.split(',');
while (listColor.count() < 4)
listColor.append("0");
// remove prefix
@ -216,6 +194,25 @@ QColor GraphicalItemHelper::stringToColor(const QString &_color)
}
QBrush GraphicalItemHelper::parseBrush(const QString &_input, const int _width, const int _height,
const QColor &_default)
{
qCDebug(LOG_LIB) << "Input select" << _input;
if (isColor(_input)) {
return stringToColor(_input);
} else {
qCInfo(LOG_LIB) << "Found path, trying to load Pixmap from" << _input;
auto pixmap = QPixmap(QUrl(_input).toLocalFile());
if (!pixmap.isNull())
return pixmap.scaled(_width, _height);
}
qCWarning(LOG_LIB) << "Invalid pixmap found" << _input;
return _default;
}
void GraphicalItemHelper::storeValue(const float _value)
{
qCDebug(LOG_LIB) << "Save value to array" << _value;

View File

@ -45,6 +45,7 @@ public:
static QColor stringToColor(const QString &_color);
private:
static QBrush parseBrush(const QString &_input, const int _width, const int _height, const QColor &_default);
void storeValue(float _value);
QGraphicsScene *m_scene = nullptr;
int m_count = 100;

View File

@ -46,6 +46,7 @@ void OWMWeatherProvider::initUrl(const QString &_city, const QString &_country,
m_url = QUrl(OWM_WEATHER_URL);
else
m_url = QUrl(OWM_FORECAST_URL);
QUrlQuery params;
params.addQueryItem("q", QString("%1,%2").arg(_city, _country));
params.addQueryItem("units", "metric");
@ -59,7 +60,7 @@ QVariantHash OWMWeatherProvider::parse(const QVariantMap &_json) const
if (_json["cod"].toInt() != 200) {
qCWarning(LOG_LIB) << "Invalid OpenWeatherMap return code" << _json["cod"].toInt();
return QVariantHash();
return {};
}
if (m_ts == 0) {
@ -84,14 +85,14 @@ QVariantHash OWMWeatherProvider::parseSingleJson(const QVariantMap &_json) const
QVariantHash output;
// weather status
QVariantList weather = _json["weather"].toList();
auto weather = _json["weather"].toList();
if (!weather.isEmpty()) {
int id = weather.first().toMap()["id"].toInt();
output[tag("weatherId")] = id;
}
// main data
QVariantMap mainWeather = _json["main"].toMap();
auto mainWeather = _json["main"].toMap();
if (!weather.isEmpty()) {
output[tag("humidity")] = mainWeather["humidity"].toDouble();
output[tag("pressure")] = mainWeather["pressure"].toDouble();

View File

@ -51,7 +51,7 @@ void QCronScheduler::parse(const QString &_timer)
{
qCDebug(LOG_LIB) << "Parse timer string" << _timer;
QStringList fields = _timer.split(' ');
auto fields = _timer.split(' ');
if (fields.count() != 5)
return;
@ -65,7 +65,7 @@ void QCronScheduler::parse(const QString &_timer)
void QCronScheduler::expired()
{
QDateTime now = QDateTime::currentDateTime();
auto now = QDateTime::currentDateTime();
if (m_schedule.minutes.contains(now.time().minute()) && m_schedule.hours.contains(now.time().hour())
&& m_schedule.days.contains(now.date().day()) && m_schedule.months.contains(now.date().month())
@ -122,7 +122,7 @@ void QCronScheduler::QCronField::fromRange(const QString &_range, const int _min
std::swap(minValue, maxValue);
} else {
bool status;
int value = _range.toInt(&status);
auto value = _range.toInt(&status);
if (!status || (value < _min) || (value > _max))
value = -1;
minValue = value;
@ -131,14 +131,14 @@ void QCronScheduler::QCronField::fromRange(const QString &_range, const int _min
}
QList<int> QCronScheduler::QCronField::toList()
QList<int> QCronScheduler::QCronField::toList() const
{
// error checking
if ((minValue == -1) || (maxValue == -1))
return {};
QList<int> output;
for (auto &i = minValue; i <= maxValue; ++i) {
for (auto i = minValue; i <= maxValue; ++i) {
if (i % div != 0)
continue;
output.append(i);

View File

@ -39,7 +39,7 @@ public:
int maxValue = -1;
int div = 1;
void fromRange(const QString &_range, int _min, int _max);
QList<int> toList();
QList<int> toList() const;
};
explicit QCronScheduler(QObject *_parent = nullptr);

View File

@ -40,6 +40,7 @@ void StooqQuotesProvider::initUrl(const QString &_asset)
qCDebug(LOG_LIB) << "Init query for" << _asset;
m_url = QUrl(STOOQ_QUOTES_URL);
QUrlQuery params;
params.addQueryItem("s", _asset);
params.addQueryItem("f", "pv");

View File

@ -41,6 +41,7 @@ void YahooQuotesProvider::initUrl(const QString &_asset)
qCDebug(LOG_LIB) << "Init query for" << _asset;
m_url = QUrl(YAHOO_QUOTES_URL);
QUrlQuery params;
params.addQueryItem("format", "json");
params.addQueryItem("env", "store://datatables.org/alltableswithkeys");
@ -56,12 +57,12 @@ QVariantHash YahooQuotesProvider::parse(const QByteArray &_source, const QVarian
QVariantHash values;
QJsonParseError error{};
QJsonDocument jsonDoc = QJsonDocument::fromJson(_source, &error);
auto jsonDoc = QJsonDocument::fromJson(_source, &error);
if (error.error != QJsonParseError::NoError) {
qCWarning(LOG_LIB) << "Parse error" << error.errorString();
return values;
}
QVariantMap jsonQuotes = jsonDoc.toVariant().toMap()["query"].toMap();
auto jsonQuotes = jsonDoc.toVariant().toMap()["query"].toMap();
jsonQuotes = jsonQuotes["results"].toMap()["quote"].toMap();
// extract old data

View File

@ -42,6 +42,7 @@ void YahooWeatherProvider::initUrl(const QString &_city, const QString &_country
m_ts = ts;
m_url = QUrl(YAHOO_WEATHER_URL);
QUrlQuery params;
params.addQueryItem("format", "json");
params.addQueryItem("env", "store://datatables.org/alltableswithkeys");
@ -54,14 +55,14 @@ QVariantHash YahooWeatherProvider::parse(const QVariantMap &_json) const
{
qCDebug(LOG_LIB) << "Parse json" << _json;
QVariantMap jsonMap = _json["query"].toMap();
auto jsonMap = _json["query"].toMap();
if (jsonMap["count"].toInt() != 1) {
qCWarning(LOG_LIB) << "Found data count" << _json["count"].toInt() << "is not 1";
return {};
}
QVariantMap results = jsonMap["results"].toMap()["channel"].toMap();
QVariantMap item = results["item"].toMap();
QVariantMap atmosphere = results["atmosphere"].toMap();
auto results = jsonMap["results"].toMap()["channel"].toMap();
auto item = results["item"].toMap();
auto atmosphere = results["atmosphere"].toMap();
return m_ts == 0 ? parseCurrent(item, atmosphere) : parseForecast(item);
}
@ -80,7 +81,7 @@ QVariantHash YahooWeatherProvider::parseCurrent(const QVariantMap &_json, const
auto condition = _json["condition"].toMap();
QVariantHash values;
int id = _json["condition"].toMap()["code"].toInt();
auto id = _json["condition"].toMap()["code"].toInt();
values[tag("weatherId")] = id;
values[tag("temperature")] = condition["temp"].toInt();
values[tag("timestamp")] = condition["date"].toString();
@ -97,9 +98,9 @@ QVariantHash YahooWeatherProvider::parseForecast(const QVariantMap &_json) const
qCDebug(LOG_LIB) << "Parse forecast from" << _json;
QVariantHash values;
QVariantList weatherList = _json["forecast"].toList();
QVariantMap weatherMap = weatherList.count() < m_ts ? weatherList.last().toMap() : weatherList.at(m_ts).toMap();
int id = weatherMap["code"].toInt();
auto weatherList = _json["forecast"].toList();
auto weatherMap = weatherList.count() < m_ts ? weatherList.last().toMap() : weatherList.at(m_ts).toMap();
auto id = weatherMap["code"].toInt();
values[tag("weatherId")] = id;
values[tag("timestamp")] = weatherMap["date"].toString();
// yahoo provides high and low temperatures. Lets calculate average one

View File

@ -101,12 +101,12 @@ QString DPAdds::toolTipImage(const int _desktop) const
return "";
// prepare
DesktopWindowsInfo info = getInfoByDesktop(_desktop);
auto info = getInfoByDesktop(_desktop);
// special tooltip format for names
if (m_tooltipType == "names") {
QStringList windowList;
std::for_each(info.windowsData.cbegin(), info.windowsData.cend(),
[&windowList](const WindowData &data) { windowList.append(data.name); });
[&windowList](auto &data) { windowList.append(data.name); });
return QString("<ul><li>%1</li></ul>").arg(windowList.join("</li><li>"));
}
@ -120,16 +120,14 @@ QString DPAdds::toolTipImage(const int _desktop) const
toolTipView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
auto screens = QGuiApplication::screens();
auto desktop
= std::accumulate(screens.cbegin(), screens.cend(), QRect(0, 0, 0, 0), [](QRect source, const QScreen *screen) {
return source.united(screen->availableGeometry());
});
auto desktop = std::accumulate(screens.cbegin(), screens.cend(), QRect(0, 0, 0, 0),
[](auto source, auto screen) { return source.united(screen->availableGeometry()); });
// update
auto width = static_cast<float>(desktop.width());
auto height = static_cast<float>(desktop.height());
float margin = 5.0f * width / 400.0f;
toolTipView->resize(static_cast<int>(width + 2.0f * margin), static_cast<int>(height + 2.0f * margin));
auto margin = 5.0 * width / 400.0;
toolTipView->resize(static_cast<int>(width + 2.0 * margin), static_cast<int>(height + 2.0 * margin));
toolTipScene->clear();
toolTipScene->setBackgroundBrush(QBrush(Qt::NoBrush));
// borders
@ -139,22 +137,24 @@ QString DPAdds::toolTipImage(const int _desktop) const
toolTipScene->addLine(width + 2.0 * margin, 0, 0, 0);
// with wayland countours only are supported
QPen pen = QPen();
auto pen = QPen();
pen.setWidthF(2.0 * width / 400.0);
pen.setColor(QColor(m_tooltipColor));
for (auto &data : info.windowsData) {
QRect rect = data.rect;
auto rect = data.rect;
auto left = static_cast<float>(rect.left());
auto right = static_cast<float>(rect.right());
auto top = static_cast<float>(rect.top());
auto bottom = static_cast<float>(rect.bottom());
toolTipScene->addLine(left + margin, bottom + margin, left + 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, pen);
toolTipScene->addLine(right + margin, bottom + margin, left + margin, bottom + margin, pen);
}
QPixmap image = toolTipView->grab().scaledToWidth(m_tooltipWidth);
auto image = toolTipView->grab().scaledToWidth(m_tooltipWidth);
QByteArray byteArray;
QBuffer buffer(&byteArray);
image.save(&buffer, "PNG");
@ -170,7 +170,7 @@ QString DPAdds::parsePattern(const QString &_pattern, const int _desktop) const
{
qCDebug(LOG_DP) << "Pattern" << _pattern << "for desktop" << _desktop;
QString parsed = _pattern;
auto parsed = _pattern;
parsed.replace("$$", "$\\$\\");
for (auto &key : dictKeys())
parsed.replace(QString("$%1").arg(key), valueByKey(key, _desktop));
@ -212,7 +212,7 @@ QString DPAdds::valueByKey(const QString &_key, int _desktop) const
if (_desktop == -1)
_desktop = currentDesktop();
QString currentMark = currentDesktop() == _desktop ? m_mark : "";
auto currentMark = currentDesktop() == _desktop ? m_mark : "";
if (_key == "mark")
return QString("%1").arg(currentMark, m_mark.size(), QLatin1Char(' ')).replace(" ", "&nbsp;");
else if (_key == "name") {
@ -241,10 +241,10 @@ QVariantMap DPAdds::getFont(const QVariantMap &_defaultFont)
qCDebug(LOG_DP) << "Default font is" << _defaultFont;
QVariantMap fontMap;
int ret = 0;
CFont defaultCFont = CFont(_defaultFont["family"].toString(), _defaultFont["size"].toInt(), 400, false,
_defaultFont["color"].toString());
CFont font = CFontDialog::getFont(i18n("Select font"), defaultCFont, false, false, &ret);
auto ret = 0;
auto defaultCFont = CFont(_defaultFont["family"].toString(), _defaultFont["size"].toInt(), 400, false,
_defaultFont["color"].toString());
auto font = CFontDialog::getFont(i18n("Select font"), defaultCFont, false, false, &ret);
fontMap["applied"] = ret;
fontMap["color"] = font.color().name();
@ -260,8 +260,7 @@ void DPAdds::sendNotification(const QString &_eventId, const QString &_message)
{
qCDebug(LOG_DP) << "Event" << _eventId << "with message" << _message;
KNotification *notification
= KNotification::event(_eventId, QString("Desktop Panel ::: %1").arg(_eventId), _message);
auto notification = KNotification::event(_eventId, QString("Desktop Panel ::: %1").arg(_eventId), _message);
notification->setComponentName("plasma-applet-org.kde.plasma.desktop-panel");
}
@ -282,7 +281,7 @@ DPAdds::DesktopWindowsInfo DPAdds::getInfoByDesktop(const int _desktop) const
auto desktop = m_vdi->desktopIds().at(_desktop);
DesktopWindowsInfo info;
for (auto i = 0; i < m_taskModel->rowCount(); i++) {
for (auto i = 0; i < m_taskModel->rowCount(); ++i) {
auto model = m_taskModel->index(i, 0);
WindowData data;

View File

@ -27,6 +27,7 @@ namespace TaskManager
class VirtualDesktopInfo;
class WindowTasksModel;
} // namespace TaskManager
class DPAdds : public QObject
{
Q_OBJECT

View File

@ -55,18 +55,18 @@ public:
return item ? item->run() : QVariantHash();
}
static KSysGuard::SensorInfo *makeSensorInfo(const QString &_name, const QVariant::Type type,
const KSysGuard::Unit unit = KSysGuard::UnitNone, const double min = 0,
const double max = 0)
static KSysGuard::SensorInfo *makeSensorInfo(const QString &_name, const QVariant::Type _type,
const KSysGuard::Unit _unit = KSysGuard::UnitNone,
const double _min = 0, const double _max = 0)
{
auto info = new KSysGuard::SensorInfo();
info->name = _name;
info->variantType = type;
info->variantType = _type;
info->unit = unit;
info->unit = _unit;
info->min = min;
info->max = max;
info->min = _min;
info->max = _max;
return info;
}

View File

@ -44,7 +44,7 @@ QHash<QString, KSysGuard::SensorInfo *> CustomSource::sources() const
{
auto result = QHash<QString, KSysGuard::SensorInfo *>();
for (auto &item : m_extScripts->activeItems())
for (auto item : m_extScripts->activeItems())
result.insert(item->tag("custom"),
makeSensorInfo(QString("Custom command '%1' output").arg(item->uniq()), QVariant::String));

View File

@ -46,7 +46,7 @@ QHash<QString, KSysGuard::SensorInfo *> QuotesSource::sources() const
{
auto result = QHash<QString, KSysGuard::SensorInfo *>();
for (auto &item : m_extQuotes->activeItems()) {
for (auto item : m_extQuotes->activeItems()) {
result.insert(item->tag("pricechg"),
makeSensorInfo(QString("Absolute price changes for '%1'").arg(item->uniq()), QVariant::Double));
result.insert(item->tag("price"),

View File

@ -44,7 +44,7 @@ QHash<QString, KSysGuard::SensorInfo *> RequestSource::sources() const
{
auto result = QHash<QString, KSysGuard::SensorInfo *>();
for (auto &item : m_extNetRequest->activeItems())
for (auto item : m_extNetRequest->activeItems())
result.insert(item->tag("response"),
makeSensorInfo(QString("Network response for %1").arg(item->uniq()), QVariant::String));

View File

@ -44,7 +44,7 @@ QHash<QString, KSysGuard::SensorInfo *> UpgradeSource::sources() const
{
auto result = QHash<QString, KSysGuard::SensorInfo *>();
for (auto &item : m_extUpgrade->activeItems())
for (auto item : m_extUpgrade->activeItems())
result.insert(item->tag("pkgcount"),
makeSensorInfo(QString("Package manager '%1' metadata").arg(item->uniq()), QVariant::Int));

View File

@ -46,7 +46,7 @@ QHash<QString, KSysGuard::SensorInfo *> WeatherSource::sources() const
{
auto result = QHash<QString, KSysGuard::SensorInfo *>();
for (auto &item : m_extWeather->activeItems()) {
for (auto item : m_extWeather->activeItems()) {
result.insert(item->tag("weatherId"), makeSensorInfo(QString("Numeric weather ID for '%1'").arg(item->uniq()),
QVariant::Int, KSysGuard::UnitNone, 0, 1000));
result.insert(item->tag("weather"),

View File

@ -27,14 +27,14 @@ void TestAbstractExtItem::initTestCase()
{
AWTestLibrary::init();
auto names = AWTestLibrary::randomFilenames();
fileName = names.first;
writeFileName = names.second;
filePath = names.first;
writeFilePath = names.second;
name = AWTestLibrary::randomString();
comment = AWTestLibrary::randomString();
socket = AWTestLibrary::randomString();
extItem = new ExtUpgrade(nullptr, fileName);
extItem = new ExtUpgrade(nullptr, filePath);
extItem->setActive(false);
extItem->setApiVersion(1);
extItem->setComment(comment);
@ -47,7 +47,7 @@ void TestAbstractExtItem::initTestCase()
void TestAbstractExtItem::cleanupTestCase()
{
QFile::remove(fileName);
QFile::remove(filePath);
delete extItem;
}
@ -57,16 +57,16 @@ void TestAbstractExtItem::test_values()
QCOMPARE(extItem->isActive(), false);
QCOMPARE(extItem->apiVersion(), 1);
QCOMPARE(extItem->comment(), comment);
QCOMPARE(extItem->fileName(), fileName);
QCOMPARE(extItem->filePath(), filePath);
QCOMPARE(extItem->name(), name);
QVERIFY((extItem->number() > 0) && (extItem->number() < 1000));
QCOMPARE(extItem->socket(), socket);
}
void TestAbstractExtItem::test_writtableFile()
void TestAbstractExtItem::test_writableFile()
{
QCOMPARE(extItem->writtableConfig(), writeFileName);
QCOMPARE(extItem->writableConfig(), writeFilePath);
}
@ -74,10 +74,10 @@ void TestAbstractExtItem::test_configuration()
{
extItem->writeConfiguration();
auto newExtItem = new ExtUpgrade(nullptr, writeFileName);
auto newExtItem = new ExtUpgrade(nullptr, writeFilePath);
QCOMPARE(newExtItem->isActive(), extItem->isActive());
QCOMPARE(newExtItem->comment(), extItem->comment());
QCOMPARE(newExtItem->fileName(), writeFileName);
QCOMPARE(newExtItem->filePath(), writeFilePath);
QCOMPARE(newExtItem->name(), extItem->name());
QCOMPARE(newExtItem->number(), extItem->number());
QCOMPARE(newExtItem->socket(), extItem->socket());
@ -97,10 +97,10 @@ void TestAbstractExtItem::test_bumpApi()
void TestAbstractExtItem::test_delete()
{
auto newExtItem = new ExtUpgrade(nullptr, writeFileName);
auto newExtItem = new ExtUpgrade(nullptr, writeFilePath);
QVERIFY(newExtItem->tryDelete());
QVERIFY(!QFile::exists(writeFileName));
QVERIFY(!QFile::exists(writeFilePath));
delete newExtItem;
}

View File

@ -32,7 +32,7 @@ private slots:
void cleanupTestCase();
// test
void test_values();
void test_writtableFile();
void test_writableFile();
void test_configuration();
void test_bumpApi();
void test_delete();
@ -44,6 +44,6 @@ private:
QString cron = "* * * * *";
QString name;
QString socket;
QString fileName;
QString writeFileName;
QString filePath;
QString writeFilePath;
};

View File

@ -41,7 +41,7 @@ void TestAWJsonFormatter::cleanupTestCase()
void TestAWJsonFormatter::test_values()
{
QCOMPARE(formatter->path(), path);
QCOMPARE(formatter->path(), QString(".%1").arg(path));
}