File indexing completed on 2024-05-12 04:33:22
0001 /* 0002 * SPDX-FileCopyrightText: 2007-2011 Kare Sars <kare.sars@iki .fi> 0003 * SPDX-FileCopyrightText: 2014 Gregor Mitsch : port to KDE5 frameworks 0004 * 0005 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 // Local includes 0009 #include "labeledgamma.h" 0010 0011 #include <QGroupBox> 0012 0013 #include <KLocalizedString> 0014 #include <KSaneCore/Option> 0015 0016 namespace KSaneIface 0017 { 0018 0019 LabeledGamma::LabeledGamma(QWidget *parent, const QString &text, int max) 0020 : KSaneOptionWidget(parent, text) 0021 { 0022 initGamma(text, max); 0023 } 0024 0025 LabeledGamma::LabeledGamma(QWidget *parent, KSaneCore::Option *option, QColor color) 0026 : KSaneOptionWidget(parent, option) 0027 { 0028 0029 int max = option->maximumValue().toInt(); 0030 initGamma(option->title(), max); 0031 connect(this, &LabeledGamma::valuesChanged, option, &KSaneCore::Option::setValue); 0032 connect(option, &KSaneCore::Option::valueChanged, this, &LabeledGamma::setValues); 0033 setColor(color); 0034 setToolTip(option->description()); 0035 } 0036 0037 LabeledGamma::~LabeledGamma() 0038 { 0039 } 0040 0041 void LabeledGamma::initGamma(QString text, int max) 0042 { 0043 m_brightSlider = new LabeledSlider(this, i18n("Brightness"), -50, 50, 1); 0044 m_brightSlider->setValue(0); 0045 0046 m_contrastSlider = new LabeledSlider(this, i18n("Contrast"), -50, 50, 1); 0047 m_contrastSlider->setValue(0); 0048 0049 m_gammaSlider = new LabeledSlider(this, i18n("Gamma"), 30, 300, 1); 0050 m_gammaSlider->setValue(100); 0051 0052 // Calculate the size of the widgets in the sliders 0053 int labelMax = m_brightSlider->labelWidthHint(); 0054 labelMax = qMax(labelMax, m_contrastSlider->labelWidthHint()); 0055 labelMax = qMax(labelMax, m_gammaSlider->labelWidthHint()); 0056 // set the calculated widths 0057 m_brightSlider->setLabelWidth(labelMax); 0058 m_contrastSlider->setLabelWidth(labelMax); 0059 m_gammaSlider->setLabelWidth(labelMax); 0060 0061 m_maxValue = max; 0062 0063 m_gammaDisplay = new GammaDisp(this, &m_brightness, &m_contrast, &m_gamma, max); 0064 0065 QGroupBox *groupBox = new QGroupBox(text, this); 0066 QGridLayout *gr_lay = new QGridLayout(groupBox); 0067 0068 gr_lay->addWidget(m_brightSlider, 0, 0); 0069 gr_lay->addWidget(m_contrastSlider, 1, 0); 0070 gr_lay->addWidget(m_gammaSlider, 2, 0); 0071 gr_lay->addWidget(m_gammaDisplay, 0, 1, 3, 1); 0072 0073 m_label->hide(); 0074 m_layout->addWidget(groupBox, 1, 0, 1, 3); 0075 0076 connect(m_brightSlider, &LabeledSlider::valueChanged, this, &LabeledGamma::emitNewValues); 0077 connect(m_contrastSlider, &LabeledSlider::valueChanged, this, &LabeledGamma::emitNewValues); 0078 connect(m_gammaSlider, &LabeledSlider::valueChanged, this, &LabeledGamma::emitNewValues); 0079 0080 emitNewValues(); 0081 } 0082 0083 void LabeledGamma::setColor(const QColor &color) 0084 { 0085 if (m_gammaDisplay != nullptr) { 0086 m_gammaDisplay->setColor(color); 0087 } 0088 } 0089 0090 void LabeledGamma::setValues(const QVariant &values) 0091 { 0092 if (static_cast<QMetaType::Type>(values.type()) == QMetaType::QVariantList) { 0093 QVariantList copy = values.toList(); 0094 if (copy.size() != 3) { 0095 return; 0096 } 0097 0098 m_brightSlider->blockSignals(true); 0099 m_contrastSlider->blockSignals(true); 0100 m_gammaSlider->blockSignals(true); 0101 0102 m_brightness = copy.at(0).toInt(); 0103 m_contrast = copy.at(1).toInt(); 0104 m_gamma = copy.at(2).toInt(); 0105 0106 m_brightSlider->setValue(m_brightness); 0107 m_contrastSlider->setValue(m_contrast); 0108 m_gammaSlider->setValue(m_gamma); 0109 0110 emitNewValues(); 0111 0112 m_brightSlider->blockSignals(false); 0113 m_contrastSlider->blockSignals(false); 0114 m_gammaSlider->blockSignals(false); 0115 } 0116 } 0117 0118 void LabeledGamma::emitNewValues() 0119 { 0120 m_brightness = m_brightSlider->value(); 0121 m_contrast = m_contrastSlider->value(); 0122 m_gamma = m_gammaSlider->value(); 0123 QVariantList values = { m_brightness, m_contrast, m_gamma }; 0124 0125 m_gammaDisplay->update(); 0126 Q_EMIT valuesChanged(QVariant::fromValue(values)); 0127 } 0128 0129 bool LabeledGamma::getValues(int &brightness, int &contrast, int &gamma) 0130 { 0131 brightness = m_brightSlider->value(); 0132 contrast = m_contrastSlider->value(); 0133 gamma = m_gammaSlider->value(); 0134 return true; 0135 } 0136 0137 int LabeledGamma::maxValue() 0138 { 0139 return m_maxValue; 0140 } 0141 0142 } // NameSpace KSaneIface 0143 0144 #include "moc_labeledgamma.cpp"