3 #include <QStylePainter>
11 #include "projectitem.h"
14 const int NameRole = Qt::UserRole;
15 const int DurationRole = NameRole + 1;
16 const int FullPathRole = NameRole + 2;
17 const int ClipTypeRole = NameRole + 3;
19 ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings, QDomElement xml, int type)
20 : QTreeWidgetItem(parent, strings, type), m_element(xml), m_clipType(DocClipBase::NONE)
22 setSizeHint(0, QSize(65, 45));
23 setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled);
24 QString cType = m_element.attribute("type", 0);
25 if (!cType.isEmpty()) {
26 m_clipType = (DocClipBase::CLIPTYPE) cType.toInt();
32 ProjectItem::~ProjectItem()
36 QDomElement ProjectItem::toXml()
41 void ProjectItem::slotSetToolTip()
43 QString tip = "<qt><b>";
46 tip.append(i18n("Audio clip"));
49 tip.append(i18n("Mute video clip"));
52 tip.append(i18n("Video clip"));
55 tip.append(i18n("Color clip"));
56 setData(1, DurationRole, Timecode::getEasyTimecode(GenTime(m_element.attribute("out", "250").toInt(), 25), 25));
59 tip.append(i18n("Image clip"));
62 tip.append(i18n("Text clip"));
65 tip.append(i18n("Slideshow clip"));
68 tip.append(i18n("Virtual clip"));
71 tip.append(i18n("Playlist clip"));
74 tip.append(i18n("Unknown clip"));
81 void ProjectItem::setProperties(const QMap < QString, QString > &attributes, const QMap < QString, QString > &metadata)
83 if (attributes.contains("duration")) {
84 m_duration = GenTime(attributes["duration"].toInt(), 25);
85 setData(1, DurationRole, Timecode::getEasyTimecode(m_duration, 25));
86 m_durationKnown = true;
88 // No duration known, use an arbitrary one until it is.
89 m_duration = GenTime(0.0);
90 m_durationKnown = false;
94 //extend attributes -reh
95 if (attributes.contains("type")) {
96 if (attributes["type"] == "audio")
97 m_clipType = DocClipBase::AUDIO;
98 else if (attributes["type"] == "video")
99 m_clipType = DocClipBase::VIDEO;
100 else if (attributes["type"] == "av")
101 m_clipType = DocClipBase::AV;
102 else if (attributes["type"] == "playlist")
103 m_clipType = DocClipBase::PLAYLIST;
105 m_clipType = DocClipBase::AV;
109 if (m_element.isNull()) {
111 m_element = doc.createElement("producer");
112 m_element.setAttribute("resource", attributes["filename"]);
113 m_element.setAttribute("type", (int) m_clipType);
116 if (attributes.contains("height")) {
117 m_height = attributes["height"].toInt();
121 if (attributes.contains("width")) {
122 m_width = attributes["width"].toInt();
127 if (attributes.contains("name")) {
128 m_decompressor = attributes["name"];
130 m_decompressor = "n/a";
132 //video type ntsc/pal
133 if (attributes.contains("system")) {
134 m_system = attributes["system"];
138 if (attributes.contains("fps")) {
139 m_framesPerSecond = attributes["fps"].toInt();
141 // No frame rate known.
142 m_framesPerSecond = 0;
144 //audio attributes -reh
145 if (attributes.contains("channels")) {
146 m_channels = attributes["channels"].toInt();
150 if (attributes.contains("format")) {
151 m_format = attributes["format"];
155 if (attributes.contains("frequency")) {
156 m_frequency = attributes["frequency"].toInt();
160 if (attributes.contains("videocodec")) {
161 m_videoCodec = attributes["videocodec"];
163 if (attributes.contains("audiocodec")) {
164 m_audioCodec = attributes["audiocodec"];
167 m_metadata = metadata;
169 if (m_metadata.contains("description")) {
170 setDescription (m_metadata["description"]);
172 else if (m_metadata.contains("comment")) {
173 setDescription (m_metadata["comment"]);
179 #include "projectitem.moc"