From: Jean-Baptiste Mardelle Date: Wed, 21 Jan 2009 19:36:35 +0000 (+0000) Subject: Use separate counters for Clips and Folders: X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=8f76e7d02955c9fb1b38b1423b2569469d2640cc;p=kdenlive Use separate counters for Clips and Folders: http://www.kdenlive.org:80/mantis/view.php?id=540 svn path=/branches/KDE4/; revision=2937 --- diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index 80e793a6..379eaaba 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -30,6 +30,7 @@ ClipManager::ClipManager(KdenliveDoc *doc): m_doc(doc), m_audioThumbsEnabled(false), m_audioThumbsQueue(QList ()), 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; } diff --git a/src/clipmanager.h b/src/clipmanager.h index 3b42db0c..d84a5bc5 100644 --- a/src/clipmanager.h +++ b/src/clipmanager.h @@ -64,6 +64,7 @@ Q_OBJECT public: void checkAudioThumbs(); QList 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; diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index 050dce8e..0a3fa721 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -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); } diff --git a/src/projectlist.cpp b/src/projectlist.cpp index f9be438b..a249d8e5 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -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(*it); + item = static_cast(*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(*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) { diff --git a/src/projectlist.h b/src/projectlist.h index 8be45a43..fb65403b 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -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; diff --git a/src/renderer.cpp b/src/renderer.cpp index e519a8d3..92880e67 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -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();