32#include <tqapplication.h>
37#include <tqpopupmenu.h>
38#include <tqlineedit.h>
40#include <tqvalidator.h>
46#include <karrowbutton.h>
49#include "knumvalidator.h"
50#include "kis_int_spinbox.h"
52class KisIntSpinbox::KisIntSpinboxPrivate {
55 KIntSpinBox * m_numinput;
56 KisPopupSlider *m_slider;
57 KArrowButton *m_arrow;
59 TQValidator *m_validator;
65 : TQWidget(parent, name)
71 : TQWidget(parent, name)
76void KisIntSpinbox::init(
int val)
78 d =
new KisIntSpinboxPrivate( );
79 TQBoxLayout * l =
new TQHBoxLayout(
this );
81 l->insertStretch(0, 1);
82 d->m_numinput =
new KIntSpinBox(0, 100, 1, val, 10,
this,
"KisIntSpinbox::KIntSpinBox");
84 d->m_numinput->setSizePolicy(TQSizePolicy::MinimumExpanding, TQSizePolicy::Fixed);
85 d->m_numinput->setSuffix(
"%");
86 l->addWidget( d->m_numinput );
88 d->m_slider =
new KisPopupSlider(0, 100, 10, val, TQt::Horizontal,
this);
89 d->m_slider->setFrameStyle(TQFrame::Panel|TQFrame::Raised);
91 d->m_arrow =
new KArrowButton(
this, TQt::DownArrow);
92 d->m_arrow->setPopup(d->m_slider);
93 d->m_arrow->setMaximumHeight( fontMetrics().height() + 4);
94 d->m_arrow->setEnabled(
true);
96 l->addWidget( d->m_arrow );
100 setFocusProxy(d->m_numinput);
103 connect(d->m_numinput, TQ_SIGNAL(
valueChanged(
int)), TQ_SLOT(spinboxValueChanged(
int)));
104 connect(d->m_slider, TQ_SIGNAL(
valueChanged(
int)), TQ_SLOT(sliderValueChanged(
int)));
105 connect(d->m_slider, TQ_SIGNAL(aboutToShow()), TQ_SLOT(slotAboutToShow()));
106 connect(d->m_slider, TQ_SIGNAL(aboutToHide()), TQ_SLOT(slotAboutToHide()));
108 connect(&(d->m_timer), TQ_SIGNAL(timeout()),
this, TQ_SLOT(slotTimeout()));
111void KisIntSpinbox::spinboxValueChanged(
int val)
114 d->m_timer.start(300,
true);
118void KisIntSpinbox::sliderValueChanged(
int val)
127 upper = kMax(upper, lower);
128 lower = kMin(upper, lower);
129 d->m_slider->setRange(lower, upper);
141 return d->m_slider->minValue();
151 return d->m_slider->maxValue();
161 d->m_slider->blockSignals(
true);
162 d->m_slider->setValue(val);
163 d->m_slider->blockSignals(
false);
165 d->m_numinput->blockSignals(
true);
166 d->m_numinput->setValue(val);
167 d->m_numinput->blockSignals(
false);
172 return d->m_numinput->value();
175void KisIntSpinbox::setLabel(
const TQString & )
179void KisIntSpinbox::slotAboutToShow()
181 d->m_prevValue =
value();
184void KisIntSpinbox::slotAboutToHide()
186 if( d->m_prevValue !=
value() )
189 d->m_prevValue =
value();
193void KisIntSpinbox::slotTimeout()
198#include "kis_int_spinbox.moc"
void valueChanged(int value)
Emitted every time the value changes (by calling setValue() or by user interaction).
void finishedChanging(int previous, int value)
Emitted after the slider has been hidden, if the value was changed while it was shown.
virtual ~KisIntSpinbox()
Destructor.
void setRange(int min, int max, int step=1)
void setValue(int)
Sets the value of the control.
void setMinValue(int min)
Sets the minimum value.
KisIntSpinbox(TQWidget *parent=0, const char *name=0)
Constructs an input control for integer values with base 10 and initial value 0.
void setMaxValue(int max)
Sets the maximum value.