From: Jean-Baptiste Mardelle Date: Sun, 8 Jun 2008 10:47:12 +0000 (+0000) Subject: * New: audio fade in / out by dragging a clip's top corner X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=d851fb29b57f9a5b86af81d9f281c11dc38a987f;p=kdenlive * New: audio fade in / out by dragging a clip's top corner * Nice animation on effect add/remove svn path=/branches/KDE4/; revision=2232 --- diff --git a/src/abstractclipitem.cpp b/src/abstractclipitem.cpp index 9e0e203b..b7a38a00 100644 --- a/src/abstractclipitem.cpp +++ b/src/abstractclipitem.cpp @@ -4,7 +4,7 @@ #include #include -AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, double fps): QGraphicsRectItem(rect), m_startFade(0), m_endFade(0), m_track(0), m_fps(fps) { +AbstractClipItem::AbstractClipItem(const ItemInfo info, const QRectF& rect, double fps): QGraphicsRectItem(rect), m_track(0), m_fps(fps) { setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); setTrack(info.track); m_startPos = info.startPos; @@ -119,14 +119,6 @@ void AbstractClipItem::resizeEnd(int posx, double scale) { } } -void AbstractClipItem::setFadeOut(int pos, double scale) { - -} - -void AbstractClipItem::setFadeIn(int pos, double scale) { - -} - GenTime AbstractClipItem::duration() const { return m_cropDuration; } @@ -143,14 +135,6 @@ double AbstractClipItem::fps() const { return m_fps; } -int AbstractClipItem::fadeIn() const { - return m_startFade; -} - -int AbstractClipItem::fadeOut() const { - return m_endFade; -} - GenTime AbstractClipItem::maxDuration() const { return m_maxDuration; } diff --git a/src/abstractclipitem.h b/src/abstractclipitem.h index 6e1cc1df..5f5cb887 100644 --- a/src/abstractclipitem.h +++ b/src/abstractclipitem.h @@ -18,12 +18,8 @@ public: virtual GenTime cropStart() const ; virtual void resizeStart(int posx, double scale); virtual void resizeEnd(int posx, double scale); - virtual void setFadeOut(int pos, double scale); - virtual void setFadeIn(int pos, double scale); virtual GenTime duration() const; virtual double fps() const; - virtual int fadeIn() const; - virtual int fadeOut() const; virtual GenTime maxDuration() const; virtual void setCropStart(GenTime pos); @@ -34,8 +30,6 @@ protected: GenTime m_startPos; GenTime m_maxDuration; double m_fps; - uint m_startFade; - uint m_endFade; QPainterPath upperRectPart(QRectF); QPainterPath lowerRectPart(QRectF); QRect visibleRect(); diff --git a/src/clipitem.cpp b/src/clipitem.cpp index b910f6ab..27998602 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -40,7 +40,7 @@ #include "kthumb.h" ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, GenTime cropStart, double scale, double fps) - : AbstractClipItem(info, QRectF(), fps), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0), m_hover(false) { + : AbstractClipItem(info, QRectF(), fps), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0), m_startFade(0), m_endFade(0), m_hover(false) { QRectF rect((double) info.startPos.frames(fps) * scale, (double)(info.track * KdenliveSettings::trackheight() + 1), (double)(info.endPos - info.startPos).frames(fps) * scale, (double)(KdenliveSettings::trackheight() - 1)); setRect(rect); @@ -171,13 +171,14 @@ int ClipItem::clipProducer() { void ClipItem::flashClip() { if (m_timeLine == 0) { m_timeLine = new QTimeLine(750, this); + m_timeLine->setCurveShape(QTimeLine::EaseInOutCurve); connect(m_timeLine, SIGNAL(valueChanged(qreal)), this, SLOT(animate(qreal))); } m_timeLine->start(); } void ClipItem::animate(qreal value) { - m_opacity = value; + //m_opacity = value; update(); } @@ -286,54 +287,54 @@ void ClipItem::paint(QPainter *painter, pen.setStyle(Qt::SolidLine); - /* - // draw start / end fades - QBrush fades; - if (isSelected()) { - fades = QBrush(QColor(200, 50, 50, 150)); - } else fades = QBrush(QColor(200, 200, 200, 200)); - - if (m_startFade != 0) { - QPainterPath fadeInPath; - fadeInPath.moveTo(br.x() , br.y()); - fadeInPath.lineTo(br.x() , br.y() + br.height()); - fadeInPath.lineTo(br.x() + m_startFade * scale, br.y()); - fadeInPath.closeSubpath(); - painter->fillPath(fadeInPath, fades); - if (isSelected()) { - QLineF l(br.x() + m_startFade * scale, br.y(), br.x(), br.y() + br.height()); - painter->drawLine(l); - } - } - if (m_endFade != 0) { - QPainterPath fadeOutPath; - fadeOutPath.moveTo(br.x() + br.width(), br.y()); - fadeOutPath.lineTo(br.x() + br.width(), br.y() + br.height()); - fadeOutPath.lineTo(br.x() + br.width() - m_endFade * scale, br.y()); - fadeOutPath.closeSubpath(); - painter->fillPath(fadeOutPath, fades); - if (isSelected()) { - QLineF l(br.x() + br.width() - m_endFade * scale, br.y(), br.x() + br.width(), br.y() + br.height()); - painter->drawLine(l); - } - } - */ - //pen.setStyle(Qt::DashDotDotLine); //Qt::DotLine); + // draw start / end fades + QBrush fades; + if (isSelected()) { + fades = QBrush(QColor(200, 50, 50, 150)); + } else fades = QBrush(QColor(200, 200, 200, 200)); + + if (m_startFade != 0) { + QPainterPath fadeInPath; + fadeInPath.moveTo(br.x() , br.y()); + fadeInPath.lineTo(br.x() , br.y() + br.height()); + fadeInPath.lineTo(br.x() + m_startFade * scale, br.y()); + fadeInPath.closeSubpath(); + painter->fillPath(fadeInPath, fades); + if (isSelected()) { + QLineF l(br.x() + m_startFade * scale, br.y(), br.x(), br.y() + br.height()); + painter->drawLine(l); + } + } + if (m_endFade != 0) { + QPainterPath fadeOutPath; + fadeOutPath.moveTo(br.x() + br.width(), br.y()); + fadeOutPath.lineTo(br.x() + br.width(), br.y() + br.height()); + fadeOutPath.lineTo(br.x() + br.width() - m_endFade * scale, br.y()); + fadeOutPath.closeSubpath(); + painter->fillPath(fadeOutPath, fades); + if (isSelected()) { + QLineF l(br.x() + br.width() - m_endFade * scale, br.y(), br.x() + br.width(), br.y() + br.height()); + painter->drawLine(l); + } + } // Draw effects names - QString effects = effectNames().join(" / "); - if (!effects.isEmpty()) { - QFont font = painter->font(); - QFont smallFont = font; - smallFont.setPointSize(8); - painter->setFont(smallFont); - QRectF txtBounding = painter->boundingRect(br, Qt::AlignLeft | Qt::AlignTop, " " + effects + " "); + if (!m_effectNames.isEmpty()) { + QRectF txtBounding = painter->boundingRect(br, Qt::AlignLeft | Qt::AlignTop, m_effectNames); + txtBounding.setRight(txtBounding.right() + 15); painter->setPen(Qt::white); - painter->fillRect(txtBounding, QBrush(QColor(0, 0, 0, 150))); - painter->drawText(txtBounding, Qt::AlignCenter, effects); + QBrush markerBrush(Qt::SolidPattern); + if (m_timeLine && m_timeLine->state() == QTimeLine::Running) { + qreal value = m_timeLine->currentValue(); + txtBounding.setWidth(txtBounding.width() * value); + markerBrush.setColor(QColor(50 + 200 * (1.0 - value), 50, 50, 100 + 50 * value)); + } else markerBrush.setColor(QColor(50, 50, 50, 150)); + QPainterPath path; + path.addRoundedRect(txtBounding, 4, 4); + painter->fillPath(path, markerBrush); + painter->drawText(txtBounding, Qt::AlignCenter, m_effectNames); painter->setPen(Qt::black); - painter->setFont(font); } /* @@ -527,6 +528,13 @@ void ClipItem::slotPrepareAudioThumb(double pixelForOneFrame, QPainterPath path, //} } +uint ClipItem::fadeIn() const { + return m_startFade; +} + +uint ClipItem::fadeOut() const { + return m_endFade; +} void ClipItem::setFadeIn(int pos, double scale) { @@ -610,6 +618,7 @@ void ClipItem::setEffectAt(int ix, QDomElement effect) { kDebug() << "CHange EFFECT AT: " << ix << ", CURR: " << m_effectList.at(ix).attribute("tag") << ", NEW: " << effect.attribute("tag"); m_effectList.insert(ix, effect); m_effectList.removeAt(ix + 1); + m_effectNames = m_effectList.effectNames().join(" / "); update(boundingRect()); } @@ -620,20 +629,36 @@ QMap ClipItem::addEffect(QDomElement effect, bool animate) { kDebug() << "/////// CLIP ADD EFFECT: "<< doc.toString();*/ m_effectList.append(effect); effectParams["tag"] = effect.attribute("tag"); + QString effectId = effect.attribute("id"); effectParams["kdenlive_ix"] = effect.attribute("kdenlive_ix"); QString state = effect.attribute("disabled"); if (!state.isEmpty()) effectParams["disabled"] = state; QDomNodeList params = effect.elementsByTagName("parameter"); + int fade = 0; for (int i = 0; i < params.count(); i++) { QDomElement e = params.item(i).toElement(); if (!e.isNull()) { - effectParams[e.attribute("name")] = e.attribute("value"); - } - if (!e.attribute("factor").isEmpty()) { - effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble() / e.attribute("factor").toDouble()); + if (e.attribute("factor").isEmpty()) { + effectParams[e.attribute("name")] = e.attribute("value"); + // check if it is a fade effect + if (effectId == "fadein") { + if (e.attribute("name") == "out") fade += e.attribute("value").toInt(); + else if (e.attribute("name") == "in") fade -= e.attribute("value").toInt(); + } else if (effectId == "fadeout") { + if (e.attribute("name") == "out") fade -= e.attribute("value").toInt(); + else if (e.attribute("name") == "in") fade += e.attribute("value").toInt(); + } + } else { + effectParams[e.attribute("name")] = QString::number(effectParams[e.attribute("name")].toDouble() / e.attribute("factor").toDouble()); + } } } - if (animate) flashClip(); + m_effectNames = m_effectList.effectNames().join(" / "); + if (fade > 0) m_startFade = fade; + else if (fade < 0) m_endFade = -fade; + if (animate) { + flashClip(); + } update(boundingRect()); return effectParams; } @@ -674,10 +699,13 @@ QMap ClipItem::getEffectArgs(QDomElement effect) { void ClipItem::deleteEffect(QString index) { for (int i = 0; i < m_effectList.size(); ++i) { if (m_effectList.at(i).attribute("kdenlive_ix") == index) { + if (m_effectList.at(i).attribute("id") == "fadein") m_startFade = 0; + else if (m_effectList.at(i).attribute("id") == "fadeout") m_endFade = 0; m_effectList.removeAt(i); break; } } + m_effectNames = m_effectList.effectNames().join(" / "); flashClip(); update(boundingRect()); } diff --git a/src/clipitem.h b/src/clipitem.h index 9bfc0548..4bcac9ca 100644 --- a/src/clipitem.h +++ b/src/clipitem.h @@ -79,6 +79,8 @@ public: void refreshClip(); /** Returns a list of times for this clip's markers */ QList snapMarkers(); + uint fadeIn() const; + uint fadeOut() const; protected: virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event); @@ -97,7 +99,9 @@ private: int m_producer; CLIPTYPE m_clipType; QString m_clipName; - + QString m_effectNames; + uint m_startFade; + uint m_endFade; int m_maxTrack; diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index 92a186f0..58a43a4a 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -53,6 +53,8 @@ #include "clipmanager.h" #include "renderer.h" #include "markerdialog.h" +#include "mainwindow.h" + //TODO: // disable animation if user asked it in KDE's global settings @@ -182,10 +184,10 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event) { m_dragItem->resizeEnd((int)(snappedPos / m_scale), m_scale); } else if (m_operationMode == FADEIN) { int pos = (int)(mapToScene(event->pos()).x() / m_scale); - m_dragItem->setFadeIn((int)(pos - m_dragItem->startPos().frames(m_document->fps())), m_scale); + ((ClipItem*) m_dragItem)->setFadeIn((int)(pos - m_dragItem->startPos().frames(m_document->fps())), m_scale); } else if (m_operationMode == FADEOUT) { int pos = (int)(mapToScene(event->pos()).x() / m_scale); - m_dragItem->setFadeOut((int)(m_dragItem->endPos().frames(m_document->fps()) - pos), m_scale); + ((ClipItem*) m_dragItem)->setFadeOut((int)(m_dragItem->endPos().frames(m_document->fps()) - pos), m_scale); } if (m_animation) delete m_animation; @@ -286,7 +288,8 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event) { } } else if (opMode == FADEIN) { if (m_visualTip == NULL) { - m_visualTip = new QGraphicsEllipseItem(clip->rect().x() + clip->fadeIn() * m_scale - size, clip->rect().y() - 8, size * 2, 16); + ClipItem *item = (ClipItem *) clip; + m_visualTip = new QGraphicsEllipseItem(item->rect().x() + item->fadeIn() * m_scale - size, item->rect().y() - 8, size * 2, 16); ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor); ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen); m_visualTip->setZValue(100); @@ -296,17 +299,18 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event) { m_visualTip->setPos(0, 0); double scale = 2.0; m_animation->setScaleAt(.5, scale, scale); - m_animation->setPosAt(.5, QPointF(clip->rect().x() - clip->rect().x() * scale - clip->fadeIn() * m_scale, clip->rect().y() - clip->rect().y() * scale)); + m_animation->setPosAt(.5, QPointF(item->rect().x() - item->rect().x() * scale - item->fadeIn() * m_scale, item->rect().y() - item->rect().y() * scale)); scale = 1.0; m_animation->setScaleAt(1, scale, scale); - m_animation->setPosAt(1, QPointF(clip->rect().x() - clip->rect().x() * scale, clip->rect().y() - clip->rect().y() * scale)); + m_animation->setPosAt(1, QPointF(item->rect().x() - item->rect().x() * scale, item->rect().y() - item->rect().y() * scale)); scene()->addItem(m_visualTip); m_animationTimer->start(); } setCursor(Qt::PointingHandCursor); } else if (opMode == FADEOUT) { if (m_visualTip == NULL) { - m_visualTip = new QGraphicsEllipseItem(clip->rect().x() + clip->rect().width() - clip->fadeOut() * m_scale - size, clip->rect().y() - 8, size*2, 16); + ClipItem *item = (ClipItem *) clip; + m_visualTip = new QGraphicsEllipseItem(item->rect().x() + item->rect().width() - item->fadeOut() * m_scale - size, item->rect().y() - 8, size*2, 16); ((QGraphicsEllipseItem*) m_visualTip)->setBrush(m_tipColor); ((QGraphicsEllipseItem*) m_visualTip)->setPen(m_tipPen); m_visualTip->setZValue(100); @@ -316,10 +320,10 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event) { m_visualTip->setPos(0, 0); double scale = 2.0; m_animation->setScaleAt(.5, scale, scale); - m_animation->setPosAt(.5, QPointF(clip->rect().x() - clip->rect().x() * scale - clip->rect().width() + clip->fadeOut() * m_scale, clip->rect().y() - clip->rect().y() * scale)); + m_animation->setPosAt(.5, QPointF(item->rect().x() - item->rect().x() * scale - item->rect().width() + item->fadeOut() * m_scale, item->rect().y() - item->rect().y() * scale)); scale = 1.0; m_animation->setScaleAt(1, scale, scale); - m_animation->setPosAt(1, QPointF(clip->rect().x() - clip->rect().x() * scale, clip->rect().y() - clip->rect().y() * scale)); + m_animation->setPosAt(1, QPointF(item->rect().x() - item->rect().x() * scale, item->rect().y() - item->rect().y() * scale)); scene()->addItem(m_visualTip); m_animationTimer->start(); } @@ -860,6 +864,7 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event) { // resize start if (m_dragItem->type() == AVWIDGET) { m_document->renderer()->mltResizeClipStart(m_tracksList.count() - m_dragItem->track(), m_dragItem->endPos(), m_dragItem->startPos(), m_dragItemInfo.startPos, m_dragItem->cropStart(), m_dragItem->cropStart() + m_dragItem->endPos() - m_dragItem->startPos()); + updateClipFade((ClipItem *) m_dragItem); ResizeClipCommand *command = new ResizeClipCommand(this, m_dragItemInfo, info, false); m_commandStack->push(command); } else if (m_dragItem->type() == TRANSITIONWIDGET) { @@ -877,14 +882,64 @@ void CustomTrackView::mouseReleaseEvent(QMouseEvent * event) { m_document->renderer()->mltResizeClipEnd(m_tracksList.count() - m_dragItem->track(), m_dragItem->startPos(), m_dragItem->cropStart(), m_dragItem->cropStart() + m_dragItem->endPos() - m_dragItem->startPos()); m_commandStack->push(command); } else if (m_dragItem->type() == TRANSITIONWIDGET) { - MoveTransitionCommand *command = new MoveTransitionCommand(this, m_dragItemInfo, info, false); m_commandStack->push(command); Transition *transition = (Transition *) m_dragItem; m_document->renderer()->mltMoveTransition(transition->transitionTag(), (int)(m_tracksList.count() - m_dragItemInfo.track), (int)(m_tracksList.count() - m_dragItemInfo.track), 0, m_dragItemInfo.startPos, m_dragItemInfo.endPos, info.startPos, info.endPos); } //m_document->renderer()->doRefresh(); + } else if (m_operationMode == FADEIN) { + // resize fade in effect + ClipItem * item = (ClipItem *) m_dragItem; + QStringList clipeffects = item->effectNames(); + if (clipeffects.contains(i18n("Fade in"))) { + QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade in")); + int start = item->cropStart().frames(m_document->fps()); + int end = item->fadeIn(); + if (end == 0) { + slotDeleteEffect(item, oldeffect); + } else { + end += start; + QDomElement effect = MainWindow::audioEffects.getEffectByName("Fade in"); + EffectsList::setParameter(effect, "in", QString::number(start)); + EffectsList::setParameter(effect, "out", QString::number(end)); + slotUpdateClipEffect(item, oldeffect, effect); + } + } else { + QDomElement effect = MainWindow::audioEffects.getEffectByName("Fade in"); + int start = item->cropStart().frames(m_document->fps()); + int end = item->fadeIn() + start; + EffectsList::setParameter(effect, "in", QString::number(start)); + EffectsList::setParameter(effect, "out", QString::number(end)); + slotAddEffect(effect, m_dragItem->startPos(), m_dragItem->track()); + } + } else if (m_operationMode == FADEOUT) { + // resize fade in effect + ClipItem * item = (ClipItem *) m_dragItem; + QStringList clipeffects = item->effectNames(); + if (clipeffects.contains(i18n("Fade out"))) { + QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade out")); + int end = (item->duration() + item->cropStart()).frames(m_document->fps()); + int start = item->fadeOut(); + if (start == 0) { + slotDeleteEffect(item, oldeffect); + } else { + start = end - start; + QDomElement effect = MainWindow::audioEffects.getEffectByName("Fade out"); + EffectsList::setParameter(effect, "in", QString::number(start)); + EffectsList::setParameter(effect, "out", QString::number(end)); + slotUpdateClipEffect(item, oldeffect, effect); + } + } else { + QDomElement effect = MainWindow::audioEffects.getEffectByName("Fade out"); + int end = (item->duration() + item->cropStart()).frames(m_document->fps()); + int start = end - item->fadeOut(); + EffectsList::setParameter(effect, "in", QString::number(start)); + EffectsList::setParameter(effect, "out", QString::number(end)); + slotAddEffect(effect, m_dragItem->startPos(), m_dragItem->track()); + } } + emit transitionItemSelected((m_dragItem && m_dragItem->type() == TRANSITIONWIDGET) ? (Transition*) m_dragItem : NULL); m_document->setModified(true); m_operationMode = NONE; @@ -897,6 +952,7 @@ void CustomTrackView::deleteClip(ItemInfo info) { kDebug() << "----------------  ERROR, CANNOT find clip to move at...";// << rect.x(); return; } + if (item->isSelected()) emit clipItemSelected(NULL); item->baseClip()->removeReference(); m_document->updateClip(item->baseClip()->getId()); delete item; @@ -1053,13 +1109,45 @@ void CustomTrackView::resizeClip(const ItemInfo start, const ItemInfo end) { if (resizeClipStart) { m_document->renderer()->mltResizeClipStart(m_tracksList.count() - item->track(), item->endPos(), end.startPos, item->startPos(), item->cropStart() + end.startPos - start.startPos, item->cropStart() + end.startPos - start.startPos + item->endPos() - end.startPos); item->resizeStart((int) end.startPos.frames(m_document->fps()), m_scale); + updateClipFade(item); } else { m_document->renderer()->mltResizeClipEnd(m_tracksList.count() - item->track(), item->startPos(), item->cropStart(), item->cropStart() + end.startPos - item->startPos()); item->resizeEnd((int) end.startPos.frames(m_document->fps()), m_scale); + updateClipFade(item, true); } m_document->renderer()->doRefresh(); } +void CustomTrackView::updateClipFade(ClipItem * item, bool updateFadeOut) { + if (!updateFadeOut) { + int end = item->fadeIn(); + if (end != 0) { + // there is a fade in effect + QStringList clipeffects = item->effectNames(); + QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade in")); + int start = item->cropStart().frames(m_document->fps()); + end += start; + EffectsList::setParameter(oldeffect, "in", QString::number(start)); + EffectsList::setParameter(oldeffect, "out", QString::number(end)); + QMap effectParams = item->getEffectArgs(oldeffect); + m_document->renderer()->mltEditEffect(m_tracksList.count() - item->track(), item->startPos(), effectParams); + } + } else { + int start = item->fadeOut(); + if (start != 0) { + // there is a fade in effect + QStringList clipeffects = item->effectNames(); + QDomElement oldeffect = item->effectAt(clipeffects.indexOf("Fade out")); + int end = (item->duration() - item->cropStart()).frames(m_document->fps()); + start = end - start; + EffectsList::setParameter(oldeffect, "in", QString::number(start)); + EffectsList::setParameter(oldeffect, "out", QString::number(end)); + QMap effectParams = item->getEffectArgs(oldeffect); + m_document->renderer()->mltEditEffect(m_tracksList.count() - item->track(), item->startPos(), effectParams); + } + } +} + double CustomTrackView::getSnapPointForPos(double pos) { for (int i = 0; i < m_snapPoints.size(); ++i) { if (abs((int)(pos - m_snapPoints.at(i).frames(m_document->fps()) * m_scale)) < 10) { diff --git a/src/customtrackview.h b/src/customtrackview.h index 9e587251..cae676a9 100644 --- a/src/customtrackview.h +++ b/src/customtrackview.h @@ -150,7 +150,7 @@ private: QCursor m_razorCursor; /** Get the index of the video track that is just below current track */ int getPreviousVideoTrack(int track); - + void updateClipFade(ClipItem * item, bool updateFadeOut = false); signals: void cursorMoved(int, int); diff --git a/src/effectslist.cpp b/src/effectslist.cpp index 9e0bad5c..58152ad6 100644 --- a/src/effectslist.cpp +++ b/src/effectslist.cpp @@ -101,3 +101,15 @@ QString EffectsList::getInfo(QString effectName) { return info; } +// static +void EffectsList::setParameter(QDomElement effect, QString name, QString value) { + QDomNodeList params = effect.elementsByTagName("parameter"); + for (int i = 0; i < params.count(); i++) { + QDomElement e = params.item(i).toElement(); + if (e.attribute("name") == name) { + e.setAttribute("value", value); + break; + } + } +} + diff --git a/src/effectslist.h b/src/effectslist.h index a51bf521..b5b87e7b 100644 --- a/src/effectslist.h +++ b/src/effectslist.h @@ -38,6 +38,8 @@ public: QStringList effectNames(); QString getInfo(QString effectName); QMap effect(const QString & name); + + static void setParameter(QDomElement effect, QString name, QString value); }; #endif diff --git a/src/effectslistview.cpp b/src/effectslistview.cpp index 716b387a..1f6e9247 100644 --- a/src/effectslistview.cpp +++ b/src/effectslistview.cpp @@ -65,10 +65,10 @@ void EffectsListView::filterList(int pos) { void EffectsListView::showInfoPanel() { if (ui.infopanel->isVisible()) { - ui.infopanel->hide(); + ui.infopanel->setVisible(false); ui.buttonInfo->setDown(false); } else { - ui.infopanel->show(); + ui.infopanel->setVisible(true); ui.buttonInfo->setDown(true); } } diff --git a/src/effectstackedit.cpp b/src/effectstackedit.cpp index 29c38dde..d7e50b81 100644 --- a/src/effectstackedit.cpp +++ b/src/effectstackedit.cpp @@ -98,7 +98,7 @@ void EffectStackEdit::transferParamDesc(const QDomElement& d, int , int) { //TODO constant, list, bool, complex , color, geometry, position - if (type == "double" || type == "constant") { + if (type == "double") { createSliderItem(paramName, value.toInt(), pa.attribute("min").toInt(), pa.attribute("max").toInt()); delete toFillin; toFillin = NULL; @@ -311,7 +311,7 @@ void EffectStackEdit::collectAllParameters() { QDomNode na = pa.firstChildElement("name"); QString type = pa.attributes().namedItem("type").nodeValue(); QString setValue; - if (type == "double" || type == "constant") { + if (type == "double") { QSlider* slider = ((Ui::Constval_UI*)valueItems[na.toElement().text()])->horizontalSlider; setValue = QString::number(slider->value()); } else if (type == "list") { diff --git a/src/graphicsscenerectmove.cpp b/src/graphicsscenerectmove.cpp index 2994ac9f..26af61c7 100644 --- a/src/graphicsscenerectmove.cpp +++ b/src/graphicsscenerectmove.cpp @@ -50,11 +50,11 @@ void GraphicsSceneRectMove::keyPressEvent(QKeyEvent * keyEvent) { } int diff = 1; if (m_selectedItem->type() == 8) { - QGraphicsTextItem *t = static_cast(m_selectedItem); - if (t->textInteractionFlags() & Qt::TextEditorInteraction) { - QGraphicsScene::keyPressEvent(keyEvent); - return; - } + QGraphicsTextItem *t = static_cast(m_selectedItem); + if (t->textInteractionFlags() & Qt::TextEditorInteraction) { + QGraphicsScene::keyPressEvent(keyEvent); + return; + } } if (keyEvent->modifiers() & Qt::ControlModifier) diff = 10; switch (keyEvent->key()) { @@ -76,9 +76,9 @@ void GraphicsSceneRectMove::keyPressEvent(QKeyEvent * keyEvent) { break; case Qt::Key_Delete: case Qt::Key_Backspace: - delete m_selectedItem; - m_selectedItem = NULL; - emit selectionChanged(); + delete m_selectedItem; + m_selectedItem = NULL; + emit selectionChanged(); break; default: QGraphicsScene::keyPressEvent(keyEvent); diff --git a/src/projectlistview.cpp b/src/projectlistview.cpp index 022ea162..2cfa436d 100644 --- a/src/projectlistview.cpp +++ b/src/projectlistview.cpp @@ -50,7 +50,7 @@ ProjectListView::ProjectListView(QWidget *parent) connect(headerView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(configureColumns(const QPoint&))); - connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(slotFocusOut(QTreeWidgetItem *, QTreeWidgetItem *))); + //connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), this, SLOT(slotFocusOut(QTreeWidgetItem *, QTreeWidgetItem *))); if (!KdenliveSettings::showdescriptioncolumn()) hideColumn(2); if (!KdenliveSettings::showratingcolumn()) hideColumn(3); diff --git a/src/transitionsettings.cpp b/src/transitionsettings.cpp index 70c8ed51..77994737 100644 --- a/src/transitionsettings.cpp +++ b/src/transitionsettings.cpp @@ -34,6 +34,8 @@ TransitionSettings::TransitionSettings(QWidget* parent): QWidget(parent) { connect(ui.listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(slotTransitionChanged())); connect(this, SIGNAL(transferParamDesc(const QDomElement&, int , int)), effectEdit , SLOT(transferParamDesc(const QDomElement&, int , int))); connect(effectEdit, SIGNAL(parameterChanged(const QDomElement&, const QDomElement&)), this , SLOT(slotUpdateEffectParams(const QDomElement&, const QDomElement&))); + ui.splitter->setStretchFactor(0, 1); + ui.splitter->setStretchFactor(1, 10); } diff --git a/src/widgets/transitionsettings_ui.ui b/src/widgets/transitionsettings_ui.ui index 5d25c3ac..9b36f04e 100644 --- a/src/widgets/transitionsettings_ui.ui +++ b/src/widgets/transitionsettings_ui.ui @@ -5,8 +5,8 @@ 0 0 - 323 - 217 + 291 + 189 @@ -21,7 +21,7 @@ - + 0 0