]> git.sesse.net Git - kdenlive/blobdiff - src/dragvalue.cpp
Some more cleanup in monitors, improve capture fullscreen
[kdenlive] / src / dragvalue.cpp
index 8ef11178385b3a6a31eae3c02137951befc040c0..a69f6bd0bbde2399ca8f09cc7a366888256ee2d3 100644 (file)
@@ -61,10 +61,11 @@ DragValue::DragValue(const QString &label, double defaultValue, int decimals, do
     QHBoxLayout *l = new QHBoxLayout;
     l->setSpacing(0);
     l->setContentsMargins(0, 0, 0, 0);
-    m_label = new CustomLabel(label, showSlider, this);
+    m_label = new CustomLabel(label, showSlider, m_maximum - m_minimum, this);
     l->addWidget(m_label);
     if (decimals == 0) {
-        m_label->setStep(m_label->maximum() / (max - min));
+        m_label->setMaximum(max - min);
+        m_label->setStep(1);
         m_intEdit = new QSpinBox(this);
         m_intEdit->setObjectName("dragBox");
         if (!suffix.isEmpty()) m_intEdit->setSuffix(suffix);
@@ -87,7 +88,10 @@ DragValue::DragValue(const QString &label, double defaultValue, int decimals, do
         m_doubleEdit->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
         m_doubleEdit->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
         m_doubleEdit->setRange(m_minimum, m_maximum);
-        m_doubleEdit->setSingleStep((m_maximum - m_minimum) / 100.0);
+        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()));
@@ -247,7 +251,7 @@ void DragValue::slotSetValue(double value)
 void DragValue::setValueFromProgress(double value, bool final)
 {
     value = m_minimum + value * (m_maximum - m_minimum) / m_label->maximum();
-    if (m_decimals == 0) setValue((int) (value + 0.5), final);
+    if (m_decimals == 0) setValue(qRound(value), final);
     else setValue(value, final);
 }
 
@@ -338,7 +342,7 @@ void DragValue::setInTimelineProperty(bool intimeline)
     
 }
 
-CustomLabel::CustomLabel(const QString &label, bool showSlider, QWidget* parent) :
+CustomLabel::CustomLabel(const QString &label, bool showSlider, int range, QWidget* parent) :
     QProgressBar(parent),
     m_dragMode(false),
     m_showSlider(showSlider),
@@ -350,9 +354,9 @@ CustomLabel::CustomLabel(const QString &label, bool showSlider, QWidget* parent)
     setFocusPolicy(Qt::ClickFocus);
     setCursor(Qt::PointingHandCursor);
     setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Maximum);
-    setRange(0, 1000);
-    
-    if (!showSlider) {
+    if (showSlider) setRange(0, 1000);
+    else {
+        setRange(0, range);
         QSize sh;
         const QFontMetrics &fm = fontMetrics();
         sh.setWidth(fm.width(" " + label + " "));
@@ -460,13 +464,13 @@ void CustomLabel::slotValueDec(double factor)
 
 void CustomLabel::setProgressValue(double value)
 {
-    setValue((int) (value + 0.5));
+    setValue(qRound(value));
 }
 
 void CustomLabel::setNewValue(double value, bool update)
 {
-    setValue((int) (value + 0.5));
-    emit valueChanged((int) (value + 0.5), update);
+    setValue(qRound(value));
+    emit valueChanged(qRound(value), update);
 }
 
 void CustomLabel::setStep(double step)
@@ -475,4 +479,3 @@ void CustomLabel::setStep(double step)
 }
 
 #include "dragvalue.moc"
-