if (!m_properties.contains("name")) m_properties.insert("name", url.fileName());
- //if (!url.isEmpty() && QFile::exists(url.path()))
- {
- m_thumbProd = new KThumb(clipManager, url, m_id, m_properties.value("file_hash"));
- if (m_clipType == AV || m_clipType == AUDIO || m_clipType == PLAYLIST) slotCreateAudioTimer();
- }
- //kDebug() << "type is video" << (m_clipType == AV) << " " << m_clipType;
-}
-
-/*DocClipBase & DocClipBase::operator=(const DocClipBase & clip) {
- DocClipBase::operator=(clip);
- m_id = clip.getId();
- m_clipType = clip.clipType();
- m_name = clip.name();
- m_duration = clip.duration();
- m_audioThumbCreated = clip.audioThumbCreated();
- m_properties = clip.properties();
- return *this;
-}*/
+ m_thumbProd = new KThumb(clipManager, url, m_id, m_properties.value("file_hash"));
+ if (m_clipType == AV || m_clipType == AUDIO || m_clipType == PLAYLIST) slotCreateAudioTimer();
+}
DocClipBase::~DocClipBase()
{
- kDebug() << "CLIP " << m_id << " DELETED******************************";
delete m_thumbProd;
if (m_audioTimer) {
m_audioTimer->stop();
delete m_audioTimer;
}
- /*kDebug() <<" * * *CNT "<<m_baseTrackProducers.count();
- if (m_baseTrackProducers.count() > 0) kDebug()<<"YOYO: "<<m_baseTrackProducers.at(0)->get_out()<<", CUT: "<<m_baseTrackProducers.at(0)->is_cut();*/
qDeleteAll(m_baseTrackProducers);
m_baseTrackProducers.clear();
qDeleteAll(m_audioTrackProducers);
}
-
#include <KLocale>
#include <KIcon>
+#include <QFile>
+
const int DurationRole = Qt::UserRole + 1;
const int ProxyRole = Qt::UserRole + 5;
const int itemHeight = 38;
setText(0, name);
setText(1, m_clip->description());
GenTime duration = m_clip->duration();
- if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
+ QString durationText;
+ if (duration != GenTime()) {
+ durationText = Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps());
+ }
+ if (m_clipType == PLAYLIST) {
+ // Check if the playlist xml contains a proxy inside, and inform user
+ if (playlistHasProxies(m_clip->fileURL().path())) {
+ durationText.prepend(i18n("Contains proxies") + " / ");
+ }
+ }
+ if (!durationText.isEmpty()) setData(0, DurationRole, durationText);
}
ProjectItem::~ProjectItem()
void ProjectItem::changeDuration(int frames)
{
- setData(0, DurationRole, Timecode::getEasyTimecode(GenTime(frames, KdenliveSettings::project_fps()), KdenliveSettings::project_fps()));
+ QString itemdata = data(0, DurationRole).toString();
+ if (itemdata.contains('/')) itemdata = itemdata.section('/', 0, 0) + "/ ";
+ else itemdata.clear();
+ setData(0, DurationRole, itemdata + Timecode::getEasyTimecode(GenTime(frames, KdenliveSettings::project_fps()), KdenliveSettings::project_fps()));
}
void ProjectItem::setProperties(QMap <QString, QString> props)
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")) {
- GenTime duration = GenTime(attributes.value("duration").toInt(), KdenliveSettings::project_fps());
- setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
- m_clip->setDuration(duration);
- } else {
- // No duration known, use an arbitrary one until it is.
- }
-
-
- //extend attributes -reh
+ QString prefix;
if (m_clipType == UNKNOWN) {
QString cliptype = attributes.value("type");
if (cliptype == "audio") m_clipType = AUDIO;
m_clip->setClipType(m_clipType);
slotSetToolTip();
+ if (m_clipType == PLAYLIST) {
+ // Check if the playlist xml contains a proxy inside, and inform user
+ if (playlistHasProxies(m_clip->fileURL().path())) {
+ prefix = i18n("Contains proxies") + " / ";
+ }
+ }
}
+ if (attributes.contains("duration")) {
+ GenTime duration = GenTime(attributes.value("duration").toInt(), KdenliveSettings::project_fps());
+ QString itemdata = data(0, DurationRole).toString();
+ if (itemdata.contains('/')) itemdata = itemdata.section('/', 0, 0) + "/ ";
+ else itemdata.clear();
+ if (prefix.isEmpty()) prefix = itemdata;
+ setData(0, DurationRole, prefix + Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps()));
+ m_clip->setDuration(duration);
+ } else {
+ // No duration known, use an arbitrary one until it is.
+ }
+
m_clip->setProperties(attributes);
m_clip->setMetadata(metadata);
return false;
}
+bool ProjectItem::playlistHasProxies(const QString path)
+{
+ kDebug()<<"// CHECKING FOR PROXIES";
+ QFile file(path);
+ QDomDocument doc;
+ if (!file.open(QIODevice::ReadOnly))
+ return false;
+ if (!doc.setContent(&file)) {
+ file.close();
+ return false;
+ }
+ file.close();
+ QString root = doc.documentElement().attribute("root");
+ QDomNodeList kdenliveProducers = doc.elementsByTagName("kdenlive_producer");
+ for (int i = 0; i < kdenliveProducers.count(); i++) {
+ QString proxy = kdenliveProducers.at(i).toElement().attribute("proxy");
+ if (!proxy.isEmpty() && proxy != "-") return true;
+ }
+ return false;
+}
+
+
+