]> git.sesse.net Git - kdenlive/commitdiff
rebuild clip groups when loading a project
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 19 Mar 2009 12:44:41 +0000 (12:44 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 19 Mar 2009 12:44:41 +0000 (12:44 +0000)
svn path=/trunk/kdenlive/; revision=3164

src/customtrackview.cpp
src/customtrackview.h
src/trackview.cpp

index 2b9f17d2d76bbfe79b94bdcfa61d24fa887f8702..d8f9659ecec526780543056dd8521acf12a5c618 100644 (file)
@@ -2766,8 +2766,8 @@ ClipItem *CustomTrackView::getClipItemAt(GenTime pos, int track) {
     return getClipItemAt(framepos, track);
 }
 
-Transition *CustomTrackView::getTransitionItemAt(GenTime pos, int track) {
-    QList<QGraphicsItem *> list = scene()->items(QPointF(pos.frames(m_document->fps()), (track + 1) * m_tracksHeight));
+Transition *CustomTrackView::getTransitionItemAt(int pos, int track) {
+    QList<QGraphicsItem *> list = scene()->items(QPointF(pos, (track + 1) * m_tracksHeight));
     Transition *clip = NULL;
     for (int i = 0; i < list.size(); i++) {
         if (list.at(i)->type() == TRANSITIONWIDGET) {
@@ -2778,6 +2778,10 @@ Transition *CustomTrackView::getTransitionItemAt(GenTime pos, int track) {
     return clip;
 }
 
+Transition *CustomTrackView::getTransitionItemAt(GenTime pos, int track) {
+    return getTransitionItemAt(pos.frames(m_document->fps()), track);
+}
+
 Transition *CustomTrackView::getTransitionItemAtEnd(GenTime pos, int track) {
     int framepos = (int)(pos.frames(m_document->fps()));
     QList<QGraphicsItem *> list = scene()->items(QPointF(framepos - 1, (track + 1) * m_tracksHeight));
@@ -3961,4 +3965,25 @@ void CustomTrackView::getTransitionAvailableSpace(AbstractClipItem *item, GenTim
 }
 
 
+void CustomTrackView::loadGroups(const QDomNodeList groups) {
+    for (int i = 0; i < groups.count(); i++) {
+        QDomNodeList children = groups.at(i).childNodes();
+        scene()->clearSelection();
+        for (int nodeindex = 0; nodeindex < children.count(); nodeindex++) {
+            QDomNode n = children.item(nodeindex);
+            QDomElement elem = n.toElement();
+            int pos = elem.attribute("position").toInt();
+            int track = elem.attribute("track").toInt();
+            if (elem.tagName() == "clipitem") {
+                ClipItem *clip = getClipItemAt(pos, track); //m_document->tracksCount() - transitiontrack);
+                if (clip) clip->setSelected(true);
+            } else {
+                Transition *clip = getTransitionItemAt(pos, track); //m_document->tracksCount() - transitiontrack);
+                if (clip) clip->setSelected(true);
+            }
+        }
+        groupSelectedItems(false, true);
+    }
+}
+
 #include "customtrackview.moc"
index 8b0d95b68f56b115772247696b16460643a61e3f..7af5a0976b3b002589a2aedfbf63c926d89de17b 100644 (file)
@@ -112,6 +112,7 @@ public:
     void lockTrack(int ix, bool lock);
     void groupClips(bool group = true);
     void doGroupClips(QList <ItemInfo> clipInfos, QList <ItemInfo> transitionInfos, bool group);
+    void loadGroups(const QDomNodeList groups);
 
 public slots:
     void setCursorPos(int pos, bool seek = true);
@@ -189,6 +190,7 @@ private:
     ClipItem *getClipItemAt(GenTime pos, int track);
     ClipItem *getClipItemAtEnd(GenTime pos, int track);
     ClipItem *getClipItemAtStart(GenTime pos, int track);
+    Transition *getTransitionItemAt(int pos, int track);
     Transition *getTransitionItemAt(GenTime pos, int track);
     Transition *getTransitionItemAtEnd(GenTime pos, int track);
     Transition *getTransitionItemAtStart(GenTime pos, int track);
index 9ad4ec6320dc5ac77a20a0ef18c2e70d81944b24..23803a3de4009e411f59e0ba7b3281d04d82c964 100644 (file)
@@ -316,6 +316,10 @@ void TrackView::parseDocument(QDomDocument doc) {
         m_trackview->addGuide(pos, comment);
     }
 
+    // Rebuild groups
+    QDomNodeList groups = doc.elementsByTagName("group");
+    m_trackview->loadGroups(groups);
+
     m_trackview->setDuration(duration);
     kDebug() << "///////////  TOTAL PROJECT DURATION: " << duration;
     slotRebuildTrackHeaders();