X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcornerswidget.cpp;h=20546a7900ee994918473e6834d351af69574634;hb=1404e8f1d631c81399e0e92ffce7dfac0195fabb;hp=46f2a1336131621ccf160432f3a63f8f5b2c79f1;hpb=c25ab9b9c4e14e3d3e8b0cfb37868e87152ae8c9;p=kdenlive diff --git a/src/cornerswidget.cpp b/src/cornerswidget.cpp index 46f2a133..20546a79 100644 --- a/src/cornerswidget.cpp +++ b/src/cornerswidget.cpp @@ -36,44 +36,31 @@ inline int lerp( const int a, const int b, double t ) return a + (b - a) * t; } -CornersWidget::CornersWidget(Monitor *monitor, QDomElement e, int minFrame, int maxFrame, Timecode tc, int activeKeyframe, QWidget* parent) : +CornersWidget::CornersWidget(Monitor *monitor, const QDomElement& e, int minFrame, int maxFrame, const Timecode &tc, int activeKeyframe, QWidget* parent) : KeyframeEdit(e, minFrame, maxFrame, tc, activeKeyframe, parent), m_monitor(monitor), m_showScene(true), m_pos(0) { MonitorEditWidget *edit = monitor->getEffectEdit(); - edit->showVisibilityButton(true); m_scene = edit->getScene(); + m_scene->cleanup(); - m_item = new OnMonitorCornersItem(m_scene); + m_item = new OnMonitorCornersItem(); m_scene->addItem(m_item); // TODO: Better Icons - QToolButton *buttonShowControls = new QToolButton(); - buttonShowControls->setIcon(KIcon("transform-move")); - buttonShowControls->setToolTip(i18n("Show additional controls")); - buttonShowControls->setCheckable(true); - buttonShowControls->setAutoRaise(true); - buttonShowControls->setChecked(KdenliveSettings::onmonitoreffects_cornersshowcontrols()); - connect(buttonShowControls, SIGNAL(toggled(bool)), this, SLOT(slotShowControls(bool))); - edit->addCustomControl(buttonShowControls); - - QToolButton *buttonShowLines = new QToolButton(); - buttonShowLines->setIcon(KIcon("insert-horizontal-rule")); - buttonShowLines->setToolTip(i18n("Show/Hide the lines connecting the corners")); - buttonShowLines->setCheckable(true); - buttonShowControls->setAutoRaise(true); - buttonShowLines->setChecked(KdenliveSettings::onmonitoreffects_cornersshowlines()); - connect(buttonShowLines, SIGNAL(toggled(bool)), this, SLOT(slotShowLines(bool))); - edit->addCustomControl(buttonShowLines); - - connect(edit, SIGNAL(showEdit(bool)), this, SLOT(slotShowScene(bool))); - connect(m_monitor, SIGNAL(renderPosition(int)), this, SLOT(slotCheckMonitorPosition(int))); - connect(m_scene, SIGNAL(actionFinished()), this, SLOT(slotUpdateProperties())); + edit->removeCustomControls(); + edit->addCustomButton(KIcon("transform-move"), i18n("Show additional controls"), this, SLOT(slotShowControls(bool)), + true, KdenliveSettings::onmonitoreffects_cornersshowcontrols()); + edit->addCustomButton(KIcon("insert-horizontal-rule"), i18n("Show/Hide the lines connecting the corners"), this, SLOT(slotShowLines(bool)), + true, KdenliveSettings::onmonitoreffects_cornersshowlines()); + + connect(m_item, SIGNAL(changed()), this, SLOT(slotUpdateProperties())); connect(m_scene, SIGNAL(addKeyframe()), this, SLOT(slotInsertKeyframe())); - connect(keyframe_list, SIGNAL(cellChanged(int, int)), this, SLOT(slotUpdateItem())); + connect(keyframe_list, SIGNAL(cellChanged(int,int)), this, SLOT(slotUpdateItem())); + m_scene->centerView(); } CornersWidget::~CornersWidget() @@ -82,13 +69,11 @@ CornersWidget::~CornersWidget() delete m_item; if (m_monitor) { MonitorEditWidget *edit = m_monitor->getEffectEdit(); - edit->showVisibilityButton(false); edit->removeCustomControls(); - m_monitor->slotEffectScene(false); } } -void CornersWidget::addParameter(QDomElement e, int activeKeyframe) +void CornersWidget::addParameter(const QDomElement &e, int activeKeyframe) { KeyframeEdit::addParameter(e, activeKeyframe); @@ -178,20 +163,6 @@ QList CornersWidget::getPoints(QTableWidgetItem* keyframe) return points; } -void CornersWidget::slotCheckMonitorPosition(int renderPos) -{ - if (m_showScene) - emit checkMonitorPosition(renderPos); -} - -void CornersWidget::slotShowScene(bool show) -{ - m_showScene = show; - if (!m_showScene) - m_monitor->slotEffectScene(false); - else - slotCheckMonitorPosition(m_monitor->render->seekFramePosition()); -} void CornersWidget::slotShowLines(bool show) { @@ -209,8 +180,8 @@ void CornersWidget::slotSyncPosition(int relTimelinePos) { if (keyframe_list->rowCount()) { relTimelinePos = qBound(0, relTimelinePos, m_max); - if (relTimelinePos != m_pos) { - m_pos = relTimelinePos; + if (relTimelinePos != m_pos - m_min) { + m_pos = relTimelinePos + m_min; slotUpdateItem(); } } @@ -252,7 +223,7 @@ void CornersWidget::slotInsertKeyframe() QPolygonF pol = m_item->polygon(); double val; - for (int i = 0; i < keyframe_list->columnCount(); i++) { + for (int i = 0; i < keyframe_list->columnCount(); ++i) { if (i < 8) { if (i % 2 == 0) val = pol.at(i / 2).x() / (double)m_monitor->render->frameRenderWidth(); @@ -275,4 +246,5 @@ void CornersWidget::slotInsertKeyframe() keyframe_list->selectRow(row); } + #include "cornerswidget.moc"