From 87b8713b5e09ebd210e3e98f2edd81d2551ee2b8 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 4 Apr 2020 04:17:34 +1100 Subject: [PATCH] colorbutton: implemented management for the color that this button displays --- app/widget/colorbutton/colorbutton.cpp | 38 ++++++++++++++++++++++++-- app/widget/colorbutton/colorbutton.h | 11 +++++++- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/app/widget/colorbutton/colorbutton.cpp b/app/widget/colorbutton/colorbutton.cpp index f0ffb3599..4ea30a6d6 100644 --- a/app/widget/colorbutton/colorbutton.cpp +++ b/app/widget/colorbutton/colorbutton.cpp @@ -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())); } diff --git a/app/widget/colorbutton/colorbutton.h b/app/widget/colorbutton/colorbutton.h index 4bd1f8239..2252ea8ca 100644 --- a/app/widget/colorbutton/colorbutton.h +++ b/app/widget/colorbutton/colorbutton.h @@ -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