]> git.sesse.net Git - kdenlive/blobdiff - src/keyframeedit.cpp
* Set document as modified when changing project metadata: http://kdenlive.org/mantis...
[kdenlive] / src / keyframeedit.cpp
index 317cd90c818927bfce327fd4f04ea5cf1d4e95f1..dfa4b5781124d42e581c2a592c2a15ce0f136d45 100644 (file)
@@ -116,9 +116,9 @@ void KeyframeEdit::addParameter(QDomElement e, int activeKeyframe)
     keyframe_list->setHorizontalHeaderItem(columnId, new QTableWidgetItem(paramName));
 
     DoubleParameterWidget *doubleparam = new DoubleParameterWidget(paramName, 0,
-            m_params.at(columnId).attribute("min").toInt(), m_params.at(columnId).attribute("max").toInt(),
-            m_params.at(columnId).attribute("default").toInt(), comment, columnId, m_params.at(columnId).attribute("suffix"), this);
-    connect(doubleparam, SIGNAL(valueChanged(int)), this, SLOT(slotAdjustKeyframeValue(int)));
+            m_params.at(columnId).attribute("min").toDouble(), m_params.at(columnId).attribute("max").toDouble(),
+            m_params.at(columnId).attribute("default").toDouble(), comment, columnId, m_params.at(columnId).attribute("suffix"), m_params.at(columnId).attribute("decimals").toInt(), this);
+    connect(doubleparam, SIGNAL(valueChanged(double)), this, SLOT(slotAdjustKeyframeValue(double)));
     connect(this, SIGNAL(showComments(bool)), doubleparam, SLOT(slotShowComment(bool)));
     connect(doubleparam, SIGNAL(setInTimeline(int)), this, SLOT(slotUpdateVisibleParameter(int)));
     m_slidersLayout->addWidget(doubleparam, columnId, 0);
@@ -126,7 +126,7 @@ void KeyframeEdit::addParameter(QDomElement e, int activeKeyframe)
         doubleparam->setInTimelineProperty(true);
     }
 
-    QStringList frames = e.attribute("keyframes").split(";", QString::SkipEmptyParts);
+    QStringList frames = e.attribute("keyframes").split(';', QString::SkipEmptyParts);
     for (int i = 0; i < frames.count(); i++) {
         int frame = frames.at(i).section(':', 0, 0).toInt();
         bool found = false;
@@ -242,6 +242,7 @@ void KeyframeEdit::slotGenerateParams(int row, int column)
 
         for (int col = 0; col < keyframe_list->horizontalHeader()->count(); col++) {
             item = keyframe_list->item(row, col);
+           if (!item) continue;
             int v = item->text().toInt();
             if (v >= m_params.at(col).attribute("max").toInt())
                 item->setText(m_params.at(col).attribute("max"));
@@ -333,7 +334,7 @@ void KeyframeEdit::slotAdjustKeyframeInfo(bool seek)
         max = getPos(below->row()) - 1;
 
     m_position->blockSignals(true);
-    m_position->setRange(min, max);
+    m_position->setRange(min, max, true);
     m_position->setPosition(getPos(item->row()));
     m_position->blockSignals(false);
 
@@ -343,7 +344,7 @@ void KeyframeEdit::slotAdjustKeyframeInfo(bool seek)
             continue;
         doubleparam->blockSignals(true);
         if (keyframe_list->item(item->row(), col)) {
-            doubleparam->setValue(keyframe_list->item(item->row(), col)->text().toInt());
+            doubleparam->setValue(keyframe_list->item(item->row(), col)->text().toDouble());
         } else {
             kDebug() << "Null pointer exception caught: http://www.kdenlive.org/mantis/view.php?id=1771";
         }
@@ -362,7 +363,7 @@ void KeyframeEdit::slotAdjustKeyframePos(int value)
         emit seekToPos(value - m_min);
 }
 
-void KeyframeEdit::slotAdjustKeyframeValue(int value)
+void KeyframeEdit::slotAdjustKeyframeValue(double value)
 {
     Q_UNUSED(value)
 
@@ -371,9 +372,9 @@ void KeyframeEdit::slotAdjustKeyframeValue(int value)
         DoubleParameterWidget *doubleparam = static_cast <DoubleParameterWidget*>(m_slidersLayout->itemAtPosition(col, 0)->widget());
         if (!doubleparam)
             continue;
-        int val = doubleparam->getValue();
+        double val = doubleparam->getValue();
         QTableWidgetItem *nitem = keyframe_list->item(item->row(), col);
-        if (nitem && nitem->text().toInt() != val)
+        if (nitem && nitem->text().toDouble() != val)
             nitem->setText(QString::number(val));
     }
     //keyframe_list->item(item->row() - 1, item->column());
@@ -462,7 +463,7 @@ void KeyframeEdit::checkVisibleParam()
     if (m_params.count() == 0)
         return;
     
-    foreach(QDomElement elem, m_params) {
+    foreach(const QDomElement &elem, m_params) {
         if (elem.attribute("intimeline") == "1")
             return;
     }
@@ -470,4 +471,10 @@ void KeyframeEdit::checkVisibleParam()
     slotUpdateVisibleParameter(0);
 }
 
+void KeyframeEdit::slotUpdateRange(int inPoint, int outPoint)
+{
+    m_min = inPoint;
+    m_max = outPoint;
+}
+
 #include "keyframeedit.moc"