- m_edit = new KIntSpinBox(this);
- if (!suffix.isEmpty()) m_edit->setSuffix(suffix);
-
- m_edit->setButtonSymbols(QAbstractSpinBox::NoButtons);
- m_edit->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
- m_edit->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::MinimumExpanding);
- m_edit->setRange(m_minimum, m_maximum);
- l->addWidget(m_edit);
- connect(m_edit, SIGNAL(valueChanged(int)), this, SLOT(slotSetValue(int)));
- connect(m_label, SIGNAL(valueChanged(int,bool)), this, SLOT(setValue(int,bool)));
+ if (decimals == 0) {
+ m_label->setMaximum(max - min);
+ m_label->setStep(1);
+ m_intEdit = new QSpinBox(this);
+ m_intEdit->setObjectName("dragBox");
+ m_intEdit->setFocusPolicy(Qt::StrongFocus);
+ if (!suffix.isEmpty()) m_intEdit->setSuffix(suffix);
+ m_intEdit->setKeyboardTracking(false);
+ m_intEdit->setButtonSymbols(QAbstractSpinBox::NoButtons);
+ m_intEdit->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+ m_intEdit->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
+ m_intEdit->setRange((int) m_minimum, (int)m_maximum);
+ l->addWidget(m_intEdit);
+ connect(m_intEdit, SIGNAL(valueChanged(int)), this, SLOT(slotSetValue(int)));
+ connect(m_intEdit, SIGNAL(editingFinished()), this, SLOT(slotEditingFinished()));
+ } else {
+ m_doubleEdit = new QDoubleSpinBox(this);
+ m_doubleEdit->setDecimals(decimals);
+ m_doubleEdit->setFocusPolicy(Qt::StrongFocus);
+ m_doubleEdit->setObjectName("dragBox");
+ if (!suffix.isEmpty()) m_doubleEdit->setSuffix(suffix);
+ m_doubleEdit->setKeyboardTracking(false);
+ m_doubleEdit->setButtonSymbols(QAbstractSpinBox::NoButtons);
+ m_doubleEdit->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+ m_doubleEdit->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
+ m_doubleEdit->setRange(m_minimum, m_maximum);
+ double factor = 100;
+ if (m_maximum - m_minimum > 10000) factor = 1000;
+ m_label->setStep(1);
+ m_doubleEdit->setSingleStep((m_maximum - m_minimum) / factor);
+ l->addWidget(m_doubleEdit);
+ connect(m_doubleEdit, SIGNAL(valueChanged(double)), this, SLOT(slotSetValue(double)));
+ connect(m_doubleEdit, SIGNAL(editingFinished()), this, SLOT(slotEditingFinished()));
+ }
+
+ connect(m_label, SIGNAL(valueChanged(double,bool)), this, SLOT(setValueFromProgress(double,bool)));
+ connect(m_label, SIGNAL(resetValue()), this, SLOT(slotReset()));