]> git.sesse.net Git - kdenlive/commitdiff
Use separate counters for Clips and Folders:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 21 Jan 2009 19:36:35 +0000 (19:36 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 21 Jan 2009 19:36:35 +0000 (19:36 +0000)
http://www.kdenlive.org:80/mantis/view.php?id=540

svn path=/branches/KDE4/; revision=2937

src/clipmanager.cpp
src/clipmanager.h
src/kdenlivedoc.cpp
src/projectlist.cpp
src/projectlist.h
src/renderer.cpp

index 80e793a6c7df3608f1f614c8898c201017f4d72d..379eaaba5835116a24a20bd06df25bede15558ee 100644 (file)
@@ -30,6 +30,7 @@
 
 ClipManager::ClipManager(KdenliveDoc *doc): m_doc(doc), m_audioThumbsEnabled(false), m_audioThumbsQueue(QList <QString> ()), m_generatingAudioId(QString()) {
     m_clipIdCounter = 1;
+    m_folderIdCounter = 1;
 }
 
 ClipManager::~ClipManager() {
@@ -102,6 +103,8 @@ void ClipManager::addClip(DocClipBase *clip) {
     m_clipList.append(clip);
     const QString id = clip->getId();
     if (id.toInt() >= m_clipIdCounter) m_clipIdCounter = id.toInt() + 1;
+    const QString gid = clip->getProperty("groupid");
+    if (!gid.isEmpty() && gid.toInt() >= m_folderIdCounter) m_folderIdCounter = gid.toInt() + 1;
 }
 
 void ClipManager::slotDeleteClip(const QString &clipId) {
@@ -301,6 +304,10 @@ int ClipManager::getFreeClipId() {
     return m_clipIdCounter++;
 }
 
+int ClipManager::getFreeFolderId() {
+    return m_folderIdCounter++;
+}
+
 int ClipManager::lastClipId() const {
     return m_clipIdCounter - 1;
 }
index 3b42db0c2ce676d26dd3c514f797f6a2e5bf3be1..d84a5bc58101b16004f598cfbccc0792bbff66b5 100644 (file)
@@ -64,6 +64,7 @@ Q_OBJECT public:
     void checkAudioThumbs();
     QList <DocClipBase*> documentClipList();
     int getFreeClipId();
+    int getFreeFolderId();
     int lastClipId() const;
     void startAudioThumbsGeneration();
     void endAudioThumbsGeneration(const QString &requestedId);
@@ -81,6 +82,7 @@ private:   // Private attributes
     /** the document undo stack*/
     KdenliveDoc *m_doc;
     int m_clipIdCounter;
+    int m_folderIdCounter;
     bool m_audioThumbsEnabled;
     QString m_generatingAudioId;
 
index 050dce8ee7166837dd7c7c74f03e58c061d5fe7e..0a3fa721d2c699b8d4b343955d8fa0c07f0d78d8 100644 (file)
@@ -1363,7 +1363,7 @@ void KdenliveDoc::slotAddClipFile(const KUrl url, const QString group, const QSt
 }
 
 void KdenliveDoc::slotAddFolder(const QString folderName) {
-    AddFolderCommand *command = new AddFolderCommand(this, folderName, QString::number(m_clipManager->getFreeClipId()), true);
+    AddFolderCommand *command = new AddFolderCommand(this, folderName, QString::number(m_clipManager->getFreeFolderId()), true);
     commandStack()->push(command);
     setModified(true);
 }
index f9be438be27cbd484335239887a3a8ecce7fe7a7..a249d8e530494f17d0a1d8f55c41cc3f54b197e7 100644 (file)
@@ -317,7 +317,7 @@ void ProjectList::slotAddClip(DocClipBase *clip, bool getProperties) {
     //kDebug() << "Adding clip with groupid: " << parent;
     ProjectItem *item = NULL;
     if (!parent.isEmpty()) {
-        ProjectItem *parentitem = getItemById(parent);
+        ProjectItem *parentitem = getFolderItemById(parent);
         if (!parentitem) {
             QStringList text;
             QString groupName = clip->getProperty("groupname");
@@ -622,22 +622,27 @@ void ProjectList::slotReplyGetImage(const QString &clipId, int pos, const QPixma
 }
 
 ProjectItem *ProjectList::getItemById(const QString &id) {
+    ProjectItem *item;
     QTreeWidgetItemIterator it(listView);
     while (*it) {
-        if (((ProjectItem *)(*it))->clipId() == id)
-            return static_cast<ProjectItem *>(*it);
+        item = static_cast<ProjectItem *>(*it);
+        if (item->clipId() == id && item->clipType() != FOLDER)
+            return item;
         ++it;
     }
     return NULL;
-#ifdef USED_TO_BE_THIS
+}
+
+ProjectItem *ProjectList::getFolderItemById(const QString &id) {
+    ProjectItem *item;
+    QTreeWidgetItemIterator it(listView);
     while (*it) {
-        if (((ProjectItem *)(*it))->clipId() == id)
-            break;
+        item = static_cast<ProjectItem *>(*it);
+        if (item->clipId() == id && item->clipType() == FOLDER)
+            return item;
         ++it;
     }
-    if (*it) return ((ProjectItem *)(*it));
     return NULL;
-#endif
 }
 
 void ProjectList::slotSelectClip(const QString &ix) {
index 8be45a43d5d91379c27ebd36c39e1de97fab5cef..fb65403b84f96bb60ddfbeba6ad47abf6b0cd24c 100644 (file)
@@ -142,6 +142,7 @@ private:
     int m_clipIdCounter;
     void selectItemById(const QString &clipId);
     ProjectItem *getItemById(const QString &id);
+    ProjectItem *getFolderItemById(const QString &id);
     QAction *m_editAction;
     QAction *m_deleteAction;
     KdenliveDoc *m_doc;
index e519a8d346581ca9dc113dd03be649151a681aa1..92880e67edc109e08d969007b3aaec27216f7988 100644 (file)
@@ -1022,7 +1022,7 @@ void Render::stop() {
     if (m_mltConsumer && !m_mltConsumer->is_stopped()) {
         kDebug() << "/////////////   RENDER STOPPED: " << m_name;
         m_isBlocked = true;
-        m_mltConsumer->set("refresh", 0);
+        //m_mltConsumer->set("refresh", 0);
         m_mltConsumer->stop();
         // delete m_mltConsumer;
         // m_mltConsumer = NULL;
@@ -2940,10 +2940,11 @@ void Render::mltDeleteTrack(int ix) {
 void Render::updatePreviewSettings() {
     kDebug() << "////// RESTARTING CONSUMER";
     if (!m_mltConsumer || !m_mltProducer) return;
+    if (m_mltProducer->get_playtime() == 0) return;
     Mlt::Service service(m_mltProducer->parent().get_service());
     if (service.type() != tractor_type) return;
 
-    m_mltConsumer->set("refresh", 0);
+    //m_mltConsumer->set("refresh", 0);
     if (!m_mltConsumer->is_stopped()) m_mltConsumer->stop();
     m_mltConsumer->purge();
     QString scene = sceneList();