8#include "labeledslider.h"
16#include <KPluralHandlingSpinBox>
17#include <KSaneCore/Option>
22 int min,
int max,
int ste)
25 initSlider(min, max, ste);
33 int stepValue = option->
stepValue().toInt();
35 initSlider(minValue, maxValue, stepValue);
41 case KSaneCore::Option::UnitPixel:
42 unitSuffix =
ki18ncp(
"SpinBox parameter unit",
" Pixel",
" Pixels");
44 case KSaneCore::Option::UnitBit:
45 unitSuffix =
ki18ncp(
"SpinBox parameter unit",
" Bit",
" Bits");
47 case KSaneCore::Option::UnitMilliMeter:
48 unitSuffix =
ki18ncp(
"SpinBox parameter unit (Millimeter)",
" mm",
" mm");
50 case KSaneCore::Option::UnitDPI:
51 unitSuffix =
ki18ncp(
"SpinBox parameter unit (Dots Per Inch)",
" DPI",
" DPI");
53 case KSaneCore::Option::UnitPercent:
54 unitSuffix =
ki18ncp(
"SpinBox parameter unit (Percentage)",
" %",
" %");
56 case KSaneCore::Option::UnitMicroSecond:
57 unitSuffix =
ki18ncp(
"SpinBox parameter unit (Microseconds)",
" µs",
" µs");
59 case KSaneCore::Option::UnitSecond:
60 unitSuffix =
ki18ncp(
"SpinBox parameter unit (seconds)",
" s",
" s");
68 setLabelText(option->
title());
76LabeledSlider::~LabeledSlider()
80void LabeledSlider::initSlider(
int minValue,
int maxValue,
int stepValue)
87 m_slider =
new QSlider(
this);
89 m_slider->setMinimum(minValue);
90 m_slider->setMaximum(maxValue);
91 m_slider->setSingleStep(m_step);
93 m_spinb =
new KPluralHandlingSpinBox(
this);
94 m_spinb->setMinimum(minValue);
95 m_spinb->setMaximum(maxValue);
96 m_slider->setSingleStep(m_step);
97 m_spinb->setValue(maxValue);
100 m_spinb->setValue(minValue);
102 m_spinb->setValue(minValue);
103 m_label->setBuddy(m_spinb);
109 m_layout->addWidget(m_slider, 0, 2);
110 m_layout->addWidget(m_spinb, 0, 1);
111 m_layout->setColumnStretch(1, 0);
112 m_layout->setColumnStretch(2, 50);
117 m_spinb->setSuffix(text);
123 int value = val.
toInt(&ok);
127 if (value != m_slider->value()) {
128 m_slider->setValue(value);
129 }
else if (value != m_spinb->value()) {
130 m_spinb->setValue(value);
134void LabeledSlider::setRange(
int min,
int max)
141void LabeledSlider::setStep(
int st)
147 m_slider->setSingleStep(m_step);
148 m_spinb->setSingleStep(m_step);
151void LabeledSlider::syncValues(
int value)
153 if (value != m_spinb->value()) {
154 m_spinb->setValue(value);
155 }
else if (value != m_slider->value()) {
157 if ((value - m_slider->minimum()) % m_step != 0) {
158 if (value > m_spinb->value()) {
159 m_slider->setValue(m_slider->value() + (m_step - (value - m_spinb->value())));
161 m_slider->setValue(m_slider->value() - (m_step - (m_spinb->value() - value)));
165 m_slider->setValue(value);
172void LabeledSlider::fixValue()
175 int rest = (m_slider->value() - m_slider->minimum()) % m_step;
178 if (rest > (m_step / 2)) {
179 m_slider->setValue(m_slider->value() + (m_step - rest));
181 m_slider->setValue(m_slider->value() - rest);
183 m_spinb->setValue(m_slider->value());
186int LabeledSlider::value()
const
188 return (m_slider->value());
193#include "moc_labeledslider.cpp"
void valueChanged(const QVariant &value)
OptionUnit valueUnit() const
QVariant minimumValue() const
bool setValue(const QVariant &value)
QVariant stepValue() const
QString description() const
QVariant maximumValue() const
void setValue(const QVariant &val)
Set the slider value.
void setSuffix(const KLocalizedString &text)
Set the unit.
void valueChanged(const QVariant &val)
Emit the slider value changes.
LabeledSlider(QWidget *parent, const QString &text, int min, int max, int st)
Create the slider.
KLocalizedString KI18N_EXPORT ki18ncp(const char *context, const char *singular, const char *plural)
void setRange(int min, int max)
void valueChanged(int value)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QObject * parent() const const
void setRange(int minimum, int maximum)
int toInt(bool *ok) const const