3 #include <QStylePainter>
12 #include "projectitem.h"
15 const int NameRole = Qt::UserRole;
16 const int DurationRole = NameRole + 1;
17 const int FullPathRole = NameRole + 2;
18 const int ClipTypeRole = NameRole + 3;
20 ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings, QDomElement xml, int clipId)
21 : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_clipType(DocClipBase::NONE), m_clipId(clipId), m_isGroup(false)
23 m_element = xml.cloneNode().toElement();
24 setSizeHint(0, QSize(65, 45));
25 setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled);
26 if (!m_element.isNull()) {
27 m_element.setAttribute("id", clipId);
28 QString cType = m_element.attribute("type", QString::null);
29 if (!cType.isEmpty()) {
30 m_clipType = (DocClipBase::CLIPTYPE) cType.toInt();
36 ProjectItem::ProjectItem(QTreeWidgetItem * parent, const QStringList & strings, QDomElement xml, int clipId)
37 : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_clipType(DocClipBase::NONE), m_clipId(clipId), m_isGroup(false)
39 m_element = xml.cloneNode().toElement();
40 setSizeHint(0, QSize(65, 45));
41 setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled);
42 if (!m_element.isNull()) {
43 m_element.setAttribute("id", clipId);
44 QString cType = m_element.attribute("type", QString::null);
45 if (!cType.isEmpty()) {
46 m_clipType = (DocClipBase::CLIPTYPE) cType.toInt();
52 ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings)
53 : QTreeWidgetItem(parent, strings, QTreeWidgetItem::UserType), m_element(QDomElement()), m_clipType(DocClipBase::NONE), m_clipId(-1), m_isGroup(true)
55 setSizeHint(0, QSize(65, 45));
56 setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled);
57 setIcon(0, KIcon("folder"));
60 ProjectItem::~ProjectItem()
64 int ProjectItem::clipId()
69 bool ProjectItem::isGroup()
75 QStringList ProjectItem::names()
78 result.append(text(0));
79 result.append(text(1));
80 result.append(text(2));
84 QDomElement ProjectItem::toXml()
89 void ProjectItem::slotSetToolTip()
91 QString tip = "<qt><b>";
94 tip.append(i18n("Audio clip"));
97 tip.append(i18n("Mute video clip"));
100 tip.append(i18n("Video clip"));
103 tip.append(i18n("Color clip"));
104 setData(1, DurationRole, Timecode::getEasyTimecode(GenTime(m_element.attribute("out", "250").toInt(), 25), 25));
107 tip.append(i18n("Image clip"));
110 tip.append(i18n("Text clip"));
113 tip.append(i18n("Slideshow clip"));
116 tip.append(i18n("Virtual clip"));
119 tip.append(i18n("Playlist clip"));
122 tip.append(i18n("Unknown clip"));
129 void ProjectItem::setProperties(const QMap < QString, QString > &attributes, const QMap < QString, QString > &metadata)
131 if (attributes.contains("duration")) {
132 m_duration = GenTime(attributes["duration"].toInt(), 25);
133 setData(1, DurationRole, Timecode::getEasyTimecode(m_duration, 25));
134 m_durationKnown = true;
136 // No duration known, use an arbitrary one until it is.
137 m_duration = GenTime(0.0);
138 m_durationKnown = false;
142 //extend attributes -reh
144 if (m_clipType == DocClipBase::NONE) {
145 if (attributes.contains("type")) {
146 if (attributes["type"] == "audio")
147 m_clipType = DocClipBase::AUDIO;
148 else if (attributes["type"] == "video")
149 m_clipType = DocClipBase::VIDEO;
150 else if (attributes["type"] == "av")
151 m_clipType = DocClipBase::AV;
152 else if (attributes["type"] == "playlist")
153 m_clipType = DocClipBase::PLAYLIST;
155 m_clipType = DocClipBase::AV;
160 if (m_element.isNull()) {
162 m_element = doc.createElement("producer");
164 m_element.setAttribute("resource", attributes["filename"]);
165 m_element.setAttribute("type", (int) m_clipType);
167 if (attributes.contains("height")) {
168 m_height = attributes["height"].toInt();
172 if (attributes.contains("width")) {
173 m_width = attributes["width"].toInt();
178 if (attributes.contains("name")) {
179 m_decompressor = attributes["name"];
181 m_decompressor = "n/a";
183 //video type ntsc/pal
184 if (attributes.contains("system")) {
185 m_system = attributes["system"];
189 if (attributes.contains("fps")) {
190 m_framesPerSecond = attributes["fps"].toInt();
192 // No frame rate known.
193 m_framesPerSecond = 0;
195 //audio attributes -reh
196 if (attributes.contains("channels")) {
197 m_channels = attributes["channels"].toInt();
201 if (attributes.contains("format")) {
202 m_format = attributes["format"];
206 if (attributes.contains("frequency")) {
207 m_frequency = attributes["frequency"].toInt();
211 if (attributes.contains("videocodec")) {
212 m_videoCodec = attributes["videocodec"];
214 if (attributes.contains("audiocodec")) {
215 m_audioCodec = attributes["audiocodec"];
218 m_metadata = metadata;
220 if (m_metadata.contains("description")) {
221 setDescription (m_metadata["description"]);
223 else if (m_metadata.contains("comment")) {
224 setDescription (m_metadata["comment"]);
230 #include "projectitem.moc"