X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fprojectitem.cpp;h=3968c0d4d06769bda738be26e4b9d421af8b8243;hb=963bf16da6f89da417f251c0a39ab5fd7e0221c0;hp=e2daf636b2f4e39a8e5899c97033bc41d290ed71;hpb=33913412e6954ad4320d288b45122e70a3ce9d0e;p=kdenlive diff --git a/src/projectitem.cpp b/src/projectitem.cpp index e2daf636..3968c0d4 100644 --- a/src/projectitem.cpp +++ b/src/projectitem.cpp @@ -18,21 +18,16 @@ ***************************************************************************/ -#include -#include -#include -#include +#include "projectitem.h" +#include "timecode.h" +#include "kdenlivesettings.h" +#include "docclipbase.h" #include #include #include -#include "projectitem.h" -#include "timecode.h" -#include "kdenlivesettings.h" -#include "docclipbase.h" - const int NameRole = Qt::UserRole; const int DurationRole = NameRole + 1; const int UsageRole = NameRole + 2; @@ -40,11 +35,12 @@ const int UsageRole = NameRole + 2; // folder ProjectItem::ProjectItem(QTreeWidget * parent, const QStringList & strings, const QString &clipId) - : QTreeWidgetItem(parent, strings), m_clipType(FOLDER), m_groupName(strings.at(1)), m_clipId(clipId), m_clip(NULL) { + : QTreeWidgetItem(parent, strings), m_clipType(FOLDER), m_clipId(clipId), m_clip(NULL), m_groupname(strings.at(1)) { setSizeHint(0, QSize(65, 45)); setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable); setIcon(0, KIcon("folder")); - setToolTip(1, "" + i18n("Folder")); + setToolTip(1, "" + i18n("Folder")); + //kDebug() << "Constructed as folder, with clipId: " << m_clipId << ", and groupname: " << m_groupname; } ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) @@ -56,9 +52,14 @@ ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) QString name = m_clip->getProperty("name"); if (name.isEmpty()) name = KUrl(m_clip->getProperty("resource")).fileName(); m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt(); + if (m_clipType != UNKNOWN) slotSetToolTip(); setText(1, name); setText(2, m_clip->description()); - //kDebug() << "PROJECT ITE;. ADDING LCIP: " << m_clipId; + if ((m_clip->clipType() == AV || m_clip->clipType() == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs(); + GenTime duration = m_clip->duration(); + if (duration != GenTime()) setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); + //setFlags(Qt::NoItemFlags); + //kDebug() << "Constructed with clipId: " << m_clipId; } ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) @@ -72,7 +73,11 @@ ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt(); setText(1, name); setText(2, m_clip->description()); - //kDebug() << "PROJECT ITE;. ADDING LCIP: " << m_clipId; + if ((m_clip->clipType() == AV || m_clip->clipType() == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs(); + GenTime duration = m_clip->duration(); + if (duration != GenTime()) setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); + //setFlags(Qt::NoItemFlags); + //kDebug() << "Constructed with clipId: " << m_clipId; } @@ -100,14 +105,6 @@ bool ProjectItem::isGroup() const { return m_clipType == FOLDER; } -const QString ProjectItem::groupName() const { - return m_groupName; -} - -void ProjectItem::setGroupName(const QString name) { - m_groupName = name; -} - QStringList ProjectItem::names() const { QStringList result; result.append(text(0)); @@ -131,41 +128,66 @@ void ProjectItem::changeDuration(int frames) { } void ProjectItem::setProperties(QMap props) { + if (m_clip == NULL) return; m_clip->setProperties(props); } +QString ProjectItem::getClipHash() const { + if (m_clip == NULL) return QString(); + return m_clip->getClipHash(); +} + +void ProjectItem::setProperty(const QString &key, const QString &value) { + if (m_clip == NULL) return; + m_clip->setProperty(key, value); +} + +void ProjectItem::clearProperty(const QString &key) { + if (m_clip == NULL) return; + m_clip->clearProperty(key); +} + +const QString ProjectItem::groupName() const { + return m_groupname; +} + +void ProjectItem::setGroupName(const QString name) { + m_groupname = name; + setText(1, name); +} + DocClipBase *ProjectItem::referencedClip() { return m_clip; } void ProjectItem::slotSetToolTip() { - QString tip = ""; + QString tip = ""; switch (m_clipType) { - case 1: + case AUDIO: tip.append(i18n("Audio clip") + "
" + clipUrl().path()); break; - case 2: + case VIDEO: tip.append(i18n("Mute video clip") + "

