Source Code (Use browser search to find items of interest.)

Class Index

kdelibs'KIntNumInput (./kdelibs/kdeui/knuminput.h:158)

class KIntNumInput : public KNumInput
{
    Q_OBJECT
public:
    /**
     * Constructor
     * It constructs a QSpinBox that allows the input of integer numbers
     * in the range of -INT_MAX to +INT_MAX. To set a descriptive label,
     * use setLabel(). To enforce the value being in a range and optionally to
     * attach a slider to it, use setRange().
     *
     * @param value  initial value for the control
     * @param base   numeric base used for display
     * @param parent parent QWidget
     * @param name   internal name for this widget
     */
    KIntNumInput(int value, QWidget* parent=0, int base = 10, const char *name=0);

    /**
     * Constructor
     *
     * the difference to the one above is the "below" parameter. It tells
     * this instance that it is visually put below some other KNumInput widget.
     * Note that these two KNumInput's need not to have the same parent widget
     * or be in the same layout group.
     * The effect is that it'll adjust it's layout in correspondence
     * with the layout of the other KNumInput's (you can build an arbitary long
     * chain).
     *
     * @param below  append KIntNumInput to the KNumInput chain
     * @param value  initial value for the control
     * @param base   numeric base used for display
     * @param parent parent QWidget
     * @param name   internal name for this widget
     */
    KIntNumInput(KNumInput* below, int value, QWidget* parent=0, int base = 10, const char *name=0);

    /**
     * Destructor
     *
     *
     */
    virtual ~KIntNumInput();

    /**
     * This method returns the minimum size necessary to display the
     * control. The minimum size is enough to show all the labels
     * in the current font (font change may invalidate the return value).
     *
     * @return the minimum size necessary to show the control
     */
    virtual QSize minimumSizeHint() const;

    /**
     * @return the current value
     */
    int value() const;

    /**
     * @param lower  lower bound on range
     * @param upper  upper bound on range
     * @param step   step size for the QSlider
     */
    void setRange(int lower, int upper, int step=1, bool slider=true);

    /**
     * Sets the special value text. If set, the SpinBox will display
     * this text instead of the numeric value whenever the current
     * value is equal to minVal(). Typically this is used for indicating
     * that the choice has a special (default) meaning.
     */
    void setSpecialValueText(const QString& text);

    /**
     * reimplemented for internal reasons.
     *
     */
    virtual void setLabel(QString label, int a = AlignLeft | AlignTop);

public slots:
    /**
     * Sets the value of the control.
     */
    void setValue(int);

    /**
     * sets the Suffix
     * @param suffix the suffix that should be used. QString::null to disable
     */
    void setSuffix(QString suffix);

    /**
     * sets the Prefix
     * @param prefix the prefix that should be used. QString::null to disable
     */
    void setPrefix(QString prefix);

    /**
     * sets focus to the edit widget and marks all text in if mark == true
     *
     */
    void setEditFocus( bool mark = true );

signals:
    void valueChanged(int);

protected slots:
    void spinValueChanged(int);

protected:
    void init(int value, int _base);
    virtual void doLayout();

    void resizeEvent ( QResizeEvent * );
    void resetEditBox();

    KIntSpinBox* m_spin;
    QSize        m_sizeSpin;

    class KIntNumInputPrivate;
    KIntNumInputPrivate *d;
};


/* ------------------------------------------------------------------------ */


kdelibs'KIntNumInput::KIntNumInput() (./kdelibs/kdeui/knuminput.cpp:233)

KIntNumInput::KIntNumInput(int val, QWidget *parent, int _base, const char *name)
    : KNumInput(parent, name)
{
    init(val, _base);

}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::KIntNumInput() (./kdelibs/kdeui/knuminput.cpp:261)

