#include <QDir>
#include <kmessagebox.h>
-ProjectSettings::ProjectSettings(ProjectList *projectlist, int videotracks, int audiotracks, const QString projectPath, bool readOnlyTracks, bool savedProject, QWidget * parent) :
- QDialog(parent), m_savedProject(savedProject), m_projectList(projectlist)
+ProjectSettings::ProjectSettings(ProjectList *projectlist, QStringList lumas, int videotracks, int audiotracks, const QString projectPath, bool readOnlyTracks, bool savedProject, QWidget * parent) :
+ QDialog(parent), m_savedProject(savedProject), m_projectList(projectlist), m_lumas(lumas)
{
setupUi(this);
video_thumbs->setChecked(KdenliveSettings::videothumbnails());
audio_tracks->setValue(audiotracks);
video_tracks->setValue(videotracks);
+
if (readOnlyTracks) {
video_tracks->setEnabled(false);
audio_tracks->setEnabled(false);
DocClipBase *clip = list.at(i);
if (clip->numReferences() == 0 && clip->clipType() != SLIDESHOW) {
KUrl url = clip->fileURL();
- if (!url.isEmpty()) toDelete << url.path();
+ if (!url.isEmpty() && !toDelete.contains(url.path())) toDelete << url.path();
}
}
- toDelete.removeDuplicates();
// make sure our urls are not used in another clip
for (int i = 0; i < list.count(); i++) {
// TODO: images used in luma transitions, files used for LADSPA effects?
QStringList allFiles;
+ QStringList allFonts;
+ allFiles << m_lumas;
for (int i = 0; i < list.count(); i++) {
DocClipBase *clip = list.at(i);
if (clip->clipType() == SLIDESHOW) {
// special case, list all images
- QString path = clip->fileURL().directory();
- QString ext = clip->fileURL().path().section('.', -1);
- QDir dir(path);
- QStringList filters;
- filters << "*." + ext;
- dir.setNameFilters(filters);
- QStringList result = dir.entryList(QDir::Files);
- for (int j = 0; j < result.count(); j++) {
- allFiles.append(path + result.at(j));
- }
+ QStringList files = extractSlideshowUrls(clip->fileURL());
+ allFiles << files;
} else if (!clip->fileURL().isEmpty()) allFiles.append(clip->fileURL().path());
if (clip->clipType() == TEXT) {
QStringList images = TitleWidget::extractImageList(clip->getProperty("xmldata"));
+ QStringList fonts = TitleWidget::extractFontList(clip->getProperty("xmldata"));
allFiles << images;
+ allFonts << fonts;
} else if (clip->clipType() == PLAYLIST) {
QStringList files = extractPlaylistUrls(clip->fileURL().path());
allFiles << files;
usedSize += clip->fileSize();
}
}
+#if QT_VERSION >= 0x040500
allFiles.removeDuplicates();
+ allFonts.removeDuplicates();
+#endif
files_count->setText(QString::number(allFiles.count()));
files_list->addItems(allFiles);
+ fonts_list->addItems(allFonts);
used_count->setText(QString::number(used));
used_size->setText(KIO::convertSize(usedSize));
unused_count->setText(QString::number(unused));
return audio_thumbs->isChecked();
}
+
//static
QStringList ProjectSettings::extractPlaylistUrls(QString path)
{
}
file.close();
QString root = doc.documentElement().attribute("root");
+ if (!root.isEmpty() && !root.endsWith('/')) root.append('/');
QDomNodeList files = doc.elementsByTagName("producer");
for (int i = 0; i < files.count(); i++) {
QDomElement e = files.at(i).toElement();
QString type = EffectsList::property(e, "mlt_service");
if (type != "colour") {
- //TODO: slideshows (.all.*)
QString url = EffectsList::property(e, "resource");
if (!url.isEmpty()) {
if (!url.startsWith('/')) url.prepend(root);
- urls << url;
+ if (url.section('.', 0, -2).endsWith("/.all")) {
+ // slideshow clip, extract image urls
+ urls << extractSlideshowUrls(KUrl(url));
+ } else urls << url;
if (url.endsWith(".mlt") || url.endsWith(".kdenlive")) {
//TODO: Do something to avoid infinite loops if 2 files reference themselves...
urls << extractPlaylistUrls(url);
}
}
}
+
+ // luma files for transitions
+ files = doc.elementsByTagName("transition");
+ for (int i = 0; i < files.count(); i++) {
+ QDomElement e = files.at(i).toElement();
+ QString url = EffectsList::property(e, "luma");
+ if (!url.isEmpty()) {
+ if (!url.startsWith('/')) url.prepend(root);
+ urls << url;
+ }
+ }
+
+ return urls;
+}
+
+
+//static
+QStringList ProjectSettings::extractSlideshowUrls(KUrl url)
+{
+ QStringList urls;
+ QString path = url.directory(KUrl::AppendTrailingSlash);
+ QString ext = url.path().section('.', -1);
+ QDir dir(path);
+ QStringList filters;
+ filters << "*." + ext;
+ dir.setNameFilters(filters);
+ QStringList result = dir.entryList(QDir::Files);
+ for (int j = 0; j < result.count(); j++) {
+ urls.append(path + result.at(j));
+ }
return urls;
}