+QString ClipManager::projectFolder() const
+{
+ return m_doc->projectFolder().path();
+}
+
+void ClipManager::addFolder(const QString &id, const QString &name)
+{
+ m_folderList.insert(id, name);
+}
+
+void ClipManager::deleteFolder(const QString &id)
+{
+ m_folderList.remove(id);
+}
+
+AbstractGroupItem *ClipManager::createGroup()
+{
+ AbstractGroupItem *group = new AbstractGroupItem(m_doc->fps());
+ m_groupsList.append(group);
+ return group;
+}
+
+void ClipManager::removeGroup(AbstractGroupItem *group)
+{
+ m_groupsList.removeAll(group);
+}
+
+QDomElement ClipManager::groupsXml() const
+{
+ QDomDocument doc;
+ QDomElement groups = doc.createElement("groups");
+ doc.appendChild(groups);
+ for (int i = 0; i < m_groupsList.count(); i++) {
+ QDomElement group = doc.createElement("group");
+ groups.appendChild(group);
+ QList <QGraphicsItem *> children = m_groupsList.at(i)->childItems();
+ for (int j = 0; j < children.count(); j++) {
+ if (children.at(j)->type() == AVWIDGET || children.at(j)->type() == TRANSITIONWIDGET) {
+ AbstractClipItem *item = static_cast <AbstractClipItem *>(children.at(j));
+ ItemInfo info = item->info();
+ if (item->type() == AVWIDGET) {
+ QDomElement clip = doc.createElement("clipitem");
+ clip.setAttribute("track", info.track);
+ clip.setAttribute("position", info.startPos.frames(m_doc->fps()));
+ group.appendChild(clip);
+ } else if (item->type() == TRANSITIONWIDGET) {
+ QDomElement clip = doc.createElement("transitionitem");
+ clip.setAttribute("track", info.track);
+ clip.setAttribute("position", info.startPos.frames(m_doc->fps()));
+ group.appendChild(clip);
+ }
+ }
+ }
+ }
+ return doc.documentElement();
+}
+
+
+void ClipManager::slotClipModified(const QString &path)
+{
+ //kDebug() << "// CLIP: " << path << " WAS MODIFIED";
+ const QList <DocClipBase *> list = getClipByResource(path);
+ for (int i = 0; i < list.count(); i++) {
+ DocClipBase *clip = list.at(i);
+ if (clip != NULL) {
+ QString id = clip->getId();
+ if (!m_modifiedClips.contains(id))
+ emit modifiedClip(id);
+ m_modifiedClips[id] = QTime::currentTime();
+ }
+ }
+ if (!m_modifiedTimer.isActive()) m_modifiedTimer.start();
+}
+
+void ClipManager::slotProcessModifiedClips()
+{
+ if (!m_modifiedClips.isEmpty()) {
+ QMapIterator<QString, QTime> i(m_modifiedClips);
+ while (i.hasNext()) {
+ i.next();
+ if (QTime::currentTime().msecsTo(i.value()) <= -1500) {
+ emit reloadClip(i.key());
+ m_modifiedClips.remove(i.key());
+ break;
+ }
+ }
+ }
+ if (m_modifiedClips.isEmpty()) m_modifiedTimer.stop();
+}
+
+void ClipManager::slotClipMissing(const QString &path)
+{
+ // kDebug() << "// CLIP: " << path << " WAS MISSING";
+ const QList <DocClipBase *> list = getClipByResource(path);
+ for (int i = 0; i < list.count(); i++) {
+ DocClipBase *clip = list.at(i);
+ if (clip != NULL) emit missingClip(clip->getId());
+ }
+}
+
+void ClipManager::slotClipAvailable(const QString &path)
+{
+ // kDebug() << "// CLIP: " << path << " WAS ADDED";
+ const QList <DocClipBase *> list = getClipByResource(path);
+ for (int i = 0; i < list.count(); i++) {
+ DocClipBase *clip = list.at(i);
+ if (clip != NULL) emit availableClip(clip->getId());
+ }
+}
+
+int ClipManager::clipsCount() const
+{
+ return m_clipList.count();
+}
+