]> git.sesse.net Git - kdenlive/commitdiff
Make transition updating work again
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 27 Mar 2008 22:40:07 +0000 (22:40 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 27 Mar 2008 22:40:07 +0000 (22:40 +0000)
svn path=/branches/KDE4/; revision=2129

src/addtransitioncommand.cpp
src/addtransitioncommand.h
src/customtrackview.cpp
src/customtrackview.h
src/transition.cpp
src/transition.h
src/transitionsettings.cpp

index 81406679e3ac44adb9ed2f89c9a8558e9b3c9140..e1293f762b98095a7bdeaf32c463201b0fcbadde 100644 (file)
@@ -19,7 +19,7 @@
 #include "addtransitioncommand.h"
 #include "customtrackview.h"
 
-AddTransitionCommand::AddTransitionCommand(CustomTrackView *view, ItemInfo info, int transitiontrack, QMap <QString, QString> desc, QDomElement params, bool doIt) : m_view(view), m_info(info), m_track(transitiontrack), m_desc(desc), m_params(params), m_doIt(doIt) {
+AddTransitionCommand::AddTransitionCommand(CustomTrackView *view, ItemInfo info, int transitiontrack, QDomElement params, bool doIt) : m_view(view), m_info(info), m_track(transitiontrack), m_params(params), m_doIt(doIt) {
     if (m_doIt) setText(i18n("Add transition to clip"));
     else setText(i18n("Delete transition from clip"));
 }
@@ -27,13 +27,13 @@ AddTransitionCommand::AddTransitionCommand(CustomTrackView *view, ItemInfo info,
 
 // virtual
 void AddTransitionCommand::undo() {
-    if (m_doIt) m_view->deleteTransition(m_info, m_track, m_desc, m_params);
-    else m_view->addTransition(m_info, m_track, m_desc, m_params);
+    if (m_doIt) m_view->deleteTransition(m_info, m_track, m_params);
+    else m_view->addTransition(m_info, m_track, m_params);
 }
 // virtual
 void AddTransitionCommand::redo() {
-    if (m_doIt) m_view->addTransition(m_info, m_track, m_desc, m_params);
-    else m_view->deleteTransition(m_info, m_track, m_desc, m_params);
+    if (m_doIt) m_view->addTransition(m_info, m_track, m_params);
+    else m_view->deleteTransition(m_info, m_track, m_params);
     m_doIt = true;
 }
 
index 61d1940fa558aca564e7f54fb7bad46ab20de585..6eee811f33b01a130a0162403db098e2096e770f 100644 (file)
@@ -31,14 +31,13 @@ class CustomTrackView;
 
 class AddTransitionCommand : public QUndoCommand {
 public:
-    AddTransitionCommand(CustomTrackView *view, ItemInfo info, int transitiontrack, QMap <QString, QString> desc, QDomElement params, bool doIt);
+    AddTransitionCommand(CustomTrackView *view, ItemInfo info, int transitiontrack, QDomElement params, bool doIt);
     virtual void undo();
     virtual void redo();
 
 private:
     CustomTrackView *m_view;
     ItemInfo m_info;
-    QMap <QString, QString> m_desc;
     QDomElement m_params;
     int m_track;
     bool m_doIt;
index b4c70421a8044bdd7e9ccd8abdf98a5be9b261df..492f1e3bb0d8a5fe0d2766fd123caf4febbdf3dc 100644 (file)
@@ -406,7 +406,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) {
                     info.endPos = info.startPos + GenTime(2.5);
                     info.track = m_dragItem->track();
                     int transitiontrack = getPreviousVideoTrack(info.track);
-                    slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack, QMap<QString, QString>());
+                    slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack);
                 }
                 if (m_operationMode == TRANSITIONEND) {
                     ItemInfo info;
@@ -414,7 +414,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) {
                     info.startPos = info.endPos - GenTime(2.5);
                     info.track = m_dragItem->track();
                     int transitiontrack = info.track - 1;
-                    slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack, QMap<QString, QString>());
+                    slotAddTransition((ClipItem *) m_dragItem, info, transitiontrack);
                 }
                 updateSnapPoints(m_dragItem);
                 collision = true;