" + clipUrl().path()); break; - case 3: + case AV: tip.append(i18n("Video clip") + "

" + clipUrl().path()); break; - case 4: + case COLOR: tip.append(i18n("Color clip")); break; - case 5: + case IMAGE: tip.append(i18n("Image clip") + "

" + clipUrl().path()); break; - case 6: + case TEXT: tip.append(i18n("Text clip")); break; - case 7: + case SLIDESHOW: tip.append(i18n("Slideshow clip")); break; - case 8: + case VIRTUAL: tip.append(i18n("Virtual clip")); break; - case 9: + case PLAYLIST: tip.append(i18n("Playlist clip") + "
" + clipUrl().path()); break; default: @@ -178,13 +200,13 @@ void ProjectItem::slotSetToolTip() { void ProjectItem::setProperties(const QMap < QString, QString > &attributes, const QMap < QString, QString > &metadata) { + if (m_clip == NULL) return; + //setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled); if (attributes.contains("duration")) { - //if (m_clipType == AUDIO || m_clipType == VIDEO || m_clipType == AV) - //m_clip->setProperty("duration", attributes["duration"]); - GenTime duration = GenTime(attributes["duration"].toInt(), KdenliveSettings::project_fps()); + GenTime duration = GenTime(attributes.value("duration").toInt(), KdenliveSettings::project_fps()); setData(1, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); m_clip->setDuration(duration); - //kDebug() << "//// LOADED CLIP, DURATION SET TO: " << duration.frames(KdenliveSettings::project_fps()); + //kDebug() << "//// LOADED CLIP, DURATION SET TO: " << duration.frames(KdenliveSettings::project_fps()); } else { // No duration known, use an arbitrary one until it is. } @@ -193,31 +215,26 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con //extend attributes -reh if (m_clipType == UNKNOWN) { - if (attributes.contains("type")) { - if (attributes["type"] == "audio") - m_clipType = AUDIO; - else if (attributes["type"] == "video") - m_clipType = VIDEO; - else if (attributes["type"] == "av") - m_clipType = AV; - else if (attributes["type"] == "playlist") - m_clipType = PLAYLIST; - } else { - m_clipType = AV; - } + QString cliptype = attributes.value("type"); + if (cliptype == "audio") m_clipType = AUDIO; + else if (cliptype == "video") m_clipType = VIDEO; + else if (cliptype == "av") m_clipType = AV; + else if (cliptype == "playlist") m_clipType = PLAYLIST; + else m_clipType = AV; + m_clip->setClipType(m_clipType); + slotSetToolTip(); } - slotSetToolTip(); - if ((m_clipType == AV || m_clipType == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->slotRequestAudioThumbs(); - m_clip->setProperties(attributes); + m_clip->setMetadata(metadata); + if ((m_clipType == AV || m_clipType == AUDIO) && KdenliveSettings::audiothumbnails()) m_clip->askForAudioThumbs(); if (m_clip->description().isEmpty()) { if (metadata.contains("description")) { - m_clip->setProperty("description", metadata["description"]); + m_clip->setProperty("description", metadata.value("description")); setText(2, m_clip->description()); } else if (metadata.contains("comment")) { - m_clip->setProperty("description", metadata["comment"]); + m_clip->setProperty("description", metadata.value("comment")); setText(2, m_clip->description()); } }