colorbutton: implemented management for the color that this button displays

This commit is contained in:
itsmattkc
2020-04-04 04:17:34 +11:00
parent 0801488c89
commit 87b8713b5e
2 changed files with 45 additions and 4 deletions
+35 -3
View File
@@ -4,7 +4,8 @@
ColorButton::ColorButton(ColorManager* color_manager, QWidget *parent) :
QPushButton(parent),
color_manager_(color_manager)
color_manager_(color_manager),
color_processor_(nullptr)
{
color_ = Color(1.0f, 1.0f, 1.0f);
@@ -13,17 +14,48 @@ ColorButton::ColorButton(ColorManager* color_manager, QWidget *parent) :
UpdateColor();
}
const Color &ColorButton::GetColor() const
{
return color_;
}
void ColorButton::SetColor(const Color &c)
{
color_ = c;
UpdateColor();
}
void ColorButton::ShowColorDialog()
{
ColorDialog cd(color_manager_, color_, this);
ColorDialog cd(color_manager_, color_, cm_input_, this);
if (cd.exec() == QDialog::Accepted) {
color_ = cd.GetSelectedColor();
cm_input_ = cd.GetColorSpaceInput();
color_processor_ = ColorProcessor::Create(color_manager_->GetConfig(),
cd.GetColorSpaceInput(),
cd.GetColorSpaceDisplay(),
cd.GetColorSpaceView(),
cd.GetColorSpaceLook());
UpdateColor();
emit ColorChanged(color_);
}
}
void ColorButton::UpdateColor()
{
setStyleSheet(QStringLiteral("ColorButton {background: %1;}").arg(color_.toQColor().name()));
QColor managed;
if (color_processor_) {
managed = color_processor_->ConvertColor(color_).toQColor();
} else {
managed = color_.toQColor();
}
setStyleSheet(QStringLiteral("ColorButton {background: %1;}").arg(managed.name()));
}
+10 -1
View File
@@ -12,8 +12,13 @@ class ColorButton : public QPushButton
public:
ColorButton(ColorManager* color_manager, QWidget* parent = nullptr);
const Color& GetColor() const;
public slots:
void SetColor(const Color& c);
signals:
void ColorChanged();
void ColorChanged(const Color& c);
private slots:
void ShowColorDialog();
@@ -25,6 +30,10 @@ private:
Color color_;
QString cm_input_;
ColorProcessorPtr color_processor_;
};
#endif // COLORBUTTON_H