+ Q_UNUSED(value)
+
+ QTableWidgetItem *item = keyframe_list->currentItem();
+ for (int col = 0; col < keyframe_list->columnCount(); col++) {
+ DoubleParameterWidget *doubleparam = static_cast <DoubleParameterWidget*>(m_slidersLayout->itemAtPosition(col, 0)->widget());
+ if (!doubleparam)
+ continue;
+ double val = doubleparam->getValue();
+ QTableWidgetItem *nitem = keyframe_list->item(item->row(), col);
+ if (nitem && nitem->text().toDouble() != val)
+ nitem->setText(QString::number(val));
+ }
+ //keyframe_list->item(item->row() - 1, item->column());
+
+}
+
+int KeyframeEdit::getPos(int row)
+{
+ if (!keyframe_list->verticalHeaderItem(row))
+ return 0;
+ if (KdenliveSettings::frametimecode())
+ return keyframe_list->verticalHeaderItem(row)->text().toInt();
+ else
+ return m_timecode.getFrameCount(keyframe_list->verticalHeaderItem(row)->text());
+}
+
+QString KeyframeEdit::getPosString(int pos)
+{
+ if (KdenliveSettings::frametimecode())
+ return QString::number(pos);
+ else
+ return m_timecode.getTimecodeFromFrames(pos);
+}
+
+void KeyframeEdit::slotSetSeeking(bool seek)
+{
+ KdenliveSettings::setKeyframeseek(seek);
+}
+
+void KeyframeEdit::updateTimecodeFormat()
+{
+ for (int row = 0; row < keyframe_list->rowCount(); ++row) {
+ QString pos = keyframe_list->verticalHeaderItem(row)->text();
+ if (KdenliveSettings::frametimecode())
+ keyframe_list->verticalHeaderItem(row)->setText(QString::number(m_timecode.getFrameCount(pos)));
+ else
+ keyframe_list->verticalHeaderItem(row)->setText(m_timecode.getTimecodeFromFrames(pos.toInt()));
+ }
+
+ m_position->updateTimecodeFormat();
+}
+
+void KeyframeEdit::slotKeyframeMode()
+{
+ widgetTable->setHidden(false);
+ buttonKeyframes->setHidden(true);
+ slotAddKeyframe();
+}
+
+void KeyframeEdit::slotResetKeyframe()
+{
+ for (int col = 0; col < keyframe_list->columnCount(); ++col) {
+ DoubleParameterWidget *doubleparam = static_cast<DoubleParameterWidget*>(m_slidersLayout->itemAtPosition(col, 0)->widget());
+ if (doubleparam)
+ doubleparam->slotReset();
+ }
+}
+
+void KeyframeEdit::slotUpdateVisibleParameter(int id, bool update)
+{
+ for (int i = 0; i < m_params.count(); ++i) {
+ m_params[i].setAttribute("intimeline", (i == id ? "1" : "0"));
+ }
+ for (int col = 0; col < keyframe_list->columnCount(); col++) {
+ DoubleParameterWidget *doubleparam = static_cast <DoubleParameterWidget*>(m_slidersLayout->itemAtPosition(col, 0)->widget());
+ if (!doubleparam)
+ continue;
+ doubleparam->setInTimelineProperty(col == id);
+ //kDebug()<<"// PARAM: "<<col<<" Set TO: "<<(bool) (col == id);
+
+ }
+ if (update) emit parameterChanged();
+}
+
+bool KeyframeEdit::isVisibleParam(const QString& name)
+{
+ for (int col = 0; col < keyframe_list->columnCount(); ++col) {
+ QDomNode na = m_params.at(col).firstChildElement("name");
+ QString paramName = i18n(na.toElement().text().toUtf8().data());
+ if (paramName == name)
+ return m_params.at(col).attribute("intimeline") == "1";
+ }
+ return false;
+}
+
+void KeyframeEdit::checkVisibleParam()
+{
+ if (m_params.count() == 0)
+ return;
+
+ foreach(const QDomElement &elem, m_params) {
+ if (elem.attribute("intimeline") == "1")
+ return;
+ }
+
+ slotUpdateVisibleParameter(0);