From 07b590ab399b3a96093dd95ddc5a4246bb2c8fe2 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Tue, 8 Nov 2011 11:58:10 +0100 Subject: [PATCH] Fix search path for missing lumas --- src/documentchecker.cpp | 16 +++++++++++----- src/documentchecker.h | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/documentchecker.cpp b/src/documentchecker.cpp index 11e4c486..a89ddc13 100644 --- a/src/documentchecker.cpp +++ b/src/documentchecker.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -423,7 +424,7 @@ void DocumentChecker::slotSearchClips() child->setData(0, statusRole, CLIPOK); } } else if (child->data(0, statusRole).toInt() == LUMAMISSING) { - QString fileName = searchLuma(child->data(0, idRole).toString()); + QString fileName = searchLuma(searchDir, child->data(0, idRole).toString()); if (!fileName.isEmpty()) { fixed = true; child->setText(1, fileName); @@ -456,24 +457,29 @@ void DocumentChecker::slotSearchClips() } -QString DocumentChecker::searchLuma(const QString &file) const +QString DocumentChecker::searchLuma(const QDir &dir, const QString &file) const { KUrl searchPath(KdenliveSettings::mltpath()); + QString fname = KUrl(file).fileName(); if (file.contains("PAL")) searchPath.cd("../lumas/PAL"); else searchPath.cd("../lumas/NTSC"); - QString result = searchPath.path(KUrl::AddTrailingSlash) + KUrl(file).fileName(); + QString result = searchPath.path(KUrl::AddTrailingSlash) + fname; if (QFile::exists(result)) return result; // try to find luma in application path searchPath.clear(); searchPath = KUrl(QCoreApplication::applicationDirPath()); searchPath.cd("../share/apps/kdenlive/lumas"); - result = searchPath.path(KUrl::AddTrailingSlash) + KUrl(file).fileName(); + result = searchPath.path(KUrl::AddTrailingSlash) + fname; if (QFile::exists(result)) return result; - return QString(); + // Try in Kdenlive's standard KDE path + result = KStandardDirs::locate("appdata", "lumas/" + fname); + if (!result.isEmpty()) return result; + // Try in user's chosen folder + return searchPathRecursively(dir, fname); } QString DocumentChecker::searchPathRecursively(const QDir &dir, const QString &fileName) const diff --git a/src/documentchecker.h b/src/documentchecker.h index 66e35deb..90be9360 100644 --- a/src/documentchecker.h +++ b/src/documentchecker.h @@ -46,7 +46,7 @@ private slots: void slotDeleteSelected(); QString getProperty(QDomElement effect, const QString &name); void setProperty(QDomElement effect, const QString &name, const QString value); - QString searchLuma(const QString &file) const; + QString searchLuma(const QDir &dir, const QString &file) const; /** @brief Check if images and fonts in this clip exists, returns a list of images that do exist so we don't check twice. */ void checkMissingImagesAndFonts(QStringList images, QStringList fonts, const QString &id, const QString &baseClip); void slotCheckButtons(); -- 2.39.2