X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fkdenlivedoc.cpp;h=157ad2362e5d13504fec7e69241c373a4ad3ad8b;hb=efb2133c58a7d4b2f53ca31b362c591a93c59290;hp=e190123f84171a467c3b7041c07893cd4f875182;hpb=1e007c2d73386e714ed480aba390b827e181994a;p=kdenlive diff --git a/src/kdenlivedoc.cpp b/src/kdenlivedoc.cpp index e190123f..157ad236 100644 --- a/src/kdenlivedoc.cpp +++ b/src/kdenlivedoc.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -52,9 +53,12 @@ #include -const double DOCUMENTVERSION = 0.87; +#include "locale.h" -KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, QMap properties, const QPoint tracks, Render *render, KTextEdit *notes, bool *openBackup, MainWindow *parent, KProgressDialog *progressDialog) : + +const double DOCUMENTVERSION = 0.88; + +KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, QMap properties, const QPoint &tracks, Render *render, KTextEdit *notes, bool *openBackup, MainWindow *parent, KProgressDialog *progressDialog) : QObject(parent), m_autosave(NULL), m_url(url), @@ -64,6 +68,18 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup m_modified(false), m_projectFolder(projectFolder) { + // init m_profile struct + m_profile.frame_rate_num = 0; + m_profile.frame_rate_den = 0; + m_profile.width = 0; + m_profile.height = 0; + m_profile.progressive = 0; + m_profile.sample_aspect_num = 0; + m_profile.sample_aspect_den = 0; + m_profile.display_aspect_num = 0; + m_profile.display_aspect_den = 0; + m_profile.colorspace = 0; + m_clipManager = new ClipManager(this); m_autoSaveTimer = new QTimer(this); m_autoSaveTimer->setSingleShot(true); @@ -95,6 +111,15 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup m_documentProperties[i.key()] = i.value(); } + if (QLocale().decimalPoint() != QLocale::system().decimalPoint()) { + setlocale(LC_NUMERIC, ""); + QLocale systemLocale = QLocale::system(); + systemLocale.setNumberOptions(QLocale::OmitGroupSeparator); + QLocale::setDefault(systemLocale); + // locale conversion might need to be redone + initEffects::parseEffectFiles(); + } + *openBackup = false; if (!url.isEmpty()) { @@ -299,7 +324,6 @@ KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup // Make sure that the necessary folders exist KStandardDirs::makeDir(m_projectFolder.path(KUrl::AddTrailingSlash) + "titles/"); KStandardDirs::makeDir(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/"); - KStandardDirs::makeDir(m_projectFolder.path(KUrl::AddTrailingSlash) + "ladspa/"); KStandardDirs::makeDir(m_projectFolder.path(KUrl::AddTrailingSlash) + "proxy/"); updateProjectFolderPlacesEntry(); @@ -371,6 +395,7 @@ QDomDocument KdenliveDoc::createEmptyDocument(QList tracks) // Creating new document QDomDocument doc; QDomElement mlt = doc.createElement("mlt"); + mlt.setAttribute("LC_NUMERIC", ""); doc.appendChild(mlt); // Create black producer @@ -555,7 +580,7 @@ QPoint KdenliveDoc::zone() const return QPoint(m_documentProperties.value("zonein").toInt(), m_documentProperties.value("zoneout").toInt()); } -QDomDocument KdenliveDoc::xmlSceneList(const QString &scene, const QStringList expandedFolders) +QDomDocument KdenliveDoc::xmlSceneList(const QString &scene, const QStringList &expandedFolders) { QDomDocument sceneList; sceneList.setContent(scene, true); @@ -565,6 +590,18 @@ QDomDocument KdenliveDoc::xmlSceneList(const QString &scene, const QStringList e return sceneList; } + // Set playlist audio volume to 100% + QDomElement tractor = mlt.firstChildElement("tractor"); + if (!tractor.isNull()) { + QDomNodeList props = tractor.elementsByTagName("property"); + for (int i = 0; i < props.count(); i++) { + if (props.at(i).toElement().attribute("name") == "meta.volume") { + props.at(i).firstChild().setNodeValue("1"); + break; + } + } + } + QDomElement addedXml = sceneList.createElement("kdenlivedoc"); mlt.appendChild(addedXml); @@ -680,7 +717,7 @@ QDomDocument KdenliveDoc::xmlSceneList(const QString &scene, const QStringList e return sceneList; } -bool KdenliveDoc::saveSceneList(const QString &path, const QString &scene, const QStringList expandedFolders, bool autosave) +bool KdenliveDoc::saveSceneList(const QString &path, const QString &scene, const QStringList &expandedFolders, bool autosave) { QDomDocument sceneList = xmlSceneList(scene, expandedFolders); if (sceneList.isNull()) { @@ -748,7 +785,7 @@ void KdenliveDoc::setProjectFolder(KUrl url) void KdenliveDoc::moveProjectData(KUrl url) { QList list = m_clipManager->documentClipList(); - //TODO: Also move ladspa effects files + KUrl::List cacheUrls; for (int i = 0; i < list.count(); i++) { DocClipBase *clip = list.at(i); if (clip->clipType() == TEXT) { @@ -762,16 +799,17 @@ void KdenliveDoc::moveProjectData(KUrl url) KUrl oldVideoThumbUrl = KUrl(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".png"); KUrl oldAudioThumbUrl = KUrl(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".thumb"); if (KIO::NetAccess::exists(oldVideoThumbUrl, KIO::NetAccess::SourceSide, 0)) { - KUrl newUrl = KUrl(url.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".png"); - KIO::Job *job = KIO::copy(oldVideoThumbUrl, newUrl); - KIO::NetAccess::synchronousRun(job, 0); + cacheUrls << oldVideoThumbUrl; } if (KIO::NetAccess::exists(oldAudioThumbUrl, KIO::NetAccess::SourceSide, 0)) { - KUrl newUrl = KUrl(url.path(KUrl::AddTrailingSlash) + "thumbs/" + hash + ".thumb"); - KIO::Job *job = KIO::copy(oldAudioThumbUrl, newUrl); - if (KIO::NetAccess::synchronousRun(job, 0)) clip->refreshThumbUrl(); + cacheUrls << oldAudioThumbUrl; } } + if (!cacheUrls.isEmpty()) { + KIO::Job *job = KIO::copy(cacheUrls, KUrl(url.path(KUrl::AddTrailingSlash) + "thumbs/")); + job->ui()->setWindow(kapp->activeWindow()); + KIO::NetAccess::synchronousRun(job, 0); + } } const QString &KdenliveDoc::profilePath() const @@ -885,7 +923,7 @@ Render *KdenliveDoc::renderer() return m_render; } -void KdenliveDoc::updateClip(const QString id) +void KdenliveDoc::updateClip(const QString &id) { emit updateClipDisplay(id); } @@ -961,7 +999,6 @@ void KdenliveDoc::setUrl(KUrl url) void KdenliveDoc::setModified(bool mod) { - if (isReadOnly()) return; if (!m_url.isEmpty() && mod && KdenliveSettings::crashrecovery()) { m_autoSaveTimer->start(3000); } @@ -1155,7 +1192,7 @@ void KdenliveDoc::deleteClip(const QString &clipId) emit signalDeleteProjectClip(clipId); } -void KdenliveDoc::slotAddClipList(const KUrl::List urls, const QString group, const QString &groupId) +void KdenliveDoc::slotAddClipList(const KUrl::List urls, const QString &group, const QString &groupId) { m_clipManager->slotAddClipList(urls, group, groupId); //emit selectLastAddedClip(QString::number(m_clipManager->lastClipId())); @@ -1163,7 +1200,7 @@ void KdenliveDoc::slotAddClipList(const KUrl::List urls, const QString group, co } -void KdenliveDoc::slotAddClipFile(const KUrl url, const QString group, const QString &groupId) +void KdenliveDoc::slotAddClipFile(const KUrl &url, const QString &group, const QString &groupId) { m_clipManager->slotAddClipFile(url, group, groupId); emit selectLastAddedClip(QString::number(m_clipManager->lastClipId())); @@ -1194,7 +1231,7 @@ void KdenliveDoc::slotCreateColorClip(const QString &name, const QString &color, emit selectLastAddedClip(QString::number(m_clipManager->lastClipId())); } -void KdenliveDoc::slotCreateSlideshowClipFile(const QString name, const QString path, int count, const QString duration, +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) @@ -1344,17 +1381,6 @@ void KdenliveDoc::cachePixmap(const QString &fileId, const QPixmap &pix) const pix.save(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + fileId + ".png"); } -QString KdenliveDoc::getLadspaFile() const -{ - int ct = 0; - QString counter = QString::number(ct).rightJustified(5, '0', false); - while (QFile::exists(m_projectFolder.path(KUrl::AddTrailingSlash) + "ladspa/" + counter + ".ladspa")) { - ct++; - counter = QString::number(ct).rightJustified(5, '0', false); - } - return m_projectFolder.path(KUrl::AddTrailingSlash) + "ladspa/" + counter + ".ladspa"; -} - bool KdenliveDoc::checkDocumentClips(QDomNodeList infoproducers) { DocumentChecker d(infoproducers, m_document); @@ -1637,11 +1663,6 @@ void KdenliveDoc::backupLastSavedVersion(const QString &path) } } -bool KdenliveDoc::isReadOnly() const -{ - return m_documentProperties.contains("readonly"); -} - void KdenliveDoc::cleanupBackupFiles() { KUrl backupFile = m_projectFolder;