#include <QLabel>
#include <QSlider>
#include <QSpinBox>
+#include <QToolButton>
+#include <KIcon>
+#include <KLocalizedString>
-DoubleParameterWidget::DoubleParameterWidget(const QString &name, int value, int min, int max, const QString suffix, QWidget *parent) :
- QWidget(parent)
+
+DoubleParameterWidget::DoubleParameterWidget(const QString &name, int value, int min, int max, int defaultValue, const QString suffix, QWidget *parent) :
+ QWidget(parent),
+ m_default(defaultValue)
{
QHBoxLayout *layout = new QHBoxLayout(this);
m_spinBox = new QSpinBox(this);
m_spinBox->setRange(min, max);
+ m_spinBox->setKeyboardTracking(false);
if (!suffix.isEmpty())
m_spinBox->setSuffix(suffix);
layout->addWidget(m_spinBox);
+ QToolButton *reset = new QToolButton(this);
+ reset->setAutoRaise(true);
+ reset->setIcon(KIcon("edit-undo"));
+ reset->setToolTip(i18n("Reset to default value"));
+ layout->addWidget(reset);
+
connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
connect(m_spinBox, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
+ connect(reset, SIGNAL(clicked(bool)), this, SLOT(slotReset()));
m_spinBox->setValue(value);
}
return m_spinBox->value();
}
-
void DoubleParameterWidget::setName(const QString& name)
{
m_name->setText(name);
}
-#include "doubleparameterwidget.moc"
\ No newline at end of file
+void DoubleParameterWidget::slotReset()
+{
+ m_spinBox->setValue(m_default);
+}
+
+#include "doubleparameterwidget.moc"
* @param value Value of the parameter
* @param min Minimum value
* @param max maximum value
+ * @param defaultValue Value used when using reset functionality
* @param suffix (optional) Suffix to display in spinbox
* @param parent (optional) Parent Widget */
- DoubleParameterWidget(const QString &name, int value, int min, int max, const QString suffix = QString(), QWidget* parent = 0);
+ DoubleParameterWidget(const QString &name, int value, int min, int max, int defaultValue, const QString suffix = QString(), QWidget* parent = 0);
/** @brief Updates the label to display @param name. */
void setName(const QString &name);
/** @brief Gets the parameter's value. */
/** @brief Sets the value to @param value. */
void setValue(int value);
+private slots:
+ /** @brief Sets value to m_default. */
+ void slotReset();
+
private:
+ int m_default;
QLabel *m_name;
QSlider *m_slider;
QSpinBox *m_spinBox;
***************************************************************************/
#include "keyframeedit.h"
+#include "doubleparameterwidget.h"
#include "kdenlivesettings.h"
#include <KDebug>
int columnId = keyframe_list->columnCount();
keyframe_list->insertColumn(columnId);
keyframe_list->setHorizontalHeaderItem(columnId, new QTableWidgetItem(paramName));
- m_slidersLayout->addWidget(new QLabel(paramName), columnId, 0);
- QSlider *sl = new QSlider(Qt::Horizontal, this);
- sl->setRange(m_params.at(columnId).attribute("min").toInt(), m_params.at(columnId).attribute("max").toInt());
- connect(sl, SIGNAL(valueChanged(int)), this, SLOT(slotAdjustKeyframeValue(int)));
- m_slidersLayout->addWidget(sl, columnId, 1);
+
+ 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(), m_params.at(columnId).attribute("suffix"), this);
+ connect(doubleparam, SIGNAL(valueChanged(int)), this, SLOT(slotAdjustKeyframeValue(int)));
+ m_slidersLayout->addWidget(doubleparam, columnId, 0);
QStringList frames = e.attribute("keyframes").split(";", QString::SkipEmptyParts);
for (int i = 0; i < frames.count(); i++) {
kDebug() << " INSERT COL: " << col << ", " << paramName;
keyframe_list->insertColumn(col);
keyframe_list->setHorizontalHeaderItem(col, new QTableWidgetItem(paramName));
- m_slidersLayout = new QGridLayout;
- m_slidersLayout->addWidget(new QLabel(paramName), 0, 0);
- QSlider *sl = new QSlider(Qt::Horizontal, this);
- sl->setRange(m_params.at(0).attribute("min").toInt(), m_params.at(0).attribute("max").toInt());
- connect(sl, SIGNAL(valueChanged(int)), this, SLOT(slotAdjustKeyframeValue(int)));
- m_slidersLayout->addWidget(sl, 0, 1);
- param_sliders->setLayout(m_slidersLayout);
+ m_slidersLayout = new QGridLayout(param_sliders);
+
+ DoubleParameterWidget *doubleparam = new DoubleParameterWidget(paramName, 0,
+ m_params.at(0).attribute("min").toInt(), m_params.at(0).attribute("max").toInt(),
+ m_params.at(0).attribute("default").toInt(), m_params.at(0).attribute("suffix"), this);
+ connect(doubleparam, SIGNAL(valueChanged(int)), this, SLOT(slotAdjustKeyframeValue(int)));
+ m_slidersLayout->addWidget(doubleparam, 0, 0);
+
keyframe_list->setSelectionBehavior(QAbstractItemView::SelectRows);
keyframe_list->setSelectionMode(QAbstractItemView::SingleSelection);
keyframe_pos->setValue(getPos(item->row()));
keyframe_pos->blockSignals(false);
for (int col = 0; col < keyframe_list->columnCount(); col++) {
- QSlider *sl = static_cast <QSlider*>(m_slidersLayout->itemAtPosition(col, 1)->widget());
- if (!sl)
+ DoubleParameterWidget *doubleparam = static_cast <DoubleParameterWidget*>(m_slidersLayout->itemAtPosition(col, 0)->widget());
+ if (!doubleparam)
continue;
- sl->blockSignals(true);
- sl->setValue(keyframe_list->item(item->row(), col)->text().toInt());
- sl->blockSignals(false);
+ doubleparam->blockSignals(true);
+ doubleparam->setValue(keyframe_list->item(item->row(), col)->text().toInt());
+ doubleparam->blockSignals(false);
}
if (KdenliveSettings::keyframeseek() && seek)
emit seekToPos(keyframe_pos->value() - m_min);
{
QTableWidgetItem *item = keyframe_list->currentItem();
for (int col = 0; col < keyframe_list->columnCount(); col++) {
- QSlider *sl = static_cast <QSlider*>(m_slidersLayout->itemAtPosition(col, 1)->widget());
- if (!sl)
+ DoubleParameterWidget *doubleparam = static_cast <DoubleParameterWidget*>(m_slidersLayout->itemAtPosition(col, 0)->widget());
+ if (!doubleparam)
continue;
- int val = sl->value();
+ int val = doubleparam->getValue();
QTableWidgetItem *nitem = keyframe_list->item(item->row(), col);
if (nitem->text().toInt() != val)
nitem->setText(QString::number(val));