X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fprojectitem.cpp;h=bf02065b2d8a4be2169d661b0b26d1e246c7c55b;hb=a280ae2d46ea76c5f393c2087b1952ad423f213a;hp=1039be1c42731eed0070055ede4350591eb75f42;hpb=6b48ad9b2a0145a86322c62c1444d2559fe13356;p=kdenlive diff --git a/src/projectitem.cpp b/src/projectitem.cpp index 1039be1c..bf02065b 100644 --- a/src/projectitem.cpp +++ b/src/projectitem.cpp @@ -28,48 +28,40 @@ #include const int DurationRole = Qt::UserRole + 1; +const int ProxyRole = Qt::UserRole + 5; const int itemHeight = 38; ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) : + m_clip(clip), + m_clipId(clip->getId()), QTreeWidgetItem(parent, PROJECTCLIPTYPE) { - setSizeHint(0, QSize(60, itemHeight)); - setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable); - m_clip = clip; - m_clipId = clip->getId(); - 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(0, name); - setText(1, m_clip->description()); - m_clip->askForAudioThumbs(); - GenTime duration = m_clip->duration(); - if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); - //setFlags(Qt::NoItemFlags); - //kDebug() << "Constructed with clipId: " << m_clipId; + buildItem(); } ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) : + m_clip(clip), + m_clipId(clip->getId()), QTreeWidgetItem(parent, PROJECTCLIPTYPE) + +{ + buildItem(); +} + +void ProjectItem::buildItem() { - setSizeHint(0, QSize(60, itemHeight)); - setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable); - m_clip = clip; - m_clipId = clip->getId(); + setSizeHint(0, QSize(itemHeight * 3, itemHeight)); + if (m_clip->isPlaceHolder()) setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); + else setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled); QString name = m_clip->getProperty("name"); if (name.isEmpty()) name = KUrl(m_clip->getProperty("resource")).fileName(); m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt(); setText(0, name); setText(1, m_clip->description()); - m_clip->askForAudioThumbs(); GenTime duration = m_clip->duration(); if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); - //setFlags(Qt::NoItemFlags); - //kDebug() << "Constructed with clipId: " << m_clipId; } - ProjectItem::~ProjectItem() { } @@ -159,6 +151,7 @@ DocClipBase *ProjectItem::referencedClip() void ProjectItem::slotSetToolTip() { QString tip = ""; + if (m_clip->isPlaceHolder()) tip.append(i18n("Missing") + " | "); switch (m_clipType) { case AUDIO: tip.append(i18n("Audio clip") + "
" + clipUrl().path()); @@ -225,7 +218,6 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con } m_clip->setProperties(attributes); m_clip->setMetadata(metadata); - m_clip->askForAudioThumbs(); if (m_clip->description().isEmpty()) { if (metadata.contains("description")) { @@ -238,3 +230,21 @@ void ProjectItem::setProperties(const QMap < QString, QString > &attributes, con } } +void ProjectItem::setProxyStatus(int status) +{ + if (status == data(0, ProxyRole).toInt()) return; + setData(0, ProxyRole, status); + if (m_clip && status == 0) m_clip->abortProxy(); +} + +bool ProjectItem::hasProxy() const +{ + if (m_clip == NULL) return false; + return !m_clip->getProperty("proxy").isEmpty(); +} + +bool ProjectItem::isProxyRunning() const +{ + return (data(0, ProxyRole).toInt() == 1); +} +