@@ -550,38 +550,36 @@ void CustomTrackView::slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect
     m_commandStack->push(command);
 }
 
-void CustomTrackView::slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement transition) {
-    AddTransitionCommand* command = new AddTransitionCommand(this, transitionInfo, endTrack, desc, transition, true);
+void CustomTrackView::slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition) {
+    AddTransitionCommand* command = new AddTransitionCommand(this, transitionInfo, endTrack, transition, true);
     m_commandStack->push(command);
     m_document->setModified(true);
 }
 
-void CustomTrackView::addTransition(ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement params) {
-    Transition *tr = new Transition(transitionInfo, endTrack, m_scale, m_document->fps(), desc, params);
+void CustomTrackView::addTransition(ItemInfo transitionInfo, int endTrack, QDomElement params) {
+    Transition *tr = new Transition(transitionInfo, endTrack, m_scale, m_document->fps(), params);
     scene()->addItem(tr);
 
     //kDebug() << "---- ADDING transition " << e.attribute("tag") << ", on tracks " << m_tracksList.count() - e.attribute("transition_track").toInt() << " / " << getPreviousVideoTrack(e.attribute("transition_track").toInt());
-    m_document->renderer()->mltAddTransition(tr->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, params);
+    m_document->renderer()->mltAddTransition(tr->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, tr->toXML());
     m_document->setModified(true);
 }
 
-void CustomTrackView::deleteTransition(ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement params) {
+void CustomTrackView::deleteTransition(ItemInfo transitionInfo, int endTrack, QDomElement params) {
     Transition *item = getTransitionItemAt((int)transitionInfo.startPos.frames(m_document->fps()) + 1, transitionInfo.track);
-    QMap < QString, QString> map;
-    m_document->renderer()->mltDeleteTransition(item->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, params);
+    m_document->renderer()->mltDeleteTransition(item->transitionTag(), endTrack, m_tracksList.count() - transitionInfo.track, transitionInfo.startPos, transitionInfo.endPos, item->toXML());
     delete item;
     m_document->setModified(true);
 }
 
 void CustomTrackView::slotTransitionUpdated(QDomElement old, QDomElement newEffect) {
-    /*EditTransitionCommand *command = new EditTransitionCommand(this, newEffect.attribute("a_track").toInt(), GenTime(newEffect.attribute("start").toInt(), m_document->renderer()->fps()) , old, newEffect , true);
+    EditTransitionCommand *command = new EditTransitionCommand(this, newEffect.attribute("a_track").toInt(), GenTime(newEffect.attribute("start").toInt(), m_document->fps()) , old, newEffect , true);
     m_commandStack->push(command);
-    m_document->setModified(true);*/
+    m_document->setModified(true);
 }
 
 void CustomTrackView::updateTransition(int track, GenTime pos, QDomElement oldTransition, QDomElement transition) {
-
-    m_document->renderer()->mltUpdateTransition(oldTransition.attribute("tag"), transition.attribute("tag"), m_tracksList.count() - 1  - transition.attribute("transition_track").toInt(), m_tracksList.count() - transition.attribute("transition_track").toInt() ,
+    m_document->renderer()->mltUpdateTransition(oldTransition.attribute("tag"), transition.attribute("tag"), transition.attribute("transitionb_track").toInt(), m_tracksList.count() - transition.attribute("transition_atrack").toInt() ,
             GenTime(transition.attribute("start").toInt(), m_document->renderer()->fps()),
             GenTime(transition.attribute("end").toInt(), m_document->renderer()->fps()),
             transition);
index bf7db3241d3a2826fed146e67280224b577362a7..baca87454228b9d4694dcc946e3e6ee1d379274d 100644 (file)
@@ -58,8 +58,8 @@ public:
     void addEffect(int track, GenTime pos, QDomElement effect);
     void deleteEffect(int track, GenTime pos, QDomElement effect);
     void updateEffect(int track, GenTime pos, QDomElement effect);
-    void addTransition(ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement params);
-    void deleteTransition(ItemInfo transitionInfo, int endTrack, QMap <QString, QString> desc, QDomElement params);
+    void addTransition(ItemInfo transitionInfo, int endTrack, QDomElement params);
+    void deleteTransition(ItemInfo transitionInfo, int endTrack, QDomElement params);
     void updateTransition(int track, GenTime pos,  QDomElement oldTransition, QDomElement transition);
     void moveTransition(GenTime oldpos, GenTime newpos);
     void activateMonitor();
@@ -77,8 +77,7 @@ public slots:
     void slotUpdateClipEffect(ClipItem *clip, QDomElement oldeffect, QDomElement effect);
     void slotRefreshEffects(ClipItem *clip);
     void setDuration(int duration);
-    void slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack,
-                           QMap <QString, QString> desc, QDomElement transition = QDomElement());
+    void slotAddTransition(ClipItem* clip, ItemInfo transitionInfo, int endTrack, QDomElement transition = QDomElement());
     void slotTransitionUpdated(QDomElement, QDomElement);
     void slotSwitchTrackAudio(int ix);
     void slotSwitchTrackVideo(int ix);
index 0df189036a1c96c7dce0a14df1e9f4edf8a63a8b..867cd96427149500334b8564e602263e9d328175 100644 (file)
@@ -32,7 +32,7 @@
 #include "kdenlivesettings.h"
 
 
-Transition::Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QMap <QString, QString> desc, QDomElement params) : AbstractClipItem(info, QRectF(info.startPos.frames(fps) *scale , info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 2, (info.endPos - info.startPos).frames(fps) * scale , KdenliveSettings::trackheight() - 1)) {
+Transition::Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QDomElement params) : AbstractClipItem(info, QRectF(info.startPos.frames(fps) *scale , info.track * KdenliveSettings::trackheight() + KdenliveSettings::trackheight() / 2, (info.endPos - info.startPos).frames(fps) * scale , KdenliveSettings::trackheight() - 1)) {
     m_singleClip = true;
     m_transitionTrack = transitiontrack;
     m_secondClip = NULL;
@@ -40,17 +40,15 @@ Transition::Transition(const ItemInfo info, int transitiontrack, double scale, d
     m_fps = fps;
     m_cropDuration = m_maxDuration;
     //m_referenceClip = clipa;
-    if (desc.isEmpty()) {
-        m_description.insert("tag", "luma");
-        m_description.insert("name", "Luma");
-        m_description.insert("description", "Luma Transitions");
-        QDomDocument doc;
-        m_parameters = doc.createElement("ktransition");
+    if (params.isNull()) {
+       QDomDocument doc;
+       doc.setContent(QString("<ktransition tag=\"luma\"><name>Luma</name><description>Luma Transitions</description><properties id=\"luma\" tag=\"luma\" /><parameter type=\"bool\" name=\"reverse\" max=\"1\" min=\"0\" default=\"1\" factor=\"1\"><name>Reverse</name></parameter></ktransition>"));
+       m_parameters = doc.documentElement();
     } else {
-        m_description = desc;
         m_parameters = params;
     }
 
+    m_name = m_parameters.elementsByTagName("name").item(0).toElement().text();
     m_secondClip = 0;
     setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
     setZValue(2);
@@ -62,15 +60,16 @@ Transition::~Transition() {
 }
 
 QString Transition::transitionName() const {
-    return m_description.value("name");
+    return m_name;
 }
 
 QString Transition::transitionTag() const {
-    return m_description.value("tag");
+    return m_parameters.attribute("tag");
 }
 
 void Transition::setTransitionParameters(const QDomElement params) {
     m_parameters = params;
+    m_name = m_parameters.elementsByTagName("name").item(0).toElement().text();
 }
 
 
@@ -80,12 +79,13 @@ bool Transition::invertedTransition() const {
 
 QPixmap Transition::transitionPixmap() const {
     KIcon icon;
-    if (transitionTag() == "luma") {
+    QString tag = transitionTag();
+    if ( tag == "luma") {
         if (invertedTransition()) icon = KIcon("kdenlive_trans_up");
         else icon = KIcon("kdenlive_trans_down");
-    } else if (transitionTag() == "composite") {
+    } else if ( tag == "composite") {
         icon = KIcon("kdenlive_trans_wiper");
-    } else if (transitionTag() == "lumafile") {
+    } else if ( tag == "lumafile") {
         icon = KIcon("kdenlive_trans_luma");
     } else icon = KIcon("kdenlive_trans_pip");
     return icon.pixmap(QSize(15, 15));
@@ -175,19 +175,19 @@ const ClipItem *Transition::referencedClip() const {
     return m_referenceClip;
 }
 
-/*
 QDomElement Transition::toXML() {
-    m_transitionParameters.setAttribute("type", transitionTag);
+    m_parameters.setAttribute("type", transitionTag());
     //m_transitionParameters.setAttribute("inverted", invertTransition());
-    m_transitionParameters.setAttribute("transition_track", m_transitionTrack);
-    m_transitionParameters.setAttribute("start", transitionStartTime().frames(m_referenceClip->fps()));
-    m_transitionParameters.setAttribute("end", transitionEndTime().frames(m_referenceClip->fps()));
+    m_parameters.setAttribute("transition_atrack", track());
+    m_parameters.setAttribute("transition_btrack", m_transitionTrack);
+    m_parameters.setAttribute("start", startPos().frames(m_fps));
+    m_parameters.setAttribute("end", endPos().frames(m_fps));
 
     if (m_secondClip) {
-        m_transitionParameters.setAttribute("clipb_starttime", m_secondClip->startPos().frames(m_referenceClip->fps()));
-        m_transitionParameters.setAttribute("clipb_track", transitionEndTrack());
+        m_parameters.setAttribute("clipb_starttime", m_secondClip->startPos().frames(m_referenceClip->fps()));
+        m_parameters.setAttribute("clipb_track", transitionEndTrack());
     }
 
-    return m_transitionParameters;
-}*/
+    return m_parameters;
+}
 
index b52817d0a30305f4bf5133c4af1a5ad9bbaf13b7..b82ae75583e811ad2cfd327d2899b84be083323d 100644 (file)
@@ -38,14 +38,14 @@ class Transition : public AbstractClipItem {
     Q_OBJECT
 public:
 
-    Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QMap <QString, QString> desc, QDomElement params = QDomElement());
+    Transition(const ItemInfo info, int transitiontrack, double scale, double fps, QDomElement params = QDomElement());
     virtual ~Transition();
     virtual void paint(QPainter *painter,
                        const QStyleOptionGraphicsItem *option,
                        QWidget *widget);
     virtual int type() const;
     /** Returns an XML representation of this transition. */
-    //QDomElement toXML();
+    QDomElement toXML();
 
     /** Return the track number of transition in the playlist*/
     int transitionEndTrack() const;
@@ -68,8 +68,7 @@ public:
 
 private:
     bool m_singleClip;
-    /** contains the transition description (name, tag, description) */
-    QMap <QString, QString> m_description;
+    QString m_name;
     /** contains the transition parameters */
     QDomElement m_parameters;
     /** The clip to which the transition is attached */
index b6d66898fad55bf0944e1286e17d790570436fc2..656bf792f58c878c59f9bcfc58f936defa987fca 100644 (file)
@@ -37,7 +37,7 @@ TransitionSettings::TransitionSettings(EffectsList *transitions, QWidget* parent
 
 
 void TransitionSettings::slotTransitionChanged() {
-    /*
+    
         QDomElement e = m_usedTransition->toXML();
 
         //set old values from e in <ktransition> to desc (like reverse and so )
@@ -48,7 +48,6 @@ void TransitionSettings::slotTransitionChanged() {
         }
         emit transitionUpdated(e, m_usedTransition->toXML());
         emit transferParamDesc(desc, 0, 0);
-    */
 }
 
 void TransitionSettings::slotTransitionItemSelected(Transition* t) {