KIntNumInput::KIntNumInput(KNumInput* below, int val, QWidget* parent,
                           int _base, const char* name)
    : KNumInput(below, parent, name)
{
    init(val, _base);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::init() (./kdelibs/kdeui/knuminput.cpp:271)

void KIntNumInput::init(int val, int _base)
{
    m_spin = new KIntSpinBox(INT_MIN, INT_MAX, 1, val, _base, this, "KIntNumInput::KIntSpinBox");
    m_spin->setValidator(new KIntValidator(this, _base, "KNumInput::KIntValidtr"));
    connect(m_spin, SIGNAL(valueChanged(int)), SLOT(spinValueChanged(int)));

    setFocusProxy(m_spin);
    layout(true);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::spinValueChanged() (./kdelibs/kdeui/knuminput.cpp:284)

void KIntNumInput::spinValueChanged(int val)
{
    if(m_slider)
        m_slider->setValue(val);

    emit valueChanged(val);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::setRange() (./kdelibs/kdeui/knuminput.cpp:295)

void KIntNumInput::setRange(int lower, int upper, int step, bool slider)
{
    m_spin->setMinValue(lower);
    m_spin->setMaxValue(upper);
    m_spin->setLineStep(step);

    if(slider) {
		if (m_slider)
			m_slider->setRange(lower, upper);
		else {
			m_slider = new QSlider(lower, upper, step, m_spin->value(),
								   QSlider::Horizontal, this);
			m_slider->setTickmarks(QSlider::Below);
			connect(m_slider, SIGNAL(valueChanged(int)),
					m_spin, SLOT(setValue(int)));
		}

        int major = (upper-lower)/10;
		if ( major==0 ) major = step; // #### workaround Qt bug in 2.1-beta4
        m_slider->setSteps(step, major);
        m_slider->setTickInterval(major);
    }
    else {
        delete m_slider;
        m_slider = 0;
    }

    layout(true);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::setSuffix() (./kdelibs/kdeui/knuminput.cpp:328)

void KIntNumInput::setSuffix(QString suffix)
{
    m_spin->setSuffix(suffix);

    layout(true);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::setPrefix() (./kdelibs/kdeui/knuminput.cpp:338)

void KIntNumInput::setPrefix(QString prefix)
{
    m_spin->setPrefix(prefix);

    layout(true);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::setEditFocus() (./kdelibs/kdeui/knuminput.cpp:348)

void KIntNumInput::setEditFocus(bool mark)
{
    m_spin->setEditFocus(mark);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::minimumSizeHint() (./kdelibs/kdeui/knuminput.cpp:356)

QSize KIntNumInput::minimumSizeHint() const
{
    constPolish();

    int w = 0;
    int h = 0;

    // if in extra row, then count it here
    if(m_label && (m_alignment & (AlignBottom|AlignTop)))
        h += 4 + m_sizeLabel.height();
    else
        // no extra frame space
        h += m_sizeLabel.height();

    h += 2 + QMAX(m_sizeSpin.height(), m_sizeSlider.height());

    w += m_slider ? m_slider->sizeHint().width() + 8 : 0;
    w += m_colw1 + m_colw2;

    if(m_alignment & (AlignTop|AlignBottom))
        w = QMAX(w, m_sizeLabel.width() + 4);

    return QSize(w, h);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::doLayout() (./kdelibs/kdeui/knuminput.cpp:384)

void KIntNumInput::doLayout()
{
    m_sizeSpin = m_spin->sizeHint();

    m_colw2 = m_sizeSpin.width();
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::resizeEvent() (./kdelibs/kdeui/knuminput.cpp:394)

void KIntNumInput::resizeEvent(QResizeEvent* e)
{
    int w = m_colw1;
    int h = 0;

    if(m_label && (m_alignment & AlignTop)) {
        m_label->setGeometry(0, 0, e->size().width(), m_sizeLabel.height());
        h += m_sizeLabel.height() + 4;
    }

    if(m_label && (m_alignment & AlignVCenter))
        m_label->setGeometry(0, 0, w, m_sizeSpin.height());

    m_spin->setGeometry(w, h, m_slider ? m_colw2 : QMAX(m_colw2, e->size().width() - w), m_sizeSpin.height());
    w += m_colw2 + 8;

    if(m_slider)
        m_slider->setGeometry(w, h, e->size().width() - w, m_sizeSpin.height());

    h += m_sizeSpin.height() + 2;

    if(m_label && (m_alignment & AlignBottom))
        m_label->setGeometry(0, h, m_sizeLabel.width(), m_sizeLabel.height());
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::~KIntNumInput() (./kdelibs/kdeui/knuminput.cpp:422)

KIntNumInput::~KIntNumInput()
{
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::setValue() (./kdelibs/kdeui/knuminput.cpp:429)

void KIntNumInput::setValue(int val)
{
    if(m_slider)
        m_slider->setValue(val);

    m_spin->setValue(val);
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::value() (./kdelibs/kdeui/knuminput.cpp:440)

int  KIntNumInput::value() const
{
    return m_spin->value();
}


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::setSpecialValueText() (./kdelibs/kdeui/knuminput.cpp:448)

void KIntNumInput::setSpecialValueText(const QString& text)
{
    m_spin->setSpecialValueText(text);
    layout(true);
};


// -----------------------------------------------------------------------------


kdelibs'KIntNumInput::setLabel() (./kdelibs/kdeui/knuminput.cpp:457)

void KIntNumInput::setLabel(QString label, int a)
{
    KNumInput::setLabel(label, a);

    if(m_label)
        m_label->setBuddy(m_spin);
}


// -----------------------------------------------------------------------------

/**
 *
 * This is just a small wrapper mainly to enable mouseWheel support
 *
 */