X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fclipmanager.cpp;h=0a02edb512fcbf77d05667df56c148f31b09cb8d;hb=4dcd6d55daa93a50582c12ffb89055a7c1293c79;hp=38ae8e90ab374e93c148fab423e8715d1cb9222f;hpb=bdfcbfc3ec309800eaa9e106203c9ad840fed35e;p=kdenlive diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index 38ae8e90..0a02edb5 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -123,7 +123,7 @@ void ClipManager::clearCache() #endif } -void ClipManager::requestThumbs(const QString id, QList frames) +void ClipManager::slotRequestThumbs(const QString id, QList frames) { m_thumbsMutex.lock(); foreach (int frame, frames) { @@ -264,12 +264,14 @@ void ClipManager::slotGetAudioThumbs() if (hash.isEmpty()) continue; QString audioPath = projectFolder() + "/thumbs/" + hash + ".thumb"; double lengthInFrames = clip->duration().frames(m_doc->fps()); - int frequency = 48000; - int channels = 2; + int frequency = 0; + int channels = 0; QString data = clip->getProperty("frequency"); if (!data.isEmpty()) frequency = data.toInt(); + if (frequency <= 0) frequency = 48000; data = clip->getProperty("channels"); if (!data.isEmpty()) channels = data.toInt(); + if (channels <= 0) channels = 2; int arrayWidth = 20; double frame = 0.0; int maxVolume = 0; @@ -581,7 +583,12 @@ void ClipManager::slotAddClipList(const KUrl::List urls, QMap KFileMetaInfo metaInfo(file.path(), QString("image/jpeg"), KFileMetaInfo::TechnicalInfo); const QHash metaInfoItems = metaInfo.items(); foreach(const KFileMetaInfoItem & metaInfoItem, metaInfoItems) { - prod.setAttribute("meta.attr." + metaInfoItem.name().section('#', 1), metaInfoItem.value().toString()); + QDomElement meta = doc.createElement("metaproperty"); + meta.setAttribute("name", "meta.attr." + metaInfoItem.name().section('#', 1)); + QDomText value = doc.createTextNode(metaInfoItem.value().toString()); + meta.setAttribute("tool", "KDE Metadata"); + meta.appendChild(value); + prod.appendChild(meta); } } } else if (type->is("application/x-kdenlivetitle")) { @@ -604,15 +611,23 @@ void ClipManager::slotAddClipList(const KUrl::List urls, QMap } } } - QString titleData = txtdoc.toString(); - prod.setAttribute("xmldata", titleData); prod.setAttribute("transparency", 1); prod.setAttribute("in", 0); - int out = txtdoc.documentElement().attribute("out").toInt(); - if (out > 0) - prod.setAttribute("out", out); - else - prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::title_duration()) - 1); + if (!txtdoc.documentElement().hasAttribute("out")) { + prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::title_duration()) - 1); + txtdoc.documentElement().setAttribute("out", m_doc->getFramePos(KdenliveSettings::title_duration()) - 1); + } + else { + int out = txtdoc.documentElement().attribute("out").toInt(); + if (out >= 0) + prod.setAttribute("out", out); + else { + prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::title_duration()) - 1); + txtdoc.documentElement().setAttribute("out", m_doc->getFramePos(KdenliveSettings::title_duration()) - 1); + } + } + QString titleData = txtdoc.toString(); + prod.setAttribute("xmldata", titleData); } else txtfile.close(); } @@ -730,16 +745,22 @@ void ClipManager::slotAddTextTemplateClip(QString titleName, const KUrl &path, c prod.setAttribute("transparency", "1"); prod.setAttribute("in", "0"); - int out = 0; + int duration = 0; QDomDocument titledoc; QFile txtfile(path.path()); if (txtfile.open(QIODevice::ReadOnly) && titledoc.setContent(&txtfile)) { txtfile.close(); - out = titledoc.documentElement().attribute("out").toInt(); + if (titledoc.documentElement().hasAttribute("duration")) { + duration = titledoc.documentElement().attribute("duration").toInt(); + } + else { + // keep some time for backwards compatibility - 26/12/12 + duration = titledoc.documentElement().attribute("out").toInt(); + } } else txtfile.close(); - if (out == 0) out = m_doc->getFramePos(KdenliveSettings::image_duration()); - prod.setAttribute("out", out); + if (duration == 0) duration = m_doc->getFramePos(KdenliveSettings::title_duration()); + prod.setAttribute("out", duration - 1); AddClipCommand *command = new AddClipCommand(m_doc, doc.documentElement(), QString::number(id), true); m_doc->commandStack()->push(command);