Sat, 08 Apr 2023 15:03:54 +0300
Changed color button to a line edit+button combination
#include <ui_colorindexinput.h> #include "src/uiutilities.h" #include "src/widgets/colorindexinput.h" #include "src/widgets/colorselectdialog.h" ColorIndexInput::ColorIndexInput(QWidget *parent) : QWidget{parent}, ui{*new Ui_ColorIndexInput} { static const ColorTable emptyColorTable; this->colorTable = &emptyColorTable; this->ui.setupUi(this); connect(this->ui.button, &QPushButton::clicked, [this]() { ColorSelectDialog dialog{*this->colorTable, this}; const int result = dialog.exec(); if (result == QDialog::Accepted) { this->ui.index->setValue(dialog.currentColor().index); } }); connect(this->ui.index, qOverload<int>(&QSpinBox::valueChanged), [this](int value) { const opt<QString> displayName = colorDisplayName({value}, *this->colorTable); const opt<QColor> face = colorFace({value}, *this->colorTable); this->ui.button->setText(displayName.value_or(tr("???"))); if (face.has_value()) { uiutilities::colorizeWidget(this->ui.button, *face); } Q_EMIT this->colorChanged({value}); }); this->ui.index->setValue(MAIN_COLOR.index); } ColorIndexInput::~ColorIndexInput() { delete &this->ui; } ldraw::Color ColorIndexInput::selectedColor() const { return {this->ui.index->value()}; } void ColorIndexInput::setSelectedColor(ldraw::Color color) { this->ui.index->setValue(color.index); }