#include "mainwindow.h"
#include "documentchecker.h"
#include "documentvalidator.h"
-#include "kdenlive-config.h"
+#include "config-kdenlive.h"
#include "initeffects.h"
#include <KDebug>
#include <KFileDialog>
#include <KIO/NetAccess>
#include <KIO/CopyJob>
+#include <KIO/JobUiDelegate>
#include <KApplication>
#include <KGlobal>
#include <KBookmarkManager>
#include <mlt++/Mlt.h>
-const double DOCUMENTVERSION = 0.87;
+#include "locale.h"
-KdenliveDoc::KdenliveDoc(const KUrl &url, const KUrl &projectFolder, QUndoGroup *undoGroup, QString profileName, QMap <QString, QString> 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 <QString, QString> properties, const QPoint &tracks, Render *render, KTextEdit *notes, bool *openBackup, MainWindow *parent, KProgressDialog *progressDialog) :
QObject(parent),
m_autosave(NULL),
m_url(url),
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);
+ connect(m_clipManager, SIGNAL(displayMessage(QString, int)), parent, SLOT(slotGotProgressInfo(QString,int)));
bool success = false;
// init default document properties
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()) {
// 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();
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);
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()) {
void KdenliveDoc::moveProjectData(KUrl url)
{
QList <DocClipBase*> 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) {
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
return m_render;
}
-void KdenliveDoc::updateClip(const QString id)
+void KdenliveDoc::updateClip(const QString &id)
{
emit updateClipDisplay(id);
}
void KdenliveDoc::setModified(bool mod)
{
- if (isReadOnly()) return;
if (!m_url.isEmpty() && mod && KdenliveSettings::crashrecovery()) {
m_autoSaveTimer->start(3000);
}
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()));
}
-void KdenliveDoc::slotAddClipFile(const KUrl url, const QString group, const QString &groupId)
+void KdenliveDoc::slotAddClipFile(const KUrl &url, const QString &group, const QString &groupId, const QString &comment)
{
- m_clipManager->slotAddClipFile(url, group, groupId);
+ m_clipManager->slotAddClipFile(url, group, groupId, comment);
emit selectLastAddedClip(QString::number(m_clipManager->lastClipId()));
setModified(true);
}
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)
return QPoint(video, audio);
}
-void KdenliveDoc::cachePixmap(const QString &fileId, const QPixmap &pix) const
-{
- pix.save(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + fileId + ".png");
-}
-
-QString KdenliveDoc::getLadspaFile() const
+void KdenliveDoc::cacheImage(const QString &fileId, const QImage &img) 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";
+ img.save(m_projectFolder.path(KUrl::AddTrailingSlash) + "thumbs/" + fileId + ".png");
}
bool KdenliveDoc::checkDocumentClips(QDomNodeList infoproducers)
const QString file = KStandardDirs::locateLocal("data", "kfileplaces/bookmarks.xml");
KBookmarkManager *bookmarkManager = KBookmarkManager::managerForFile(file, "kfilePlaces");
+ if (!bookmarkManager) return;
KBookmarkGroup root = bookmarkManager->root();
+
KBookmark bookmark = root.first();
QString kdenliveName = KGlobal::mainComponent().componentName();
}
}
-bool KdenliveDoc::isReadOnly() const
-{
- return m_documentProperties.contains("readonly");
-}
-
void KdenliveDoc::cleanupBackupFiles()
{
KUrl backupFile = m_projectFolder;