QObject(parent),
m_autosave(NULL),
m_url(url),
- m_zoom(7),
m_startPos(0),
m_render(render),
m_commandStack(new QUndoStack(undoGroup)),
m_projectFolder(projectFolder),
m_documentLoadingStep(0.0),
m_documentLoadingProgress(0),
- m_abortLoading(false),
- m_zoneStart(0),
- m_zoneEnd(100)
+ m_abortLoading(false)
{
m_clipManager = new ClipManager(this);
m_autoSaveTimer = new QTimer(this);
m_autoSaveTimer->setSingleShot(true);
bool success = false;
+
+ // init default document properties
+ m_documentProperties["zoom"] = "7";
+ m_documentProperties["zonein"] = "0";
+ m_documentProperties["zoneout"] = "100";
+
if (!url.isEmpty()) {
QString tmpFile;
success = KIO::NetAccess::download(url.path(), tmpFile, parent);
profileName = infoXml.attribute("profile");
m_projectFolder = infoXml.attribute("projectfolder");
-
m_startPos = infoXml.attribute("position").toInt();
- m_zoom = infoXml.attribute("zoom", "7").toInt();
- m_zoneStart = infoXml.attribute("zonein", "0").toInt();
- m_zoneEnd = infoXml.attribute("zoneout", "100").toInt();
+
+ QDomElement docproperties = infoXml.firstChildElement("documentproperties");
+ QDomNamedNodeMap props = docproperties.attributes();
+ for (int i = 0; i < props.count(); i++) {
+ m_documentProperties.insert(props.item(i).nodeName(), props.item(i).nodeValue());
+ }
// Build tracks
QDomElement e;
infoXml.removeChild(markers);
}
setProfilePath(profileName);
- mlt.removeChild(infoXml);
kDebug() << "Reading file: " << url.path() << ", found clips: " << producers.count();
}
}
void KdenliveDoc::setZoom(int factor)
{
- m_zoom = factor;
+ m_documentProperties["zoom"] = QString::number(factor);
}
int KdenliveDoc::zoom() const
{
- return m_zoom;
+ return m_documentProperties.value("zoom").toInt();
}
void KdenliveDoc::setZone(int start, int end)
{
- m_zoneStart = start;
- m_zoneEnd = end;
+ m_documentProperties["zonein"] = QString::number(start);
+ m_documentProperties["zoneout"] = QString::number(end);
}
QPoint KdenliveDoc::zone() const
{
- return QPoint(m_zoneStart, m_zoneEnd);
+ return QPoint(m_documentProperties.value("zonein").toInt(), m_documentProperties.value("zoneout").toInt());
}
bool KdenliveDoc::saveSceneList(const QString &path, const QString &scene)
addedXml.setAttribute("kdenliveversion", VERSION);
addedXml.setAttribute("profile", profilePath());
addedXml.setAttribute("position", m_render->seekPosition().frames(m_fps));
- addedXml.setAttribute("zonein", m_zoneStart);
- addedXml.setAttribute("zoneout", m_zoneEnd);
addedXml.setAttribute("projectfolder", m_projectFolder.path());
- addedXml.setAttribute("zoom", m_zoom);
+
+ QDomElement docproperties = sceneList.createElement("documentproperties");
+ QMapIterator<QString, QString> i(m_documentProperties);
+ while (i.hasNext()) {
+ i.next();
+ docproperties.setAttribute(i.key(), i.value());
+ }
+ addedXml.appendChild(docproperties);
// Add profile info
QDomElement profileinfo = sceneList.createElement("profileinfo");
if (createClipItem) {
emit addProjectClip(clip);
qApp->processEvents();
- m_render->getFileProperties(clip->toXML(), clip->getId());
+ m_render->getFileProperties(clip->toXML(), clip->getId(), false);
}
}
void KdenliveDoc::slotAddClipFile(const KUrl url, const QString group, const QString &groupId)
{
- //kDebug() << "///////// DOCUM, ADD CLP: " << url;
m_clipManager->slotAddClipFile(url, group, groupId);
emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
setModified(true);
return m_clipManager->getClipById(clipId);
}
-void KdenliveDoc::slotCreateTextClip(QString /*group*/, const QString &/*groupId*/)
+void KdenliveDoc::slotCreateColorClip(const QString &name, const QString &color, const QString &duration, QString group, const QString &groupId)
+{
+ m_clipManager->slotAddColorClipFile(name, color, duration, group, groupId);
+ setModified(true);
+ 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 fade, const QString &luma_duration, const QString &luma_file, const int softness, QString group, const QString &groupId)
+{
+ m_clipManager->slotAddSlideshowClipFile(name, path, count, duration, loop, fade, luma_duration, luma_file, softness, group, groupId);
+ setModified(true);
+ emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
+}
+
+void KdenliveDoc::slotCreateTextClip(QString group, const QString &groupId, const QString &templatePath)
{
QString titlesFolder = projectFolder().path() + "/titles/";
KStandardDirs::makeDir(titlesFolder);
- TitleWidget *dia_ui = new TitleWidget(KUrl(), titlesFolder, m_render, kapp->activeWindow());
+ TitleWidget *dia_ui = new TitleWidget(templatePath, titlesFolder, m_render, kapp->activeWindow());
if (dia_ui->exec() == QDialog::Accepted) {
QStringList titleInfo = TitleWidget::getFreeTitleInfo(projectFolder());
QImage pix = dia_ui->renderedPixmap();
pix.save(titleInfo.at(1));
//dia_ui->saveTitle(path + ".kdenlivetitle");
- m_clipManager->slotAddTextClipFile(titleInfo.at(0), titleInfo.at(1), dia_ui->xml().toString(), QString(), QString());
+ m_clipManager->slotAddTextClipFile(titleInfo.at(0), titleInfo.at(1), dia_ui->xml().toString(), group, groupId);
setModified(true);
+ emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
}
delete dia_ui;
}
+void KdenliveDoc::slotCreateTextTemplateClip(QString group, const QString &groupId, KUrl path)
+{
+ QString titlesFolder = projectFolder().path() + "/titles/";
+ if (path.isEmpty()) {
+ path = KFileDialog::getOpenUrl(KUrl(titlesFolder), "*.kdenlivetitle", kapp->activeWindow(), i18n("Enter Template Path"));
+ }
+
+ if (path.isEmpty()) return;
+
+ QStringList titleInfo = TitleWidget::getFreeTitleInfo(projectFolder());
+
+ TitleWidget *dia_ui = new TitleWidget(path, titlesFolder, m_render, kapp->activeWindow());
+ QImage pix = dia_ui->renderedPixmap();
+ pix.save(titleInfo.at(1));
+ delete dia_ui;
+ m_clipManager->slotAddTextTemplateClip(titleInfo.at(0), titleInfo.at(1), path, group, groupId);
+ setModified(true);
+ emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
+}
+
int KdenliveDoc::tracksCount() const
{
return m_tracksList.count();
return (d.exec() == QDialog::Accepted);
}
+void KdenliveDoc::setDocumentProperty(const QString &name, const QString &value)
+{
+ m_documentProperties[name] = value;
+}
+
+const QString KdenliveDoc::getDocumentProperty(const QString &name) const
+{
+ return m_documentProperties.value(name);
+}
#include "kdenlivedoc.moc"