--- a/widgets/colorbutton.cpp Sat Apr 08 15:11:39 2023 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -#include <QColorDialog> -#include <QHBoxLayout> -#include "widgets/colorbutton.h" - -ColorEdit::ColorEdit(const QColor& color, QWidget* parent) : - ColorEdit{parent} -{ - this->setColor(color); -} - -ColorEdit::ColorEdit(QWidget* parent) : - QWidget{parent}, - lineEdit{new QLineEdit{this}}, - button{new QPushButton{"…", this}} -{ - auto*const layout = new QHBoxLayout{}; - layout->addWidget(this->lineEdit); - layout->addWidget(this->button); - layout->setStretch(0, 1); - layout->setStretch(1, 0); - this->setLayout(layout); - connect(this->button, &QPushButton::clicked, [&](){ - const QColor color = QColorDialog::getColor(this->color(), this->parentWidget()); - if (color.isValid()) { - this->setColor(color); - } - }); - connect(this->lineEdit, &QLineEdit::textChanged, [&]{ - const QColor color = this->color(); - const qreal lightness = color.lightnessF(); - const QColor foreground = lightness < 0.4 ? Qt::white : Qt::black; - this->setStyleSheet( - QStringLiteral("QLineEdit{background-color: %1; color: %2;}") - .arg(color.name()) - .arg(foreground.name())); - Q_EMIT this->colorChanged(this->color()); - }); - this->setColor(Qt::black); -} - -QColor ColorEdit::color() const -{ - return QColor{this->lineEdit->text()}; -} - -void ColorEdit::setColor(const QColor& color) -{ - if (color.isValid() and this->color() != color) { - this->lineEdit->setText(color.name()); - } -}