QStringList cuts = xml.attribute("cutzones").split(";", QString::SkipEmptyParts);
for (int i = 0; i < cuts.count(); i++) {
QString z = cuts.at(i);
- addCutZone(z.section('-', 0, 0).toInt(), z.section('-', 1, 1).toInt());
+ addCutZone(z.section('-', 0, 0).toInt(), z.section('-', 1, 1).toInt(), z.section('-', 2, 2));
}
}
//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) slotCreateAudioTimer();
+ if (m_clipType == AV || m_clipType == AUDIO || m_clipType == PLAYLIST) slotCreateAudioTimer();
}
//kDebug() << "type is video" << (m_clipType == AV) << " " << m_clipType;
}
void DocClipBase::askForAudioThumbs()
{
- if (m_thumbProd) m_thumbProd->askForAudioThumbs(getId());
+ if (m_thumbProd && m_audioTimer) slotGetAudioThumbs();
}
void DocClipBase::slotClearAudioCache()
m_clipType = type;
m_properties.insert("type", QString::number((int) type));
- if (m_thumbProd && m_audioTimer == NULL && (m_clipType == AV || m_clipType == AUDIO))
+ if (m_thumbProd && m_audioTimer == NULL && (m_clipType == AV || m_clipType == AUDIO || m_clipType == PLAYLIST))
slotCreateAudioTimer();
}
if (!m_cutZones.isEmpty()) {
QStringList cuts;
for (int i = 0; i < m_cutZones.size(); i++) {
- cuts << QString::number(m_cutZones.at(i).x()) + "-" + QString::number(m_cutZones.at(i).y());
+ CutZoneInfo info = m_cutZones.at(i);
+ cuts << QString::number(info.zone.x()) + "-" + QString::number(info.zone.y()) + "-" + info.description;
}
clip.setAttribute("cutzones", cuts.join(";"));
}
if (it == 0) return GenTime();
else if (it == m_snapMarkers.count() - 1 && m_snapMarkers.at(it).time() < currTime)
return m_snapMarkers.at(it).time();
- else return m_snapMarkers.at(it -1).time();
+ else return m_snapMarkers.at(it - 1).time();
}
GenTime DocClipBase::findNextSnapMarker(const GenTime & currTime)
bool DocClipBase::slotGetAudioThumbs()
{
if (m_thumbProd == NULL) return false;
- if (!KdenliveSettings::audiothumbnails()) {
+ if (!KdenliveSettings::audiothumbnails() || m_audioTimer == NULL) {
if (m_audioTimer != NULL) m_audioTimer->stop();
return false;
}
if (m_audioThumbCreated) {
- if (m_audioTimer != NULL) m_audioTimer->stop();
+ m_audioTimer->stop();
return false;
}
- if (m_audioTimer != NULL)
- m_audioTimer->start(1500);
+ m_audioTimer->start(1500);
double lengthInFrames = duration().frames(KdenliveSettings::project_fps());
m_thumbProd->getAudioThumbs(2, 0, lengthInFrames /*must be number of frames*/, 20);
return true;
return m_placeHolder;
}
-void DocClipBase::addCutZone(int in, int out)
+void DocClipBase::addCutZone(int in, int out, QString desc)
{
- if (!m_cutZones.contains(QPoint(in, out))) {
- m_cutZones.append(QPoint(in, out));
- }
+ CutZoneInfo info;
+ info.zone = QPoint(in, out);
+ info.description = desc;
+ for (int i = 0; i < m_cutZones.count(); i++)
+ if (m_cutZones.at(i).zone == info.zone) {
+ return;
+ }
+ m_cutZones.append(info);
}
bool DocClipBase::hasCutZone(QPoint p) const
{
- return m_cutZones.contains(p);
+ for (int i = 0; i < m_cutZones.count(); i++)
+ if (m_cutZones.at(i).zone == p) return true;
+ return false;
}
void DocClipBase::removeCutZone(int in, int out)
{
- m_cutZones.removeAll(QPoint(in, out));
+ QPoint p(in, out);
+ for (int i = 0; i < m_cutZones.count(); i++) {
+ if (m_cutZones.at(i).zone == p) {
+ m_cutZones.removeAt(i);
+ i--;
+ }
+ }
}
-void DocClipBase::updateCutZone(int oldin, int oldout, int in, int out)
+void DocClipBase::updateCutZone(int oldin, int oldout, int in, int out, QString desc)
{
QPoint old(oldin, oldout);
for (int i = 0; i < m_cutZones.size(); ++i) {
- if (m_cutZones.at(i) == old) {
- m_cutZones.replace(i, QPoint(in, out));
+ if (m_cutZones.at(i).zone == old) {
+ CutZoneInfo info;
+ info.zone = QPoint(in, out);
+ info.description = desc;
+ m_cutZones.replace(i, info);
break;
}
}
}
-QList <QPoint> DocClipBase::cutZones() const
+QList <CutZoneInfo> DocClipBase::cutZones() const
{
return m_cutZones;
}