X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fkdenlivedoc.cpp;h=ab517a6cdcdb3b1e0c8b8b1ca6f4a3ad0d9dcc1a;hb=31e84d6bd7f7b1ac64d942a9171d98ad8d0f7d62;hp=549807b4155def56fa87b3f24b1d89cc4040088e;hpb=9aad78d75990fd8fd7002ed8f96d095bc7174ee9;p=kdenlive diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index 549807b4..ab517a6c 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -51,7 +51,6 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup QObject(parent), m_autosave(NULL), m_url(url), - m_zoom(7), m_startPos(0), m_render(render), m_commandStack(new QUndoStack(undoGroup)), @@ -59,14 +58,18 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup 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); @@ -99,11 +102,13 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup 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; @@ -387,23 +392,23 @@ void KdenliveDoc::slotAutoSave() 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) @@ -419,10 +424,15 @@ 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 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"); @@ -908,7 +918,7 @@ void KdenliveDoc::addClip(QDomElement elem, QString clipId, bool createClipItem) if (createClipItem) { emit addProjectClip(clip); qApp->processEvents(); - m_render->getFileProperties(clip->toXML(), clip->getId()); + m_render->getFileProperties(clip->toXML(), clip->getId(), false); } } @@ -1030,7 +1040,6 @@ void KdenliveDoc::slotAddClipList(const KUrl::List urls, const QString group, co 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); @@ -1046,11 +1055,25 @@ DocClipBase *KdenliveDoc::getBaseClip(const QString &clipId) 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(); @@ -1058,24 +1081,29 @@ void KdenliveDoc::slotCreateTextClip(QString group, const QString &groupId) //dia_ui->saveTitle(path + ".kdenlivetitle"); 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) +void KdenliveDoc::slotCreateTextTemplateClip(QString group, const QString &groupId, KUrl path) { - KUrl titlesFolder = KUrl(projectFolder().path() + "/titles/"); - KUrl path = KFileDialog::getOpenUrl(titlesFolder, "*.kdenlivetitle", kapp->activeWindow(), i18n("Enter Template 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.path(), m_render, kapp->activeWindow()); + 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 @@ -1183,6 +1211,15 @@ bool KdenliveDoc::checkDocumentClips(QDomNodeList infoproducers) 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"