m_doc->commandStack()->push(command);
}
-void ClipManager::slotAddSlideshowClipFile(const QString &name, const QString &path, int count, const QString &duration,
- const bool loop, const bool crop, const bool fade,
- const QString &luma_duration, const QString &luma_file, const int softness,
- const QString &animation, const QString &group, const QString &groupId)
+void ClipManager::slotAddSlideshowClipFile(QMap <QString, QString> properties, const QString &group, const QString &groupId)
{
QDomDocument doc;
QDomElement prod = doc.createElement("producer");
doc.appendChild(prod);
- prod.setAttribute("resource", path);
+ QMap<QString, QString>::const_iterator i = properties.constBegin();
+ while (i != properties.constEnd()) {
+ prod.setAttribute(i.key(), i.value());
+ ++i;
+ }
prod.setAttribute("type", (int) SLIDESHOW);
uint id = m_clipIdCounter++;
- prod.setAttribute("id", QString::number(id));
- prod.setAttribute("in", "0");
- prod.setAttribute("out", m_doc->getFramePos(duration) * count);
- prod.setAttribute("ttl", m_doc->getFramePos(duration));
- prod.setAttribute("luma_duration", m_doc->getFramePos(luma_duration));
- prod.setAttribute("name", name);
- prod.setAttribute("loop", loop);
- prod.setAttribute("crop", crop);
- prod.setAttribute("fade", fade);
- prod.setAttribute("softness", QString::number(softness));
- prod.setAttribute("luma_file", luma_file);
- prod.setAttribute("animation", animation);
if (!group.isEmpty()) {
prod.setAttribute("groupname", group);
prod.setAttribute("groupid", groupId);
void slotAddTextTemplateClip(QString titleName, const KUrl &path, const QString &group, const QString &groupId);
void slotAddXmlClipFile(const QString &name, const QDomElement &xml, const QString &group, const QString &groupId);
void slotAddColorClipFile(const QString &name, const QString &color, QString duration, const QString &group, const QString &groupId);
- void slotAddSlideshowClipFile(const QString &name, const QString &path, int count, const QString &duration,
- const bool loop, const bool crop,const bool fade,
- const QString &luma_duration, const QString &luma_file, const int softness,
- const QString &animation, const QString &group, const QString &groupId);
+ void slotAddSlideshowClipFile(QMap <QString, QString> properties, const QString &group, const QString &groupId);
DocClipBase *getClipById(QString clipId);
const QList <DocClipBase *> getClipByResource(QString resource);
void slotDeleteClips(QStringList ids);
emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
}
-void KdenliveDoc::slotCreateSlideshowClipFile(const QString &name, const QString &path, int count, const QString &duration,
- const bool loop, const bool crop, const bool fade,
- const QString &luma_duration, const QString &luma_file, const int softness,
- const QString &animation, QString group, const QString &groupId)
-{
- m_clipManager->slotAddSlideshowClipFile(name, path, count, duration, loop,
- crop, fade, luma_duration,
- luma_file, softness,
- animation, group, groupId);
+void KdenliveDoc::slotCreateSlideshowClipFile(QMap <QString, QString> properties, QString group, const QString &groupId)
+{
+ m_clipManager->slotAddSlideshowClipFile(properties, group, groupId);
setModified(true);
emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
}
public slots:
void slotCreateXmlClip(const QString &name, const QDomElement xml, QString group, const QString &groupId);
void slotCreateColorClip(const QString &name, const QString &color, const QString &duration, QString group, const QString &groupId);
- void slotCreateSlideshowClipFile(const QString &name, const QString &path,
- int count, const QString &duration,
- const bool loop, const bool crop,
- const bool fade, const QString &luma_duration,
- const QString &luma_file, const int softness,
- const QString &animation, QString group,
- const QString &groupId);
+ void slotCreateSlideshowClipFile(QMap <QString, QString> properties, QString group, const QString &groupId);
void slotCreateTextClip(QString group, const QString &groupId, const QString &templatePath = QString());
void slotCreateTextTemplateClip(QString group, const QString &groupId, KUrl path);
while (fileName.at(fileName.size() - 1).isDigit()) {
fileName.chop(1);
}
-
- m_doc->slotCreateSlideshowClipFile(fileName, pattern, count, m_timecode.reformatSeparators(KdenliveSettings::sequence_duration()),
- false, false, false,
- m_timecode.getTimecodeFromFrames(int(ceil(m_timecode.fps()))), QString(), 0,
- QString(), groupInfo.at(0), groupInfo.at(1));
+ QMap <QString, QString> properties;
+ properties.insert("name", fileName);
+ properties.insert("resource", pattern);
+ properties.insert("in", "0");
+ QString duration = m_timecode.reformatSeparators(KdenliveSettings::sequence_duration());
+ properties.insert("out", QString::number(m_doc->getFramePos(duration) * count));
+ properties.insert("ttl", QString::number(m_doc->getFramePos(duration)));
+ properties.insert("loop", QString::number(false));
+ properties.insert("crop", QString::number(false));
+ properties.insert("fade", QString::number(false));
+ properties.insert("luma_duration", QString::number(m_doc->getFramePos(m_timecode.getTimecodeFromFrames(int(ceil(m_timecode.fps()))))));
+ m_doc->slotCreateSlideshowClipFile(properties, groupInfo.at(0), groupInfo.at(1));
return;
}
}
if (dia->exec() == QDialog::Accepted) {
QStringList groupInfo = getGroup();
- m_doc->slotCreateSlideshowClipFile(dia->clipName(), dia->selectedPath(), dia->imageCount(), dia->clipDuration(),
- dia->loop(), dia->crop(), dia->fade(),
- dia->lumaDuration(), dia->lumaFile(), dia->softness(),
- dia->animation(), groupInfo.at(0), groupInfo.at(1));
+
+ QMap <QString, QString> properties;
+ properties.insert("name", dia->clipName());
+ int begin = dia->begin();
+ if (begin > 0)
+ properties.insert("resource", dia->selectedPath() + "?" + QString::number(begin));
+ else
+ properties.insert("resource", dia->selectedPath());
+ properties.insert("in", "0");
+ properties.insert("out", QString::number(m_doc->getFramePos(dia->clipDuration()) * dia->imageCount()));
+ properties.insert("ttl", QString::number(m_doc->getFramePos(dia->clipDuration())));
+ properties.insert("loop", QString::number(dia->loop()));
+ properties.insert("crop", QString::number(dia->crop()));
+ properties.insert("fade", QString::number(dia->fade()));
+ properties.insert("luma_duration", dia->lumaDuration());
+ properties.insert("luma_file", dia->lumaFile());
+ properties.insert("softness", QString::number(dia->softness()));
+ properties.insert("animation", dia->animation());
+ properties.insert("begin", QString::number(dia->begin()));
+
+ m_doc->slotCreateSlideshowClipFile(properties, groupInfo.at(0), groupInfo.at(1));
}
delete dia;
}
} else {
// Create sequence
QStringList groupInfo = getGroup();
- m_doc->slotCreateSlideshowClipFile(fileName, pattern, count, m_timecode.reformatSeparators(KdenliveSettings::sequence_duration()),
- false, false, false,
- m_timecode.getTimecodeFromFrames(int(ceil(m_timecode.fps()))), QString(), 0,
- QString(), groupInfo.at(0), groupInfo.at(1));
+ QMap <QString, QString> properties;
+ properties.insert("name", fileName);
+ properties.insert("resource", pattern);
+ properties.insert("in", "0");
+ QString duration = m_timecode.reformatSeparators(KdenliveSettings::sequence_duration());
+ properties.insert("out", QString::number(m_doc->getFramePos(duration) * count));
+ properties.insert("ttl", QString::number(m_doc->getFramePos(duration)));
+ properties.insert("loop", QString::number(false));
+ properties.insert("crop", QString::number(false));
+ properties.insert("fade", QString::number(false));
+ properties.insert("luma_duration", m_timecode.getTimecodeFromFrames(int(ceil(m_timecode.fps()))));
+
+ m_doc->slotCreateSlideshowClipFile(properties, groupInfo.at(0), groupInfo.at(1));
}
} else emit displayMessage(i18n("Sequence not found"), -2);
}
SlideshowClip::SlideshowClip(Timecode tc, QWidget * parent) :
QDialog(parent),
m_count(0),
+ m_patternBegin(0),
m_timecode(tc),
m_thumbJob(NULL)
{
}
// static
+//TODO: sequence begin
int SlideshowClip::sequenceCount(KUrl file)
{
// find pattern
filter.remove(filter.size() - 1, 1);
}
int precision = fullSize - filter.size();
+ m_patternBegin = m_view.pattern_url->url().fileName().section('.', 0, -2).right(precision).toInt();
QString path;
int gap = 0;
- for (int i = 0; gap < 100; i++) {
+ for (int i = m_patternBegin; gap < 100; i++) {
path = filter + QString::number(i).rightJustified(precision, '0', false) + ext;
if (dir.exists(path)) {
result.append(path);
return geometry;
}
+int SlideshowClip::begin() const
+{
+ return m_patternBegin;
+}
+
#include "slideshowclip.moc"
QString lumaFile() const;
int softness() const;
QString animation() const;
+ /** @brief Return the first number for the sequence begining */
+ int begin() const;
/** @brief Check if there are several files with filename pattern, like: image_001.jpg, image_002.jpg,... */
static int sequenceCount(KUrl file);
private:
Ui::SlideshowClip_UI m_view;
int m_count;
+ int m_patternBegin;
Timecode m_timecode;
KIO::PreviewJob *m_thumbJob;
};
<rect>
<x>0</x>
<y>0</y>
- <width>290</width>
+ <width>294</width>
<height>507</height>
</rect>
</property>
</widget>
<customwidgets>
<customwidget>
- <class>KIntSpinBox</class>
- <extends>QSpinBox</extends>
- <header>knuminput.h</header>
- </customwidget>
- <customwidget>
- <class>KUrlRequester</class>
- <extends>QFrame</extends>
- <header>kurlrequester.h</header>
- </customwidget>
- <customwidget>
- <class>KListWidget</class>
- <extends>QListWidget</extends>
- <header>klistwidget.h</header>
+ <class>KComboBox</class>
+ <extends>QComboBox</extends>
+ <header>kcombobox.h</header>
</customwidget>
<customwidget>
<class>KLineEdit</class>
<extends>QLineEdit</extends>
<header>klineedit.h</header>
</customwidget>
- <customwidget>
- <class>KComboBox</class>
- <extends>QComboBox</extends>
- <header>kcombobox.h</header>
- </customwidget>
<customwidget>
<class>KRestrictedLine</class>
<extends>KLineEdit</extends>
<header>krestrictedline.h</header>
</customwidget>
+ <customwidget>
+ <class>KIntSpinBox</class>
+ <extends>QSpinBox</extends>
+ <header>knuminput.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KListWidget</class>
+ <extends>QListWidget</extends>
+ <header>klistwidget.h</header>
+ </customwidget>
+ <customwidget>
+ <class>KUrlRequester</class>
+ <extends>QFrame</extends>
+ <header>kurlrequester.h</header>
+ </customwidget>
</customwidgets>
<resources/>
<connections>