colorbutton: implemented management for the color that this button displays
This commit is contained in:
@@ -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()));
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user