]> git.sesse.net Git - kdenlive/blob - src/clipmanager.cpp
Fix audio thumbs progress info when window was not focused
[kdenlive] / src / clipmanager.cpp
1 /***************************************************************************
2  *   Copyright (C) 2008 by Jean-Baptiste Mardelle (jb@kdenlive.org)        *
3  *                                                                         *
4  *   This program is free software; you can redistribute it and/or modify  *
5  *   it under the terms of the GNU General Public License as published by  *
6  *   the Free Software Foundation; either version 2 of the License, or     *
7  *   (at your option) any later version.                                   *
8  *                                                                         *
9  *   This program is distributed in the hope that it will be useful,       *
10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12  *   GNU General Public License for more details.                          *
13  *                                                                         *
14  *   You should have received a copy of the GNU General Public License     *
15  *   along with this program; if not, write to the                         *
16  *   Free Software Foundation, Inc.,                                       *
17  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
18  ***************************************************************************/
19 #include <KDebug>
20 #include <KFileDialog>
21
22 #include "addclipcommand.h"
23 #include "kdenlivesettings.h"
24 #include "clipmanager.h"
25 #include "docclipbase.h"
26
27 ClipManager::ClipManager(KdenliveDoc *doc):m_doc(doc)
28 {
29   m_clipIdCounter = 1;
30 }
31
32 ClipManager::~ClipManager()
33 {
34 }
35
36 void ClipManager::setThumbsProgress(KUrl url, int progress)
37 {
38   m_doc->setThumbsProgress(url, progress);
39 }
40
41
42 void ClipManager::addClip(DocClipBase *clip)
43 {
44   m_clipList.append(clip);
45 }
46
47 void ClipManager::slotDeleteClip(uint clipId)
48 {
49   for (int i = 0; i < m_clipList.count(); i++) {
50     if (m_clipList.at(i)->getId() == clipId) {
51       //m_clipList.removeAt(i);
52       AddClipCommand *command = new AddClipCommand(m_doc, m_clipList.at(i)->toXML(), clipId, false);
53       m_doc->commandStack()->push(command);
54       break;
55     }
56   }
57 }
58
59 void ClipManager::deleteClip(uint clipId)
60 {
61   for (int i = 0; i < m_clipList.count(); i++) {
62     if (m_clipList.at(i)->getId() == clipId) {
63       m_clipList.removeAt(i);
64       break;
65     }
66   }
67 }
68
69 DocClipBase *ClipManager::getClipAt(int pos)
70 {
71   return m_clipList.at(pos);
72 }
73
74 DocClipBase *ClipManager::getClipById(int clipId)
75 {
76   kDebug()<<"++++  CLIP MAN, LOOKING FOR CLIP ID: "<<clipId;
77   for (int i = 0; i < m_clipList.count(); i++) {
78     if (m_clipList.at(i)->getId() == clipId)
79     {
80         kDebug()<<"++++  CLIP MAN, FOUND FOR CLIP ID: "<<clipId;
81       return m_clipList.at(i);
82     }
83   }
84   return NULL;
85 }
86
87 void ClipManager::slotAddClipFile(const KUrl url, const QString group)
88 {
89     kDebug()<<"/////  CLIP MANAGER, ADDING CLIP: "<<url;
90     QDomDocument doc;
91     QDomElement prod = doc.createElement("producer");
92     prod.setAttribute("resource", url.path());
93     uint id = m_clipIdCounter++;
94     prod.setAttribute("id", QString::number(id));
95     if (!group.isEmpty()) prod.setAttribute("group", group);
96     KMimeType::Ptr type = KMimeType::findByUrl(url);
97     if (type->name().startsWith("image/")) {
98       prod.setAttribute("type", (int) IMAGE);
99       prod.setAttribute("in", "0");
100       prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()));
101     }
102     AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
103     m_doc->commandStack()->push(command);
104 }
105
106 void ClipManager::slotAddColorClipFile(const QString name, const QString color, QString duration, const QString group)
107 {
108     QDomDocument doc;
109     QDomElement prod = doc.createElement("producer");
110     prod.setAttribute("mlt_service", "colour");
111     prod.setAttribute("colour", color);
112     prod.setAttribute("type", (int) COLOR);
113     uint id = m_clipIdCounter++;
114     prod.setAttribute("id", QString::number(id));
115     prod.setAttribute("in", "0");
116     prod.setAttribute("out", m_doc->getFramePos(duration));
117     prod.setAttribute("name", name);
118     AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
119     m_doc->commandStack()->push(command);
120 }
121