From 33a41bb6c08efa008ace4c0fc4257ad4f80bc12b Mon Sep 17 00:00:00 2001 From: Evgenii Alekseev Date: Thu, 21 Mar 2024 16:51:29 +0200 Subject: [PATCH] do not derive from qwidget --- sources/awesomewidgets/abstractextitem.cpp | 16 ++- sources/awesomewidgets/abstractextitem.h | 11 +- .../abstractextitemaggregator.cpp | 36 +++--- .../abstractextitemaggregator.h | 11 +- .../awesomewidgets/awabstractformatter.cpp | 10 +- sources/awesomewidgets/awabstractformatter.h | 4 +- .../awesomewidgets/awdatetimeformatter.cpp | 52 ++++---- sources/awesomewidgets/awdatetimeformatter.h | 13 +- sources/awesomewidgets/awfloatformatter.cpp | 64 +++++----- sources/awesomewidgets/awfloatformatter.h | 13 +- sources/awesomewidgets/awjsonformatter.cpp | 49 ++++---- sources/awesomewidgets/awjsonformatter.h | 13 +- sources/awesomewidgets/awlistformatter.cpp | 55 ++++----- sources/awesomewidgets/awlistformatter.h | 13 +- sources/awesomewidgets/awnoformatter.cpp | 48 ++++---- sources/awesomewidgets/awnoformatter.h | 13 +- sources/awesomewidgets/awscriptformatter.cpp | 63 +++++----- sources/awesomewidgets/awscriptformatter.h | 13 +- sources/awesomewidgets/awstringformatter.cpp | 55 ++++----- sources/awesomewidgets/awstringformatter.h | 13 +- sources/awesomewidgets/extnetworkrequest.cpp | 51 ++++---- sources/awesomewidgets/extnetworkrequest.h | 12 +- sources/awesomewidgets/extquotes.cpp | 54 ++++---- sources/awesomewidgets/extquotes.h | 11 +- sources/awesomewidgets/extscript.cpp | 69 ++++++----- sources/awesomewidgets/extscript.h | 12 +- sources/awesomewidgets/extupgrade.cpp | 55 +++++---- sources/awesomewidgets/extupgrade.h | 12 +- sources/awesomewidgets/extweather.cpp | 70 ++++++----- sources/awesomewidgets/extweather.h | 7 +- sources/awesomewidgets/graphicalitem.cpp | 116 +++++++++--------- sources/awesomewidgets/graphicalitem.h | 14 +-- 32 files changed, 495 insertions(+), 553 deletions(-) diff --git a/sources/awesomewidgets/abstractextitem.cpp b/sources/awesomewidgets/abstractextitem.cpp index 247650c..8d1a727 100644 --- a/sources/awesomewidgets/abstractextitem.cpp +++ b/sources/awesomewidgets/abstractextitem.cpp @@ -27,8 +27,8 @@ #include "qcronscheduler.h" -AbstractExtItem::AbstractExtItem(QWidget *_parent, const QString &_filePath) - : QDialog(_parent) +AbstractExtItem::AbstractExtItem(QObject *_parent, const QString &_filePath) + : QObject(_parent) , m_fileName(_filePath) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; @@ -97,15 +97,13 @@ void AbstractExtItem::startTimer() QString AbstractExtItem::writtableConfig() const { - QString path = m_fileName; - QString name = QFileInfo(path).fileName(); + auto path = m_fileName; + auto name = QFileInfo(path).fileName(); path.remove(path.length() - name.length() - 1, name.length() + 1); - QString dir = QFileInfo(path).fileName(); + auto dir = QFileInfo(path).fileName(); return QString("%1/awesomewidgets/%2/%3") - .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) - .arg(dir) - .arg(name); + .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), dir, name); } @@ -269,8 +267,8 @@ void AbstractExtItem::deinitSocket() m_socket->close(); QLocalServer::removeServer(socket()); - delete m_socket; disconnect(m_socket, SIGNAL(newConnection()), this, SLOT(newConnectionReceived())); + delete m_socket; } diff --git a/sources/awesomewidgets/abstractextitem.h b/sources/awesomewidgets/abstractextitem.h index 91fe620..d2f60f3 100644 --- a/sources/awesomewidgets/abstractextitem.h +++ b/sources/awesomewidgets/abstractextitem.h @@ -18,14 +18,14 @@ #ifndef ABSTRACTEXTITEM_H #define ABSTRACTEXTITEM_H -#include #include class QCronScheduler; class QLocalServer; +class QWidget; -class AbstractExtItem : public QDialog +class AbstractExtItem : public QObject { Q_OBJECT Q_PROPERTY(bool active READ isActive WRITE setActive) @@ -40,7 +40,7 @@ class AbstractExtItem : public QDialog Q_PROPERTY(QString uniq READ uniq) public: - explicit AbstractExtItem(QWidget *_parent = nullptr, const QString &_filePath = ""); + explicit AbstractExtItem(QObject *_parent = nullptr, const QString &_filePath = ""); ~AbstractExtItem() override; virtual void bumpApi(int _newVer); virtual AbstractExtItem *copy(const QString &_fileName, int _number) = 0; @@ -78,7 +78,7 @@ public slots: virtual void initSocket(); virtual void readConfiguration(); virtual QVariantHash run() = 0; - virtual int showConfiguration(const QVariant &_args) = 0; + virtual int showConfiguration(QWidget *_parent, const QVariant &_args) = 0; [[nodiscard]] virtual bool tryDelete() const; virtual void writeConfiguration() const; @@ -89,7 +89,8 @@ private: QCronScheduler *m_scheduler = nullptr; QString m_fileName = "/dev/null"; int m_times = 0; - virtual void translate() = 0; + // FIXME find a better way to do it + virtual void translate(void *_ui) = 0; // properties int m_apiVersion = 0; bool m_active = true; diff --git a/sources/awesomewidgets/abstractextitemaggregator.cpp b/sources/awesomewidgets/abstractextitemaggregator.cpp index b0ecea9..eb90bf4 100644 --- a/sources/awesomewidgets/abstractextitemaggregator.cpp +++ b/sources/awesomewidgets/abstractextitemaggregator.cpp @@ -34,9 +34,8 @@ AbstractExtItemAggregator::AbstractExtItemAggregator(QWidget *_parent, QString _ qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; // create directory at $HOME - QString localDir = QString("%1/awesomewidgets/%2") - .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) - .arg(type()); + auto localDir = QString("%1/awesomewidgets/%2") + .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), type()); QDir localDirectory; if (localDirectory.mkpath(localDir)) qCInfo(LOG_LIB) << "Created directory" << localDir; @@ -62,20 +61,19 @@ AbstractExtItemAggregator::~AbstractExtItemAggregator() void AbstractExtItemAggregator::copyItem() { - AbstractExtItem *source = itemFromWidget(); - QString fileName = getName(); - int number = uniqNumber(); - QString dir = QString("%1/awesomewidgets/%2") - .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) - .arg(m_type); + auto source = itemFromWidget(); + auto fileName = getName(); + auto number = uniqNumber(); + auto dir = QString("%1/awesomewidgets/%2") + .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), m_type); if ((!source) || (fileName.isEmpty())) { qCWarning(LOG_LIB) << "Nothing to copy"; return; } - QString filePath = QString("%1/%2").arg(dir).arg(fileName); + auto filePath = QString("%1/%2").arg(dir, fileName); - AbstractExtItem *newItem = source->copy(filePath, number); - if (newItem->showConfiguration(configArgs()) == 1) { + auto newItem = source->copy(filePath, number); + if (newItem->showConfiguration(this, configArgs()) == 1) { initItems(); repaintList(); } @@ -84,7 +82,7 @@ void AbstractExtItemAggregator::copyItem() void AbstractExtItemAggregator::deleteItem() { - AbstractExtItem *source = itemFromWidget(); + auto source = itemFromWidget(); if (!source) { qCWarning(LOG_LIB) << "Nothing to delete"; return; @@ -99,13 +97,13 @@ void AbstractExtItemAggregator::deleteItem() void AbstractExtItemAggregator::editItem() { - AbstractExtItem *source = itemFromWidget(); + auto source = itemFromWidget(); if (!source) { qCWarning(LOG_LIB) << "Nothing to edit"; return; } - if (source->showConfiguration(configArgs()) == 1) { + if (source->showConfiguration(this, configArgs()) == 1) { initItems(); repaintList(); } @@ -115,7 +113,7 @@ void AbstractExtItemAggregator::editItem() QString AbstractExtItemAggregator::getName() { bool ok; - QString name = QInputDialog::getText(this, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, "", &ok); + auto name = QInputDialog::getText(this, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, "", &ok); if ((!ok) || (name.isEmpty())) return ""; if (!name.endsWith(".desktop")) @@ -127,13 +125,13 @@ QString AbstractExtItemAggregator::getName() AbstractExtItem *AbstractExtItemAggregator::itemFromWidget() const { - QListWidgetItem *widgetItem = ui->listWidget->currentItem(); + auto widgetItem = ui->listWidget->currentItem(); if (!widgetItem) return nullptr; AbstractExtItem *found = nullptr; for (auto &item : items()) { - QString fileName = QFileInfo(item->fileName()).fileName(); + auto fileName = QFileInfo(item->fileName()).fileName(); if (fileName != widgetItem->text()) continue; found = item; @@ -151,7 +149,7 @@ void AbstractExtItemAggregator::repaintList() const ui->listWidget->clear(); for (auto &_item : items()) { QString fileName = QFileInfo(_item->fileName()).fileName(); - auto *item = new QListWidgetItem(fileName, ui->listWidget); + auto item = new QListWidgetItem(fileName, ui->listWidget); QStringList tooltip; tooltip.append(i18n("Name: %1", _item->name())); tooltip.append(i18n("Comment: %1", _item->comment())); diff --git a/sources/awesomewidgets/abstractextitemaggregator.h b/sources/awesomewidgets/abstractextitemaggregator.h index 7c767b8..781a657 100644 --- a/sources/awesomewidgets/abstractextitemaggregator.h +++ b/sources/awesomewidgets/abstractextitemaggregator.h @@ -45,20 +45,19 @@ public: void copyItem(); template void createItem() { - QString fileName = getName(); + auto fileName = getName(); int number = uniqNumber(); - QString dir = QString("%1/awesomewidgets/%2") - .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)) - .arg(m_type); + auto dir = QString("%1/awesomewidgets/%2") + .arg(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), m_type); if (fileName.isEmpty()) { qCWarning(LOG_LIB) << "Nothing to create"; return; } - QString filePath = QString("%1/%2").arg(dir).arg(fileName); + auto filePath = QString("%1/%2").arg(dir, fileName); T *newItem = new T(this, filePath); newItem->setNumber(number); - if (newItem->showConfiguration(configArgs()) == 1) { + if (newItem->showConfiguration(this, configArgs()) == 1) { initItems(); repaintList(); } diff --git a/sources/awesomewidgets/awabstractformatter.cpp b/sources/awesomewidgets/awabstractformatter.cpp index 5e1978c..70ace6c 100644 --- a/sources/awesomewidgets/awabstractformatter.cpp +++ b/sources/awesomewidgets/awabstractformatter.cpp @@ -22,19 +22,13 @@ #include "awdebug.h" -AWAbstractFormatter::AWAbstractFormatter(QWidget *_parent, const QString &_filePath) +AWAbstractFormatter::AWAbstractFormatter(QObject *_parent, const QString &_filePath) : AbstractExtItem(_parent, _filePath) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; } -AWAbstractFormatter::~AWAbstractFormatter() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; -} - - void AWAbstractFormatter::copyDefaults(AbstractExtItem *_other) const { AbstractExtItem::copyDefaults(_other); @@ -45,7 +39,7 @@ void AWAbstractFormatter::copyDefaults(AbstractExtItem *_other) const QString AWAbstractFormatter::uniq() const { - return QString("%1(%2)").arg(name()).arg(strType()); + return QString("%1(%2)").arg(name(), strType()); } diff --git a/sources/awesomewidgets/awabstractformatter.h b/sources/awesomewidgets/awabstractformatter.h index 99785c2..95004ec 100644 --- a/sources/awesomewidgets/awabstractformatter.h +++ b/sources/awesomewidgets/awabstractformatter.h @@ -32,8 +32,8 @@ class AWAbstractFormatter : public AbstractExtItem public: enum class FormatterClass { DateTime, Float, List, Script, String, NoFormat, Json }; - explicit AWAbstractFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~AWAbstractFormatter() override; + explicit AWAbstractFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); + ~AWAbstractFormatter() override = default; [[nodiscard]] virtual QString convert(const QVariant &_value) const = 0; void copyDefaults(AbstractExtItem *_other) const override; [[nodiscard]] QString uniq() const override; diff --git a/sources/awesomewidgets/awdatetimeformatter.cpp b/sources/awesomewidgets/awdatetimeformatter.cpp index 03a34de..a095323 100644 --- a/sources/awesomewidgets/awdatetimeformatter.cpp +++ b/sources/awesomewidgets/awdatetimeformatter.cpp @@ -15,7 +15,6 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "awdatetimeformatter.h" #include "ui_awdatetimeformatter.h" @@ -27,24 +26,13 @@ #include "awdebug.h" -AWDateTimeFormatter::AWDateTimeFormatter(QWidget *_parent, const QString &_filePath) +AWDateTimeFormatter::AWDateTimeFormatter(QObject *_parent, const QString &_filePath) : AWAbstractFormatter(_parent, _filePath) - , ui(new Ui::AWDateTimeFormatter) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) AWDateTimeFormatter::readConfiguration(); - ui->setupUi(this); - AWDateTimeFormatter::translate(); -} - - -AWDateTimeFormatter::~AWDateTimeFormatter() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; - - delete ui; } @@ -60,7 +48,7 @@ AWDateTimeFormatter *AWDateTimeFormatter::copy(const QString &_fileName, const i { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new AWDateTimeFormatter(dynamic_cast(parent()), _fileName); + auto item = new AWDateTimeFormatter(parent(), _fileName); AWAbstractFormatter::copyDefaults(item); item->setFormat(format()); item->setTranslateString(translateString()); @@ -114,27 +102,36 @@ void AWDateTimeFormatter::readConfiguration() } -int AWDateTimeFormatter::showConfiguration(const QVariant &_args) +int AWDateTimeFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::AWDateTimeFormatter(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_typeValue->setText("DateTime"); ui->lineEdit_format->setText(format()); ui->checkBox_translate->setCheckState(translateString() ? Qt::Checked : Qt::Unchecked); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setApiVersion(AW_FORMATTER_API); - setStrType(ui->label_typeValue->text()); - setFormat(ui->lineEdit_format->text()); - setTranslateString(ui->checkBox_translate->checkState() == Qt::Checked); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setApiVersion(AW_FORMATTER_API); + setStrType(ui->label_typeValue->text()); + setFormat(ui->lineEdit_format->text()); + setTranslateString(ui->checkBox_translate->checkState() == Qt::Checked); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -160,9 +157,10 @@ void AWDateTimeFormatter::initLocale() m_locale = m_translate ? QLocale::system() : QLocale::c(); } - -void AWDateTimeFormatter::translate() +void AWDateTimeFormatter::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_type->setText(i18n("Type")); diff --git a/sources/awesomewidgets/awdatetimeformatter.h b/sources/awesomewidgets/awdatetimeformatter.h index ef6bca2..3120204 100644 --- a/sources/awesomewidgets/awdatetimeformatter.h +++ b/sources/awesomewidgets/awdatetimeformatter.h @@ -23,11 +23,6 @@ #include "awabstractformatter.h" -namespace Ui -{ -class AWDateTimeFormatter; -} - class AWDateTimeFormatter : public AWAbstractFormatter { Q_OBJECT @@ -35,8 +30,7 @@ class AWDateTimeFormatter : public AWAbstractFormatter Q_PROPERTY(bool translateString READ translateString WRITE setTranslateString) public: - explicit AWDateTimeFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~AWDateTimeFormatter() override; + explicit AWDateTimeFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); [[nodiscard]] QString convert(const QVariant &_value) const override; AWDateTimeFormatter *copy(const QString &_fileName, int _number) override; // properties @@ -47,13 +41,12 @@ public: public slots: void readConfiguration() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private: - Ui::AWDateTimeFormatter *ui = nullptr; void initLocale(); - void translate() override; + void translate(void *_ui) override; // properties QLocale m_locale; QString m_format = ""; diff --git a/sources/awesomewidgets/awfloatformatter.cpp b/sources/awesomewidgets/awfloatformatter.cpp index a441828..968ec96 100644 --- a/sources/awesomewidgets/awfloatformatter.cpp +++ b/sources/awesomewidgets/awfloatformatter.cpp @@ -15,7 +15,6 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "awfloatformatter.h" #include "ui_awfloatformatter.h" @@ -26,24 +25,13 @@ #include "awdebug.h" -AWFloatFormatter::AWFloatFormatter(QWidget *_parent, const QString &_filePath) +AWFloatFormatter::AWFloatFormatter(QObject *_parent, const QString &_filePath) : AWAbstractFormatter(_parent, _filePath) - , ui(new Ui::AWFloatFormatter) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) AWFloatFormatter::readConfiguration(); - ui->setupUi(this); - AWFloatFormatter::translate(); -} - - -AWFloatFormatter::~AWFloatFormatter() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; - - delete ui; } @@ -51,7 +39,7 @@ QString AWFloatFormatter::convert(const QVariant &_value) const { qCDebug(LOG_LIB) << "Convert value" << _value; - QString output + auto output = QString("%1").arg(_value.toDouble() * multiplier() + summand(), count(), format(), precision(), fillChar()); if (forceWidth()) output = output.left(count()); @@ -64,7 +52,7 @@ AWFloatFormatter *AWFloatFormatter::copy(const QString &_fileName, const int _nu { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new AWFloatFormatter(dynamic_cast(parent()), _fileName); + auto item = new AWFloatFormatter(parent(), _fileName); AWAbstractFormatter::copyDefaults(item); item->setCount(count()); item->setFormat(format()); @@ -202,10 +190,15 @@ void AWFloatFormatter::readConfiguration() } -int AWFloatFormatter::showConfiguration(const QVariant &_args) +int AWFloatFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::AWFloatFormatter(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_typeValue->setText("Float"); @@ -217,22 +210,26 @@ int AWFloatFormatter::showConfiguration(const QVariant &_args) ui->doubleSpinBox_multiplier->setValue(multiplier()); ui->doubleSpinBox_summand->setValue(summand()); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setApiVersion(AW_FORMATTER_API); - setStrType(ui->label_typeValue->text()); - setFormat(ui->comboBox_format->currentText().at(0).toLatin1()); - setPrecision(ui->spinBox_precision->value()); - setCount(ui->spinBox_width->value()); - setFillChar(ui->lineEdit_fill->text().at(0)); - setForceWidth(ui->checkBox_forceWidth->checkState() == Qt::Checked); - setMultiplier(ui->doubleSpinBox_multiplier->value()); - setSummand(ui->doubleSpinBox_summand->value()); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setApiVersion(AW_FORMATTER_API); + setStrType(ui->label_typeValue->text()); + setFormat(ui->comboBox_format->currentText().at(0).toLatin1()); + setPrecision(ui->spinBox_precision->value()); + setCount(ui->spinBox_width->value()); + setFillChar(ui->lineEdit_fill->text().at(0)); + setForceWidth(ui->checkBox_forceWidth->checkState() == Qt::Checked); + setMultiplier(ui->doubleSpinBox_multiplier->value()); + setSummand(ui->doubleSpinBox_summand->value()); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -258,8 +255,10 @@ void AWFloatFormatter::writeConfiguration() const } -void AWFloatFormatter::translate() +void AWFloatFormatter::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_type->setText(i18n("Type")); @@ -271,3 +270,4 @@ void AWFloatFormatter::translate() ui->label_multiplier->setText(i18n("Multiplier")); ui->label_summand->setText(i18n("Summand")); } + diff --git a/sources/awesomewidgets/awfloatformatter.h b/sources/awesomewidgets/awfloatformatter.h index 021d3e7..f339970 100644 --- a/sources/awesomewidgets/awfloatformatter.h +++ b/sources/awesomewidgets/awfloatformatter.h @@ -21,11 +21,6 @@ #include "awabstractformatter.h" -namespace Ui -{ -class AWFloatFormatter; -} - class AWFloatFormatter : public AWAbstractFormatter { Q_OBJECT @@ -38,8 +33,7 @@ class AWFloatFormatter : public AWAbstractFormatter Q_PROPERTY(double summand READ summand WRITE setSummand) public: - explicit AWFloatFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~AWFloatFormatter() override; + explicit AWFloatFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); [[nodiscard]] QString convert(const QVariant &_value) const override; AWFloatFormatter *copy(const QString &_fileName, int _number) override; // properties @@ -60,12 +54,11 @@ public: public slots: void readConfiguration() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private: - Ui::AWFloatFormatter *ui = nullptr; - void translate() override; + void translate(void *_ui) override; // properties int m_count = 0; QChar m_fillChar = QChar(); diff --git a/sources/awesomewidgets/awjsonformatter.cpp b/sources/awesomewidgets/awjsonformatter.cpp index e4d2d19..af05526 100644 --- a/sources/awesomewidgets/awjsonformatter.cpp +++ b/sources/awesomewidgets/awjsonformatter.cpp @@ -15,7 +15,6 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "awjsonformatter.h" #include "ui_awjsonformatter.h" @@ -27,24 +26,13 @@ #include "awdebug.h" -AWJsonFormatter::AWJsonFormatter(QWidget *_parent, const QString &_filePath) +AWJsonFormatter::AWJsonFormatter(QObject *_parent, const QString &_filePath) : AWAbstractFormatter(_parent, _filePath) - , ui(new Ui::AWJsonFormatter) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) AWJsonFormatter::readConfiguration(); - ui->setupUi(this); - AWJsonFormatter::translate(); -} - - -AWJsonFormatter::~AWJsonFormatter() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; - - delete ui; } @@ -67,7 +55,7 @@ AWJsonFormatter *AWJsonFormatter::copy(const QString &_fileName, const int _numb { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new AWJsonFormatter(dynamic_cast(parent()), _fileName); + auto item = new AWJsonFormatter(parent(), _fileName); AWAbstractFormatter::copyDefaults(item); item->setNumber(_number); item->setPath(path()); @@ -105,25 +93,34 @@ void AWJsonFormatter::readConfiguration() } -int AWJsonFormatter::showConfiguration(const QVariant &args) +int AWJsonFormatter::showConfiguration(QWidget *_parent, const QVariant &args) { Q_UNUSED(args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::AWJsonFormatter(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_typeValue->setText("Json"); ui->lineEdit_path->setText(path()); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setApiVersion(AW_FORMATTER_API); - setStrType(ui->label_typeValue->text()); - setPath(ui->lineEdit_path->text()); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setApiVersion(AW_FORMATTER_API); + setStrType(ui->label_typeValue->text()); + setPath(ui->lineEdit_path->text()); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -187,8 +184,10 @@ void AWJsonFormatter::initPath() } -void AWJsonFormatter::translate() +void AWJsonFormatter::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_type->setText(i18n("Type")); diff --git a/sources/awesomewidgets/awjsonformatter.h b/sources/awesomewidgets/awjsonformatter.h index b0dec25..d521ad6 100644 --- a/sources/awesomewidgets/awjsonformatter.h +++ b/sources/awesomewidgets/awjsonformatter.h @@ -21,19 +21,13 @@ #include "awabstractformatter.h" -namespace Ui -{ -class AWJsonFormatter; -} - class AWJsonFormatter : public AWAbstractFormatter { Q_OBJECT Q_PROPERTY(QString path READ path WRITE setPath) public: - explicit AWJsonFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~AWJsonFormatter() override; + explicit AWJsonFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); [[nodiscard]] QString convert(const QVariant &_value) const override; AWJsonFormatter *copy(const QString &_fileName, int _number) override; // properties @@ -42,16 +36,15 @@ public: public slots: void readConfiguration() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private: - Ui::AWJsonFormatter *ui = nullptr; 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() override; + void translate(void *_ui) override; // properties QString m_path; QVariantList m_splittedPath; diff --git a/sources/awesomewidgets/awlistformatter.cpp b/sources/awesomewidgets/awlistformatter.cpp index 10d0e91..9109076 100644 --- a/sources/awesomewidgets/awlistformatter.cpp +++ b/sources/awesomewidgets/awlistformatter.cpp @@ -15,7 +15,6 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "awlistformatter.h" #include "ui_awlistformatter.h" @@ -26,24 +25,13 @@ #include "awdebug.h" -AWListFormatter::AWListFormatter(QWidget *_parent, const QString &_filePath) +AWListFormatter::AWListFormatter(QObject *_parent, const QString &_filePath) : AWAbstractFormatter(_parent, _filePath) - , ui(new Ui::AWListFormatter) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) AWListFormatter::readConfiguration(); - ui->setupUi(this); - AWListFormatter::translate(); -} - - -AWListFormatter::~AWListFormatter() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; - - delete ui; } @@ -51,7 +39,7 @@ QString AWListFormatter::convert(const QVariant &_value) const { qCDebug(LOG_LIB) << "Convert value" << _value; - QStringList output = _value.toStringList(); + auto output = _value.toStringList(); if (isSorted()) output.sort(); @@ -63,7 +51,7 @@ AWListFormatter *AWListFormatter::copy(const QString &_fileName, const int _numb { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new AWListFormatter(dynamic_cast(parent()), _fileName); + auto item = new AWListFormatter(parent(), _fileName); AWAbstractFormatter::copyDefaults(item); item->setFilter(filter()); item->setSeparator(separator()); @@ -133,10 +121,15 @@ void AWListFormatter::readConfiguration() } -int AWListFormatter::showConfiguration(const QVariant &_args) +int AWListFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::AWListFormatter(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_typeValue->setText("List"); @@ -144,18 +137,22 @@ int AWListFormatter::showConfiguration(const QVariant &_args) ui->lineEdit_separator->setText(separator()); ui->checkBox_sorted->setCheckState(isSorted() ? Qt::Checked : Qt::Unchecked); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setApiVersion(AW_FORMATTER_API); - setStrType(ui->label_typeValue->text()); - setFilter(ui->lineEdit_filter->text()); - setSeparator(ui->lineEdit_separator->text()); - setSorted(ui->checkBox_sorted->checkState() == Qt::Checked); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setApiVersion(AW_FORMATTER_API); + setStrType(ui->label_typeValue->text()); + setFilter(ui->lineEdit_filter->text()); + setSeparator(ui->lineEdit_separator->text()); + setSorted(ui->checkBox_sorted->checkState() == Qt::Checked); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -177,8 +174,10 @@ void AWListFormatter::writeConfiguration() const } -void AWListFormatter::translate() +void AWListFormatter::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_type->setText(i18n("Type")); diff --git a/sources/awesomewidgets/awlistformatter.h b/sources/awesomewidgets/awlistformatter.h index 1732303..8ba78eb 100644 --- a/sources/awesomewidgets/awlistformatter.h +++ b/sources/awesomewidgets/awlistformatter.h @@ -21,11 +21,6 @@ #include "awabstractformatter.h" -namespace Ui -{ -class AWListFormatter; -} - class AWListFormatter : public AWAbstractFormatter { Q_OBJECT @@ -34,8 +29,7 @@ class AWListFormatter : public AWAbstractFormatter Q_PROPERTY(bool sorted READ isSorted WRITE setSorted) public: - explicit AWListFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~AWListFormatter() override; + explicit AWListFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); [[nodiscard]] QString convert(const QVariant &_value) const override; AWListFormatter *copy(const QString &_fileName, int _number) override; // properties @@ -48,12 +42,11 @@ public: public slots: void readConfiguration() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private: - Ui::AWListFormatter *ui = nullptr; - void translate() override; + void translate(void *_ui) override; // properties QString m_filter = ""; QString m_separator = ""; diff --git a/sources/awesomewidgets/awnoformatter.cpp b/sources/awesomewidgets/awnoformatter.cpp index 3253f1e..5ee8909 100644 --- a/sources/awesomewidgets/awnoformatter.cpp +++ b/sources/awesomewidgets/awnoformatter.cpp @@ -15,7 +15,6 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "awnoformatter.h" #include "ui_awnoformatter.h" @@ -24,24 +23,13 @@ #include "awdebug.h" -AWNoFormatter::AWNoFormatter(QWidget *_parent, const QString &_filePath) +AWNoFormatter::AWNoFormatter(QObject *_parent, const QString &_filePath) : AWAbstractFormatter(_parent, _filePath) - , ui(new Ui::AWNoFormatter) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) AWNoFormatter::readConfiguration(); - ui->setupUi(this); - AWNoFormatter::translate(); -} - - -AWNoFormatter::~AWNoFormatter() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; - - delete ui; } @@ -57,7 +45,7 @@ AWNoFormatter *AWNoFormatter::copy(const QString &_fileName, const int _number) { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new AWNoFormatter(dynamic_cast(parent()), _fileName); + auto item = new AWNoFormatter(parent(), _fileName); AWAbstractFormatter::copyDefaults(item); item->setNumber(_number); @@ -65,30 +53,42 @@ AWNoFormatter *AWNoFormatter::copy(const QString &_fileName, const int _number) } -int AWNoFormatter::showConfiguration(const QVariant &_args) +int AWNoFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::AWNoFormatter(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_typeValue->setText("NoFormat"); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setApiVersion(AW_FORMATTER_API); - setStrType(ui->label_typeValue->text()); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setApiVersion(AW_FORMATTER_API); + setStrType(ui->label_typeValue->text()); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } -void AWNoFormatter::translate() +void AWNoFormatter::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_type->setText(i18n("Type")); } + diff --git a/sources/awesomewidgets/awnoformatter.h b/sources/awesomewidgets/awnoformatter.h index 56f7b40..78ae248 100644 --- a/sources/awesomewidgets/awnoformatter.h +++ b/sources/awesomewidgets/awnoformatter.h @@ -21,27 +21,20 @@ #include "awabstractformatter.h" -namespace Ui -{ -class AWNoFormatter; -} - class AWNoFormatter : public AWAbstractFormatter { Q_OBJECT public: - explicit AWNoFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~AWNoFormatter() override; + explicit AWNoFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); [[nodiscard]] QString convert(const QVariant &_value) const override; AWNoFormatter *copy(const QString &_fileName, int _number) override; public slots: - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; private: - Ui::AWNoFormatter *ui = nullptr; - void translate() override; + void translate(void *_ui) override; // properties }; diff --git a/sources/awesomewidgets/awscriptformatter.cpp b/sources/awesomewidgets/awscriptformatter.cpp index ea38671..ff0f55f 100644 --- a/sources/awesomewidgets/awscriptformatter.cpp +++ b/sources/awesomewidgets/awscriptformatter.cpp @@ -15,7 +15,6 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "awscriptformatter.h" #include "ui_awscriptformatter.h" @@ -27,24 +26,13 @@ #include "awdebug.h" -AWScriptFormatter::AWScriptFormatter(QWidget *_parent, const QString &_filePath) +AWScriptFormatter::AWScriptFormatter(QObject *_parent, const QString &_filePath) : AWAbstractFormatter(_parent, _filePath) - , ui(new Ui::AWScriptFormatter) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) AWScriptFormatter::readConfiguration(); - ui->setupUi(this); - AWScriptFormatter::translate(); -} - - -AWScriptFormatter::~AWScriptFormatter() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; - - delete ui; } @@ -54,9 +42,8 @@ QString AWScriptFormatter::convert(const QVariant &_value) const // init engine QJSEngine engine; - QJSValue fn = engine.evaluate(m_program); - QJSValueList args = QJSValueList() << _value.toString(); - QJSValue result = fn.call(args); + auto fn = engine.evaluate(m_program); + auto result = fn.call({_value.toString()}); if (result.isError()) { qCWarning(LOG_LIB) << "Uncaught exception at line" << result.property("lineNumber").toInt() << ":" @@ -72,7 +59,7 @@ AWScriptFormatter *AWScriptFormatter::copy(const QString &_fileName, const int _ { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new AWScriptFormatter(dynamic_cast(parent()), _fileName); + auto item = new AWScriptFormatter(parent(), _fileName); AWAbstractFormatter::copyDefaults(item); item->setAppendCode(appendCode()); item->setCode(code()); @@ -150,10 +137,15 @@ void AWScriptFormatter::readConfiguration() } -int AWScriptFormatter::showConfiguration(const QVariant &_args) +int AWScriptFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::AWScriptFormatter(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_typeValue->setText("Script"); @@ -161,19 +153,23 @@ int AWScriptFormatter::showConfiguration(const QVariant &_args) ui->checkBox_hasReturn->setCheckState(hasReturn() ? Qt::Checked : Qt::Unchecked); ui->textEdit_code->setPlainText(code()); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setApiVersion(AW_FORMATTER_API); - setStrType(ui->label_typeValue->text()); - setAppendCode(ui->checkBox_appendCode->checkState() == Qt::Checked); - setHasReturn(ui->checkBox_hasReturn->checkState() == Qt::Checked); - setCode(ui->textEdit_code->toPlainText()); - initProgram(); + int ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setApiVersion(AW_FORMATTER_API); + setStrType(ui->label_typeValue->text()); + setAppendCode(ui->checkBox_appendCode->checkState() == Qt::Checked); + setHasReturn(ui->checkBox_hasReturn->checkState() == Qt::Checked); + setCode(ui->textEdit_code->toPlainText()); + initProgram(); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -199,7 +195,7 @@ void AWScriptFormatter::initProgram() { // init JS code if (appendCode()) - m_program = QString("(function(value) { %1%2 })").arg(code()).arg(hasReturn() ? "" : "; return output;"); + m_program = QString("(function(value) { %1%2 })").arg(code(), hasReturn() ? "" : "; return output;"); else m_program = code(); @@ -207,8 +203,10 @@ void AWScriptFormatter::initProgram() } -void AWScriptFormatter::translate() +void AWScriptFormatter::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_type->setText(i18n("Type")); @@ -216,3 +214,4 @@ void AWScriptFormatter::translate() ui->checkBox_hasReturn->setText(i18n("Has return")); ui->label_code->setText(i18n("Code")); } + diff --git a/sources/awesomewidgets/awscriptformatter.h b/sources/awesomewidgets/awscriptformatter.h index b3df69c..9e93a6d 100644 --- a/sources/awesomewidgets/awscriptformatter.h +++ b/sources/awesomewidgets/awscriptformatter.h @@ -21,11 +21,6 @@ #include "awabstractformatter.h" -namespace Ui -{ -class AWScriptFormatter; -} - class AWScriptFormatter : public AWAbstractFormatter { Q_OBJECT @@ -35,8 +30,7 @@ class AWScriptFormatter : public AWAbstractFormatter Q_PROPERTY(QString program READ program) public: - explicit AWScriptFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~AWScriptFormatter() override; + explicit AWScriptFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); [[nodiscard]] QString convert(const QVariant &_value) const override; AWScriptFormatter *copy(const QString &_fileName, int _number) override; // properties @@ -50,13 +44,12 @@ public: public slots: void readConfiguration() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private: - Ui::AWScriptFormatter *ui = nullptr; void initProgram(); - void translate() override; + void translate(void *_ui) override; // properties bool m_appendCode = true; QString m_code = ""; diff --git a/sources/awesomewidgets/awstringformatter.cpp b/sources/awesomewidgets/awstringformatter.cpp index b606931..c22b130 100644 --- a/sources/awesomewidgets/awstringformatter.cpp +++ b/sources/awesomewidgets/awstringformatter.cpp @@ -15,7 +15,6 @@ * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ - #include "awstringformatter.h" #include "ui_awstringformatter.h" @@ -26,24 +25,13 @@ #include "awdebug.h" -AWStringFormatter::AWStringFormatter(QWidget *_parent, const QString &_filePath) +AWStringFormatter::AWStringFormatter(QObject *_parent, const QString &_filePath) : AWAbstractFormatter(_parent, _filePath) - , ui(new Ui::AWStringFormatter) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) AWStringFormatter::readConfiguration(); - ui->setupUi(this); - AWStringFormatter::translate(); -} - - -AWStringFormatter::~AWStringFormatter() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; - - delete ui; } @@ -51,7 +39,7 @@ QString AWStringFormatter::convert(const QVariant &_value) const { qCDebug(LOG_LIB) << "Convert value" << _value; - QString output = QString("%1").arg(_value.toString(), count(), fillChar()); + auto output = QString("%1").arg(_value.toString(), count(), fillChar()); if (forceWidth()) output = output.left(count()); @@ -63,7 +51,7 @@ AWStringFormatter *AWStringFormatter::copy(const QString &_fileName, const int _ { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new AWStringFormatter(dynamic_cast(parent()), _fileName); + auto item = new AWStringFormatter(parent(), _fileName); AWAbstractFormatter::copyDefaults(item); item->setCount(count()); item->setFillChar(fillChar()); @@ -132,10 +120,15 @@ void AWStringFormatter::readConfiguration() } -int AWStringFormatter::showConfiguration(const QVariant &_args) +int AWStringFormatter::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::AWStringFormatter(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_typeValue->setText("String"); @@ -143,18 +136,22 @@ int AWStringFormatter::showConfiguration(const QVariant &_args) ui->lineEdit_fill->setText(QString(fillChar())); ui->checkBox_forceWidth->setCheckState(forceWidth() ? Qt::Checked : Qt::Unchecked); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setApiVersion(AW_FORMATTER_API); - setStrType(ui->label_typeValue->text()); - setCount(ui->spinBox_width->value()); - setFillChar(ui->lineEdit_fill->text().at(0)); - setForceWidth(ui->checkBox_forceWidth->checkState() == Qt::Checked); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setApiVersion(AW_FORMATTER_API); + setStrType(ui->label_typeValue->text()); + setCount(ui->spinBox_width->value()); + setFillChar(ui->lineEdit_fill->text().at(0)); + setForceWidth(ui->checkBox_forceWidth->checkState() == Qt::Checked); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -176,8 +173,10 @@ void AWStringFormatter::writeConfiguration() const } -void AWStringFormatter::translate() +void AWStringFormatter::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_type->setText(i18n("Type")); diff --git a/sources/awesomewidgets/awstringformatter.h b/sources/awesomewidgets/awstringformatter.h index c634f6e..a39a814 100644 --- a/sources/awesomewidgets/awstringformatter.h +++ b/sources/awesomewidgets/awstringformatter.h @@ -21,11 +21,6 @@ #include "awabstractformatter.h" -namespace Ui -{ -class AWStringFormatter; -} - class AWStringFormatter : public AWAbstractFormatter { Q_OBJECT @@ -34,8 +29,7 @@ class AWStringFormatter : public AWAbstractFormatter Q_PROPERTY(bool forceWidth READ forceWidth WRITE setForceWidth) public: - explicit AWStringFormatter(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~AWStringFormatter() override; + explicit AWStringFormatter(QObject *_parent = nullptr, const QString &_filePath = ""); [[nodiscard]] QString convert(const QVariant &_value) const override; AWStringFormatter *copy(const QString &_fileName, int _number) override; // properties @@ -48,12 +42,11 @@ public: public slots: void readConfiguration() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private: - Ui::AWStringFormatter *ui = nullptr; - void translate() override; + void translate(void *_ui) override; // properties int m_count = 0; QChar m_fillChar = QChar(); diff --git a/sources/awesomewidgets/extnetworkrequest.cpp b/sources/awesomewidgets/extnetworkrequest.cpp index f496c16..05cd703 100644 --- a/sources/awesomewidgets/extnetworkrequest.cpp +++ b/sources/awesomewidgets/extnetworkrequest.cpp @@ -27,16 +27,13 @@ #include "awdebug.h" -ExtNetworkRequest::ExtNetworkRequest(QWidget *_parent, const QString &_filePath) +ExtNetworkRequest::ExtNetworkRequest(QObject *_parent, const QString &_filePath) : AbstractExtItem(_parent, _filePath) - , ui(new Ui::ExtNetworkRequest) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) ExtNetworkRequest::readConfiguration(); - ui->setupUi(this); - ExtNetworkRequest::translate(); m_values[tag("response")] = ""; @@ -57,7 +54,6 @@ ExtNetworkRequest::~ExtNetworkRequest() disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); m_manager->deleteLater(); - delete ui; } @@ -65,7 +61,7 @@ ExtNetworkRequest *ExtNetworkRequest::copy(const QString &_fileName, const int _ { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new ExtNetworkRequest(dynamic_cast(parent()), _fileName); + auto item = new ExtNetworkRequest(parent(), _fileName); copyDefaults(item); item->setNumber(_number); item->setStringUrl(stringUrl()); @@ -119,10 +115,15 @@ QVariantHash ExtNetworkRequest::run() } -int ExtNetworkRequest::showConfiguration(const QVariant &_args) +int ExtNetworkRequest::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::ExtNetworkRequest(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_numberValue->setText(QString("%1").arg(number())); @@ -132,20 +133,24 @@ int ExtNetworkRequest::showConfiguration(const QVariant &_args) ui->lineEdit_socket->setText(socket()); ui->spinBox_interval->setValue(interval()); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setNumber(ui->label_numberValue->text().toInt()); - setApiVersion(AW_EXTNETREQUEST_API); - setStringUrl(ui->lineEdit_url->text()); - setActive(ui->checkBox_active->checkState() == Qt::Checked); - setCron(ui->lineEdit_schedule->text()); - setSocket(ui->lineEdit_socket->text()); - setInterval(ui->spinBox_interval->value()); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setNumber(ui->label_numberValue->text().toInt()); + setApiVersion(AW_EXTNETREQUEST_API); + setStringUrl(ui->lineEdit_url->text()); + setActive(ui->checkBox_active->checkState() == Qt::Checked); + setCron(ui->lineEdit_schedule->text()); + setSocket(ui->lineEdit_socket->text()); + setInterval(ui->spinBox_interval->value()); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -181,7 +186,7 @@ void ExtNetworkRequest::networkReplyReceived(QNetworkReply *_reply) void ExtNetworkRequest::sendRequest() { m_isRunning = true; - QNetworkReply *reply = m_manager->get(QNetworkRequest(m_url)); + auto reply = m_manager->get(QNetworkRequest(m_url)); new QReplyTimeout(reply, REQUEST_TIMEOUT); } @@ -192,8 +197,10 @@ void ExtNetworkRequest::initUrl() } -void ExtNetworkRequest::translate() +void ExtNetworkRequest::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_number->setText(i18n("Tag")); diff --git a/sources/awesomewidgets/extnetworkrequest.h b/sources/awesomewidgets/extnetworkrequest.h index fb079a6..3d92ab2 100644 --- a/sources/awesomewidgets/extnetworkrequest.h +++ b/sources/awesomewidgets/extnetworkrequest.h @@ -23,18 +23,13 @@ #include "abstractextitem.h" -namespace Ui -{ -class ExtNetworkRequest; -} - class ExtNetworkRequest : public AbstractExtItem { Q_OBJECT Q_PROPERTY(QString stringUrl READ stringUrl WRITE setStringUrl) public: - explicit ExtNetworkRequest(QWidget *_parent = nullptr, const QString &_filePath = ""); + explicit ExtNetworkRequest(QObject *_parent = nullptr, const QString &_filePath = ""); ~ExtNetworkRequest() override; ExtNetworkRequest *copy(const QString &_fileName, int _number) override; // get methods @@ -46,7 +41,7 @@ public: public slots: void readConfiguration() override; QVariantHash run() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private slots: @@ -57,9 +52,8 @@ private: QNetworkAccessManager *m_manager = nullptr; QUrl m_url; bool m_isRunning = false; - Ui::ExtNetworkRequest *ui = nullptr; void initUrl(); - void translate() override; + void translate(void *_ui) override; // properties QString m_stringUrl = "https://httpbin.org/get"; // values diff --git a/sources/awesomewidgets/extquotes.cpp b/sources/awesomewidgets/extquotes.cpp index c2e5090..84a8cf6 100644 --- a/sources/awesomewidgets/extquotes.cpp +++ b/sources/awesomewidgets/extquotes.cpp @@ -20,7 +20,6 @@ #include -#include #include #include @@ -29,16 +28,13 @@ #include "stooqquotesprovider.h" -ExtQuotes::ExtQuotes(QWidget *_parent, const QString &_filePath) +ExtQuotes::ExtQuotes(QObject *_parent, const QString &_filePath) : AbstractExtItem(_parent, _filePath) - , ui(new Ui::ExtQuotes) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) ExtQuotes::readConfiguration(); - ui->setupUi(this); - ExtQuotes::translate(); m_values[tag("price")] = 0.0; m_values[tag("pricechg")] = 0.0; @@ -64,7 +60,6 @@ ExtQuotes::~ExtQuotes() disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); m_manager->deleteLater(); - delete ui; } @@ -72,7 +67,7 @@ ExtQuotes *ExtQuotes::copy(const QString &_fileName, const int _number) { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new ExtQuotes(dynamic_cast(parent()), _fileName); + auto item = new ExtQuotes(parent(), _fileName); copyDefaults(item); item->setNumber(_number); item->setTicker(ticker()); @@ -126,10 +121,15 @@ QVariantHash ExtQuotes::run() } -int ExtQuotes::showConfiguration(const QVariant &_args) +int ExtQuotes::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::ExtQuotes(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_numberValue->setText(QString("%1").arg(number())); @@ -139,20 +139,24 @@ int ExtQuotes::showConfiguration(const QVariant &_args) ui->lineEdit_socket->setText(socket()); ui->spinBox_interval->setValue(interval()); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setNumber(ui->label_numberValue->text().toInt()); - setApiVersion(AW_EXTQUOTES_API); - setTicker(ui->lineEdit_ticker->text()); - setActive(ui->checkBox_active->checkState() == Qt::Checked); - setCron(ui->lineEdit_schedule->text()); - setSocket(ui->lineEdit_socket->text()); - setInterval(ui->spinBox_interval->value()); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setNumber(ui->label_numberValue->text().toInt()); + setApiVersion(AW_EXTQUOTES_API); + setTicker(ui->lineEdit_ticker->text()); + setActive(ui->checkBox_active->checkState() == Qt::Checked); + setCron(ui->lineEdit_schedule->text()); + setSocket(ui->lineEdit_socket->text()); + setInterval(ui->spinBox_interval->value()); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -182,7 +186,7 @@ void ExtQuotes::quotesReplyReceived(QNetworkReply *_reply) auto text = _reply->readAll(); _reply->deleteLater(); - QVariantHash data = m_providerObject->parse(text, m_values); + auto data = m_providerObject->parse(text, m_values); if (data.isEmpty()) return; m_values = data; @@ -194,7 +198,7 @@ void ExtQuotes::quotesReplyReceived(QNetworkReply *_reply) void ExtQuotes::sendRequest() { m_isRunning = true; - QNetworkReply *reply = m_manager->get(QNetworkRequest(m_providerObject->url())); + auto reply = m_manager->get(QNetworkRequest(m_providerObject->url())); new QReplyTimeout(reply, REQUEST_TIMEOUT); } @@ -210,8 +214,10 @@ void ExtQuotes::initProvider() } -void ExtQuotes::translate() +void ExtQuotes::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_number->setText(i18n("Tag")); diff --git a/sources/awesomewidgets/extquotes.h b/sources/awesomewidgets/extquotes.h index 1acce39..68f5b6e 100644 --- a/sources/awesomewidgets/extquotes.h +++ b/sources/awesomewidgets/extquotes.h @@ -24,10 +24,6 @@ class AbstractQuotesProvider; -namespace Ui -{ -class ExtQuotes; -} class ExtQuotes : public AbstractExtItem { @@ -35,7 +31,7 @@ class ExtQuotes : public AbstractExtItem Q_PROPERTY(QString ticker READ ticker WRITE setTicker) public: - explicit ExtQuotes(QWidget *_parent = nullptr, const QString &_filePath = ""); + explicit ExtQuotes(QObject *_parent = nullptr, const QString &_filePath = ""); ~ExtQuotes() override; ExtQuotes *copy(const QString &_fileName, int _number) override; // get methods @@ -47,7 +43,7 @@ public: public slots: void readConfiguration() override; QVariantHash run() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private slots: @@ -58,9 +54,8 @@ private: AbstractQuotesProvider *m_providerObject = nullptr; QNetworkAccessManager *m_manager = nullptr; bool m_isRunning = false; - Ui::ExtQuotes *ui = nullptr; void initProvider(); - void translate() override; + void translate(void *_ui) override; // properties QString m_ticker = "EURUSD=X"; // values diff --git a/sources/awesomewidgets/extscript.cpp b/sources/awesomewidgets/extscript.cpp index 27cfec8..d43f01b 100644 --- a/sources/awesomewidgets/extscript.cpp +++ b/sources/awesomewidgets/extscript.cpp @@ -28,17 +28,14 @@ #include "awdebug.h" -ExtScript::ExtScript(QWidget *_parent, const QString &_filePath) +ExtScript::ExtScript(QObject *_parent, const QString &_filePath) : AbstractExtItem(_parent, _filePath) - , ui(new Ui::ExtScript) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) ExtScript::readConfiguration(); readJsonFilters(); - ui->setupUi(this); - ExtScript::translate(); m_values[tag("custom")] = ""; @@ -58,7 +55,6 @@ ExtScript::~ExtScript() m_process->kill(); m_process->deleteLater(); disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(startProcess())); - delete ui; } @@ -66,7 +62,7 @@ ExtScript *ExtScript::copy(const QString &_fileName, const int _number) { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new ExtScript(dynamic_cast(parent()), _fileName); + auto item = new ExtScript(parent(), _fileName); copyDefaults(item); item->setExecutable(executable()); item->setNumber(_number); @@ -179,7 +175,7 @@ QString ExtScript::applyFilters(QString _value) const for (auto &filt : filters()) { qCInfo(LOG_LIB) << "Found filter" << filt; - QVariantMap filter = m_jsonFilters[filt].toMap(); + auto filter = m_jsonFilters[filt].toMap(); if (filter.isEmpty()) { qCWarning(LOG_LIB) << "Could not find filter" << _value << "in the json"; continue; @@ -225,7 +221,7 @@ void ExtScript::readConfiguration() void ExtScript::readJsonFilters() { - QString fileName = jsonFiltersFile(); + auto fileName = jsonFiltersFile(); QFile jsonFile(fileName); if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qCWarning(LOG_LIB) << "Could not open" << fileName; @@ -235,7 +231,7 @@ void ExtScript::readJsonFilters() jsonFile.close(); QJsonParseError error{}; - QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8(), &error); + auto jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8(), &error); if (error.error != QJsonParseError::NoError) { qCWarning(LOG_LIB) << "Parse error" << error.errorString(); return; @@ -256,10 +252,15 @@ QVariantHash ExtScript::run() } -int ExtScript::showConfiguration(const QVariant &_args) +int ExtScript::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::ExtScript(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_numberValue->setText(QString("%1").arg(number())); @@ -274,25 +275,29 @@ int ExtScript::showConfiguration(const QVariant &_args) ui->checkBox_linesFilter->setCheckState(filters().contains("newline") ? Qt::Checked : Qt::Unchecked); ui->checkBox_spaceFilter->setCheckState(filters().contains("space") ? Qt::Checked : Qt::Unchecked); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setNumber(ui->label_numberValue->text().toInt()); - setApiVersion(AW_EXTSCRIPT_API); - setExecutable(ui->lineEdit_command->text()); - setActive(ui->checkBox_active->checkState() == Qt::Checked); - setRedirect(static_cast(ui->comboBox_redirect->currentIndex())); - setCron(ui->lineEdit_schedule->text()); - setSocket(ui->lineEdit_socket->text()); - setInterval(ui->spinBox_interval->value()); - // filters - updateFilter("color", ui->checkBox_colorFilter->checkState() == Qt::Checked); - updateFilter("newline", ui->checkBox_linesFilter->checkState() == Qt::Checked); - updateFilter("space", ui->checkBox_spaceFilter->checkState() == Qt::Checked); + int ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setNumber(ui->label_numberValue->text().toInt()); + setApiVersion(AW_EXTSCRIPT_API); + setExecutable(ui->lineEdit_command->text()); + setActive(ui->checkBox_active->checkState() == Qt::Checked); + setRedirect(static_cast(ui->comboBox_redirect->currentIndex())); + setCron(ui->lineEdit_schedule->text()); + setSocket(ui->lineEdit_socket->text()); + setInterval(ui->spinBox_interval->value()); + // filters + updateFilter("color", ui->checkBox_colorFilter->checkState() == Qt::Checked); + updateFilter("newline", ui->checkBox_linesFilter->checkState() == Qt::Checked); + updateFilter("space", ui->checkBox_spaceFilter->checkState() == Qt::Checked); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -324,9 +329,9 @@ void ExtScript::startProcess() void ExtScript::updateValue() { qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode(); - QString qdebug = QString::fromUtf8(m_process->readAllStandardError()).trimmed(); + auto qdebug = QString::fromUtf8(m_process->readAllStandardError()).trimmed(); qCInfo(LOG_LIB) << "Error" << qdebug; - QString qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed(); + auto qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed(); qCInfo(LOG_LIB) << "Output" << qoutput; QString strValue; @@ -350,8 +355,10 @@ void ExtScript::updateValue() } -void ExtScript::translate() +void ExtScript::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_number->setText(i18n("Tag")); diff --git a/sources/awesomewidgets/extscript.h b/sources/awesomewidgets/extscript.h index 784a545..2479367 100644 --- a/sources/awesomewidgets/extscript.h +++ b/sources/awesomewidgets/extscript.h @@ -23,11 +23,6 @@ #include "abstractextitem.h" -namespace Ui -{ -class ExtScript; -} - class ExtScript : public AbstractExtItem { Q_OBJECT @@ -38,7 +33,7 @@ class ExtScript : public AbstractExtItem public: enum class Redirect { stdout2stderr = 0, nothing = 1, stderr2stdout = 2, swap = 3 }; - explicit ExtScript(QWidget *_parent = nullptr, const QString &_filePath = ""); + explicit ExtScript(QObject *_parent = nullptr, const QString &_filePath = ""); ~ExtScript() override; ExtScript *copy(const QString &_fileName, int _number) override; static QString jsonFiltersFile(); @@ -62,7 +57,7 @@ public slots: void readConfiguration() override; void readJsonFilters(); QVariantHash run() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private slots: @@ -71,8 +66,7 @@ private slots: private: QProcess *m_process = nullptr; - Ui::ExtScript *ui = nullptr; - void translate() override; + void translate(void *_ui) override; // properties QString m_executable = "/usr/bin/true"; QStringList m_filters = QStringList(); diff --git a/sources/awesomewidgets/extupgrade.cpp b/sources/awesomewidgets/extupgrade.cpp index 7f81025..3bbaeae 100644 --- a/sources/awesomewidgets/extupgrade.cpp +++ b/sources/awesomewidgets/extupgrade.cpp @@ -25,16 +25,13 @@ #include "awdebug.h" -ExtUpgrade::ExtUpgrade(QWidget *_parent, const QString &_filePath) +ExtUpgrade::ExtUpgrade(QObject *_parent, const QString &_filePath) : AbstractExtItem(_parent, _filePath) - , ui(new Ui::ExtUpgrade) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) ExtUpgrade::readConfiguration(); - ui->setupUi(this); - ExtUpgrade::translate(); m_values[tag("pkgcount")] = 0; @@ -53,7 +50,6 @@ ExtUpgrade::~ExtUpgrade() m_process->kill(); m_process->deleteLater(); disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(startProcess())); - delete ui; } @@ -61,7 +57,7 @@ ExtUpgrade *ExtUpgrade::copy(const QString &_fileName, const int _number) { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new ExtUpgrade(dynamic_cast(parent()), _fileName); + auto item = new ExtUpgrade(parent(), _fileName); copyDefaults(item); item->setExecutable(executable()); item->setFilter(filter()); @@ -149,10 +145,15 @@ QVariantHash ExtUpgrade::run() } -int ExtUpgrade::showConfiguration(const QVariant &_args) +int ExtUpgrade::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::ExtUpgrade(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_numberValue->setText(QString("%1").arg(number())); @@ -164,22 +165,26 @@ int ExtUpgrade::showConfiguration(const QVariant &_args) ui->lineEdit_socket->setText(socket()); ui->spinBox_interval->setValue(interval()); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setNumber(ui->label_numberValue->text().toInt()); - setApiVersion(AW_EXTUPGRADE_API); - setExecutable(ui->lineEdit_command->text()); - setFilter(ui->lineEdit_filter->text()); - setActive(ui->checkBox_active->checkState() == Qt::Checked); - setNull(ui->spinBox_null->value()); - setCron(ui->lineEdit_schedule->text()); - setSocket(ui->lineEdit_socket->text()); - setInterval(ui->spinBox_interval->value()); + auto ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setNumber(ui->label_numberValue->text().toInt()); + setApiVersion(AW_EXTUPGRADE_API); + setExecutable(ui->lineEdit_command->text()); + setFilter(ui->lineEdit_filter->text()); + setActive(ui->checkBox_active->checkState() == Qt::Checked); + setNull(ui->spinBox_null->value()); + setCron(ui->lineEdit_schedule->text()); + setSocket(ui->lineEdit_socket->text()); + setInterval(ui->spinBox_interval->value()); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -213,7 +218,7 @@ void ExtUpgrade::updateValue() qCInfo(LOG_LIB) << "Cmd returns" << m_process->exitCode(); qCInfo(LOG_LIB) << "Error" << m_process->readAllStandardError(); - QString qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed(); + auto qoutput = QString::fromUtf8(m_process->readAllStandardOutput()).trimmed(); m_values[tag("pkgcount")] = [this](const QString &output) { return filter().isEmpty() ? output.split('\n', Qt::SkipEmptyParts).count() - null() : output.split('\n', Qt::SkipEmptyParts).filter(QRegularExpression(filter())).count(); @@ -223,8 +228,10 @@ void ExtUpgrade::updateValue() } -void ExtUpgrade::translate() +void ExtUpgrade::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_number->setText(i18n("Tag")); diff --git a/sources/awesomewidgets/extupgrade.h b/sources/awesomewidgets/extupgrade.h index 62b0edd..30d72f3 100644 --- a/sources/awesomewidgets/extupgrade.h +++ b/sources/awesomewidgets/extupgrade.h @@ -23,11 +23,6 @@ #include "abstractextitem.h" -namespace Ui -{ -class ExtUpgrade; -} - class ExtUpgrade : public AbstractExtItem { Q_OBJECT @@ -36,7 +31,7 @@ class ExtUpgrade : public AbstractExtItem Q_PROPERTY(int null READ null WRITE setNull) public: - explicit ExtUpgrade(QWidget *_parent = nullptr, const QString &_filePath = ""); + explicit ExtUpgrade(QObject *_parent = nullptr, const QString &_filePath = ""); ~ExtUpgrade() override; ExtUpgrade *copy(const QString &_fileName, int _number) override; // get methods @@ -52,7 +47,7 @@ public: public slots: void readConfiguration() override; QVariantHash run() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private slots: @@ -61,8 +56,7 @@ private slots: private: QProcess *m_process = nullptr; - Ui::ExtUpgrade *ui = nullptr; - void translate() override; + void translate(void *_ui) override; // properties QString m_executable = "/usr/bin/true"; QString m_filter = ""; diff --git a/sources/awesomewidgets/extweather.cpp b/sources/awesomewidgets/extweather.cpp index 0e5f781..50b4d3a 100644 --- a/sources/awesomewidgets/extweather.cpp +++ b/sources/awesomewidgets/extweather.cpp @@ -29,20 +29,16 @@ #include "awdebug.h" #include "owmweatherprovider.h" -#include "yahooweatherprovider.h" -ExtWeather::ExtWeather(QWidget *_parent, const QString &_filePath) +ExtWeather::ExtWeather(QObject *_parent, const QString &_filePath) : AbstractExtItem(_parent, _filePath) - , ui(new Ui::ExtWeather) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; if (!_filePath.isEmpty()) ExtWeather::readConfiguration(); readJsonMap(); - ui->setupUi(this); - ExtWeather::translate(); m_values[tag("weatherId")] = 0; m_values[tag("weather")] = ""; @@ -67,7 +63,6 @@ ExtWeather::~ExtWeather() disconnect(this, SIGNAL(requestDataUpdate()), this, SLOT(sendRequest())); m_manager->deleteLater(); - delete ui; } @@ -75,7 +70,7 @@ ExtWeather *ExtWeather::copy(const QString &_fileName, const int _number) { qCDebug(LOG_LIB) << "File" << _fileName << "number" << _number; - auto *item = new ExtWeather(dynamic_cast(parent()), _fileName); + auto item = new ExtWeather(parent(), _fileName); copyDefaults(item); item->setCity(city()); item->setCountry(country()); @@ -102,7 +97,7 @@ QString ExtWeather::weatherFromInt(const int _id) const { qCDebug(LOG_LIB) << "Weather ID" << _id; - QVariantMap map = m_jsonMap[m_image ? "image" : "text"].toMap(); + auto map = m_jsonMap[m_image ? "image" : "text"].toMap(); return map.value(QString::number(_id), map["default"]).toString(); } @@ -236,7 +231,7 @@ void ExtWeather::readConfiguration() void ExtWeather::readJsonMap() { - QString fileName = jsonMapFile(); + auto fileName = jsonMapFile(); QFile jsonFile(fileName); if (!jsonFile.open(QIODevice::ReadOnly | QIODevice::Text)) { qCWarning(LOG_LIB) << "Could not open" << fileName; @@ -246,7 +241,7 @@ void ExtWeather::readJsonMap() jsonFile.close(); QJsonParseError error{}; - QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8(), &error); + auto jsonDoc = QJsonDocument::fromJson(jsonText.toUtf8(), &error); if (error.error != QJsonParseError::NoError) { qCWarning(LOG_LIB) << "Parse error" << error.errorString(); return; @@ -267,10 +262,15 @@ QVariantHash ExtWeather::run() } -int ExtWeather::showConfiguration(const QVariant &_args) +int ExtWeather::showConfiguration(QWidget *_parent, const QVariant &_args) { Q_UNUSED(_args) + auto dialog = new QDialog(_parent); + auto ui = new Ui::ExtWeather(); + ui->setupUi(dialog); + translate(ui); + ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); ui->label_numberValue->setText(QString("%1").arg(number())); @@ -284,24 +284,28 @@ int ExtWeather::showConfiguration(const QVariant &_args) ui->lineEdit_socket->setText(socket()); ui->spinBox_interval->setValue(interval()); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setNumber(ui->label_numberValue->text().toInt()); - setApiVersion(AW_EXTWEATHER_API); - setCity(ui->lineEdit_city->text()); - setCountry(ui->lineEdit_country->text()); - setProvider(static_cast(ui->comboBox_provider->currentIndex())); - setTs(ui->spinBox_timestamp->value()); - setImage(ui->checkBox_image->checkState() == Qt::Checked); - setActive(ui->checkBox_active->checkState() == Qt::Checked); - setCron(ui->lineEdit_schedule->text()); - setSocket(ui->lineEdit_socket->text()); - setInterval(ui->spinBox_interval->value()); + int ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setNumber(ui->label_numberValue->text().toInt()); + setApiVersion(AW_EXTWEATHER_API); + setCity(ui->lineEdit_city->text()); + setCountry(ui->lineEdit_country->text()); + setProvider(static_cast(ui->comboBox_provider->currentIndex())); + setTs(ui->spinBox_timestamp->value()); + setImage(ui->checkBox_image->checkState() == Qt::Checked); + setActive(ui->checkBox_active->checkState() == Qt::Checked); + setCron(ui->lineEdit_schedule->text()); + setSocket(ui->lineEdit_socket->text()); + setInterval(ui->spinBox_interval->value()); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -328,7 +332,7 @@ void ExtWeather::writeConfiguration() const void ExtWeather::sendRequest() { m_isRunning = true; - QNetworkReply *reply = m_manager->get(QNetworkRequest(m_providerObject->url())); + auto reply = m_manager->get(QNetworkRequest(m_providerObject->url())); new QReplyTimeout(reply, REQUEST_TIMEOUT); } @@ -342,14 +346,14 @@ void ExtWeather::weatherReplyReceived(QNetworkReply *_reply) m_isRunning = false; QJsonParseError error{}; - QJsonDocument jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); + auto jsonDoc = QJsonDocument::fromJson(_reply->readAll(), &error); _reply->deleteLater(); if (error.error != QJsonParseError::NoError) { qCWarning(LOG_LIB) << "Parse error" << error.errorString(); return; } - QVariantHash data = m_providerObject->parse(jsonDoc.toVariant().toMap()); + auto data = m_providerObject->parse(jsonDoc.toVariant().toMap()); if (data.isEmpty()) return; m_values = data; @@ -370,8 +374,10 @@ void ExtWeather::initProvider() } -void ExtWeather::translate() +void ExtWeather::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_number->setText(i18n("Tag")); diff --git a/sources/awesomewidgets/extweather.h b/sources/awesomewidgets/extweather.h index 0ba6c7f..c3dda30 100644 --- a/sources/awesomewidgets/extweather.h +++ b/sources/awesomewidgets/extweather.h @@ -42,7 +42,7 @@ class ExtWeather : public AbstractExtItem public: enum class Provider { OWM = 0, Yahoo = 1 }; - explicit ExtWeather(QWidget *_parent = nullptr, const QString &_filePath = ""); + explicit ExtWeather(QObject *_parent = nullptr, const QString &_filePath = ""); ~ExtWeather() override; ExtWeather *copy(const QString &_fileName, int _number) override; static QString jsonMapFile(); @@ -67,7 +67,7 @@ public slots: void readConfiguration() override; void readJsonMap(); QVariantHash run() override; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private slots: @@ -78,9 +78,8 @@ private: AbstractWeatherProvider *m_providerObject = nullptr; QNetworkAccessManager *m_manager = nullptr; bool m_isRunning = false; - Ui::ExtWeather *ui = nullptr; void initProvider(); - void translate() override; + void translate(void *_ui) override; // properties QString m_city = "London"; QString m_country = "uk"; diff --git a/sources/awesomewidgets/graphicalitem.cpp b/sources/awesomewidgets/graphicalitem.cpp index fa87f05..0c3964f 100644 --- a/sources/awesomewidgets/graphicalitem.cpp +++ b/sources/awesomewidgets/graphicalitem.cpp @@ -32,9 +32,8 @@ #include "graphicalitemhelper.h" -GraphicalItem::GraphicalItem(QWidget *_parent, const QString &_filePath) +GraphicalItem::GraphicalItem(QObject *_parent, const QString &_filePath) : AbstractExtItem(_parent, _filePath) - , ui(new Ui::GraphicalItem) { qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; @@ -53,21 +52,6 @@ GraphicalItem::GraphicalItem(QWidget *_parent, const QString &_filePath) if (!_filePath.isEmpty()) GraphicalItem::readConfiguration(); - ui->setupUi(this); - GraphicalItem::translate(); - - connect(ui->checkBox_custom, SIGNAL(stateChanged(int)), this, SLOT(changeValue(int))); - connect(ui->comboBox_type, SIGNAL(currentIndexChanged(int)), this, SLOT(changeCountState(int))); - connect(ui->toolButton_activeColor, SIGNAL(clicked()), this, SLOT(changeColor())); - connect(ui->toolButton_inactiveColor, SIGNAL(clicked()), this, SLOT(changeColor())); -} - - -GraphicalItem::~GraphicalItem() -{ - qCDebug(LOG_LIB) << __PRETTY_FUNCTION__; - - delete ui; } @@ -75,7 +59,7 @@ GraphicalItem *GraphicalItem::copy(const QString &_fileName, const int _number) { qCDebug(LOG_LIB) << "File" << _fileName << "with number" << _number; - auto *item = new GraphicalItem(dynamic_cast(parent()), _fileName); + auto item = new GraphicalItem(parent(), _fileName); copyDefaults(item); item->setActiveColor(activeColor()); item->setBar(bar()); @@ -100,7 +84,7 @@ QString GraphicalItem::image(const QVariant &value) m_scene->clear(); int scale[2] = {1, 1}; - float converted = GraphicalItemHelper::getPercents(value.toFloat(), minValue(), maxValue()); + auto converted = GraphicalItemHelper::getPercents(value.toFloat(), minValue(), maxValue()); // paint switch (m_type) { @@ -132,11 +116,11 @@ QString GraphicalItem::image(const QVariant &value) } // convert - QPixmap pixmap = m_view->grab().transformed(QTransform().scale(scale[0], scale[1])); + auto pixmap = m_view->grab().transformed(QTransform().scale(scale[0], scale[1])); QByteArray byteArray; QBuffer buffer(&byteArray); pixmap.save(&buffer, "PNG"); - QString url = QString("").arg(QString(byteArray.toBase64())); + auto url = QString("").arg(QString(byteArray.toBase64())); return url; } @@ -438,10 +422,20 @@ void GraphicalItem::readConfiguration() } -int GraphicalItem::showConfiguration(const QVariant &_args) +int GraphicalItem::showConfiguration(QWidget *_parent, const QVariant &_args) { qCDebug(LOG_LIB) << "Combobox arguments" << _args; - QStringList tags = _args.toStringList(); + auto tags = _args.toStringList(); + + auto dialog = new QDialog(_parent); + auto ui = new Ui::GraphicalItem(); + ui->setupUi(dialog); + translate(ui); + + connect(ui->checkBox_custom, &QCheckBox::stateChanged, [this, ui](const int state) { changeValue(ui, state); }); + connect(ui->comboBox_type, &QComboBox::currentIndexChanged, [this, ui](const int state) { changeCountState(ui, state); }); + connect(ui->toolButton_activeColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); }); + connect(ui->toolButton_inactiveColor, &QToolButton::clicked, [this, ui]() { changeColor(ui); }); ui->lineEdit_name->setText(name()); ui->lineEdit_comment->setText(comment()); @@ -476,25 +470,29 @@ int GraphicalItem::showConfiguration(const QVariant &_args) emit(ui->comboBox_type->currentIndexChanged(ui->comboBox_type->currentIndex())); emit(ui->checkBox_custom->stateChanged(ui->checkBox_custom->checkState())); - int ret = exec(); - if (ret != 1) - return ret; - setName(ui->lineEdit_name->text()); - setComment(ui->lineEdit_comment->text()); - setApiVersion(AW_GRAPHITEM_API); - setCount(ui->spinBox_count->value()); - setCustom(ui->checkBox_custom->isChecked()); - setBar(m_custom ? ui->lineEdit_customValue->text() : ui->comboBox_value->currentText()); - setMaxValue(static_cast(ui->doubleSpinBox_max->value())); - setMinValue(static_cast(ui->doubleSpinBox_min->value())); - setActiveColor(ui->lineEdit_activeColor->text()); - setInactiveColor(ui->lineEdit_inactiveColor->text()); - setType(static_cast(ui->comboBox_type->currentIndex())); - setDirection(static_cast(ui->comboBox_direction->currentIndex())); - setItemHeight(ui->spinBox_height->value()); - setItemWidth(ui->spinBox_width->value()); + int ret = dialog->exec(); + if (ret == 1) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setApiVersion(AW_GRAPHITEM_API); + setCount(ui->spinBox_count->value()); + setCustom(ui->checkBox_custom->isChecked()); + setBar(m_custom ? ui->lineEdit_customValue->text() : ui->comboBox_value->currentText()); + setMaxValue(static_cast(ui->doubleSpinBox_max->value())); + setMinValue(static_cast(ui->doubleSpinBox_min->value())); + setActiveColor(ui->lineEdit_activeColor->text()); + setInactiveColor(ui->lineEdit_inactiveColor->text()); + setType(static_cast(ui->comboBox_type->currentIndex())); + setDirection(static_cast(ui->comboBox_direction->currentIndex())); + setItemHeight(ui->spinBox_height->value()); + setItemWidth(ui->spinBox_width->value()); + + writeConfiguration(); + } + + dialog->deleteLater(); + delete ui; - writeConfiguration(); return ret; } @@ -524,23 +522,23 @@ void GraphicalItem::writeConfiguration() const } -void GraphicalItem::changeColor() +void GraphicalItem::changeColor(Ui::GraphicalItem *_ui) { QLineEdit *lineEdit; int state; - if (sender() == ui->toolButton_activeColor) { - lineEdit = ui->lineEdit_activeColor; - state = ui->comboBox_activeImageType->currentIndex(); + if (sender() == _ui->toolButton_activeColor) { + lineEdit = _ui->lineEdit_activeColor; + state = _ui->comboBox_activeImageType->currentIndex(); } else { - lineEdit = ui->lineEdit_inactiveColor; - state = ui->comboBox_inactiveImageType->currentIndex(); + lineEdit = _ui->lineEdit_inactiveColor; + state = _ui->comboBox_inactiveImageType->currentIndex(); } qCInfo(LOG_LIB) << "Using state" << state << "and lineEdit" << lineEdit; QString outputColor; if (state == 0) { - QColor color = GraphicalItemHelper::stringToColor(lineEdit->text()); - QColor newColor = QColorDialog::getColor(color, this, i18n("Select color"), QColorDialog::ShowAlphaChannel); + auto color = GraphicalItemHelper::stringToColor(lineEdit->text()); + auto newColor = QColorDialog::getColor(color, nullptr, i18n("Select color"), QColorDialog::ShowAlphaChannel); if (!newColor.isValid()) return; qCInfo(LOG_LIB) << "Selected color" << newColor; @@ -553,9 +551,9 @@ void GraphicalItem::changeColor() outputColor = QString("color://%1").arg(colorText.join(',')); } else if (state == 1) { - QString path = lineEdit->text(); - QString directory = QFileInfo(path).absolutePath(); - outputColor = QFileDialog::getOpenFileUrl(this, i18n("Select path"), directory, + auto path = lineEdit->text(); + auto directory = QFileInfo(path).absolutePath(); + outputColor = QFileDialog::getOpenFileUrl(nullptr, i18n("Select path"), directory, i18n("Images (*.png *.bpm *.jpg);;All files (*.*)")) .toString(); @@ -570,26 +568,28 @@ void GraphicalItem::changeColor() } -void GraphicalItem::changeCountState(const int _state) +void GraphicalItem::changeCountState(Ui::GraphicalItem *_ui, const int _state) { qCDebug(LOG_LIB) << "Current state is" << _state; // 3 is magic number. Actually 3 is Graph mode - ui->widget_count->setHidden(_state != 3); + _ui->widget_count->setHidden(_state != 3); } -void GraphicalItem::changeValue(const int _state) +void GraphicalItem::changeValue(Ui::GraphicalItem *_ui, const int _state) { qCDebug(LOG_LIB) << "Current state is" << _state; - ui->widget_value->setHidden(_state != Qt::Unchecked); - ui->widget_customValue->setHidden(_state == Qt::Unchecked); + _ui->widget_value->setHidden(_state != Qt::Unchecked); + _ui->widget_customValue->setHidden(_state == Qt::Unchecked); } -void GraphicalItem::translate() +void GraphicalItem::translate(void *_ui) { + auto ui = reinterpret_cast(_ui); + ui->label_name->setText(i18n("Name")); ui->label_comment->setText(i18n("Comment")); ui->label_number->setText(i18n("Tag")); diff --git a/sources/awesomewidgets/graphicalitem.h b/sources/awesomewidgets/graphicalitem.h index f9d6492..c92c9fd 100644 --- a/sources/awesomewidgets/graphicalitem.h +++ b/sources/awesomewidgets/graphicalitem.h @@ -52,8 +52,7 @@ public: enum class Direction { LeftToRight = 0, RightToLeft = 1 }; enum class Type { Horizontal = 0, Vertical = 1, Circle = 2, Graph = 3, Bars = 4 }; - explicit GraphicalItem(QWidget *_parent = nullptr, const QString &_filePath = ""); - ~GraphicalItem() override; + explicit GraphicalItem(QObject *_parent = nullptr, const QString &_filePath = ""); GraphicalItem *copy(const QString &_fileName, int _number) override; QString image(const QVariant &value); void initScene(); @@ -92,20 +91,19 @@ public: public slots: void readConfiguration() override; QVariantHash run() override { return {}; }; - int showConfiguration(const QVariant &_args) override; + int showConfiguration(QWidget *_parent, const QVariant &_args) override; void writeConfiguration() const override; private slots: - void changeColor(); - void changeCountState(int _state); - void changeValue(int _state); + void changeColor(Ui::GraphicalItem *_ui); + void changeCountState(Ui::GraphicalItem *_ui, int _state); + void changeValue(Ui::GraphicalItem *_ui, int _state); private: GraphicalItemHelper *m_helper = nullptr; QGraphicsScene *m_scene = nullptr; QGraphicsView *m_view = nullptr; - Ui::GraphicalItem *ui = nullptr; - void translate() override; + void translate(void *_ui) override; // properties QString m_bar = "cpu"; int m_count = 100;