widgets/colorbutton.cpp

Sat, 08 Apr 2023 12:55:11 +0300

author
Teemu Piippo <teemu.s.piippo@gmail.com>
date
Sat, 08 Apr 2023 12:55:11 +0300
changeset 343
4a82990affd5
parent 264
76a025db4948
child 344
a24da8de2a3b
permissions
-rw-r--r--

Fix BFC formatting not working due to being evaluated after comment format

#include <QColorDialog>
#include <QStyleFactory>
#include "widgets/colorbutton.h"

ColorButton::ColorButton(const QColor& color, QWidget* parent) :
	ColorButton{parent}
{
	this->setColor(color);
}

ColorButton::ColorButton(QWidget* parent) :
	QPushButton{parent}
{
	connect(this, &QPushButton::clicked, [&](){
		const QColor color = QColorDialog::getColor(this->storedSelectedColor, this->parentWidget());
		if (color.isValid()) {
			this->setColor(color);
		}
	});
	this->setColor(Qt::black);
}

const QColor& ColorButton::color() const
{
	return this->storedSelectedColor;
}

void ColorButton::setColor(const QColor& color)
{
	if (this->storedSelectedColor != color) {
		this->storedSelectedColor = color;
		this->setText(color.name());
		QPalette palette{color};
		const qreal lightness = color.lightnessF();
		const QColor foreground = lightness < 0.4 ? Qt::white : Qt::black;
		palette.setColor(QPalette::ButtonText, foreground);
		this->setPalette(palette);
		this->setStyle(QStyleFactory::create("Fusion"));
		Q_EMIT this->colorChanged(this->storedSelectedColor);
	}
}

mercurial