From: <j-...@us...> - 2011-07-31 10:23:36
|
Revision: 5815 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=5815&view=rev Author: j-b-m Date: 2011-07-31 10:23:30 +0000 (Sun, 31 Jul 2011) Log Message: ----------- Try to find missing images in title clips with recursive search Modified Paths: -------------- trunk/kdenlive/src/documentchecker.cpp trunk/kdenlive/src/documentchecker.h Modified: trunk/kdenlive/src/documentchecker.cpp =================================================================== --- trunk/kdenlive/src/documentchecker.cpp 2011-07-30 22:13:47 UTC (rev 5814) +++ trunk/kdenlive/src/documentchecker.cpp 2011-07-31 10:23:30 UTC (rev 5815) @@ -393,9 +393,10 @@ bool fixed = false; m_ui.recursiveSearch->setEnabled(false); QTreeWidgetItem *child = m_ui.treeWidget->topLevelItem(ix); + QDir searchDir(newpath); while (child) { if (child->data(0, statusRole).toInt() == CLIPMISSING) { - QString clipPath = searchFileRecursively(QDir(newpath), child->data(0, sizeRole).toString(), child->data(0, hashRole).toString()); + QString clipPath = searchFileRecursively(searchDir, child->data(0, sizeRole).toString(), child->data(0, hashRole).toString()); if (!clipPath.isEmpty()) { fixed = true; child->setText(1, clipPath); @@ -411,6 +412,18 @@ child->setData(0, statusRole, LUMAOK); } } + else if (child->data(0, typeRole).toInt() == TITLE_IMAGE_ELEMENT && child->data(0, statusRole).toInt() == CLIPPLACEHOLDER) { + // Search missing title images + QString missingFileName = KUrl(child->text(1)).fileName(); + QString newPath = searchPathRecursively(searchDir, missingFileName); + if (!newPath.isEmpty()) { + // File found + fixed = true; + child->setText(1, newPath); + child->setIcon(0, KIcon("dialog-ok")); + child->setData(0, statusRole, CLIPOK); + } + } ix++; child = m_ui.treeWidget->topLevelItem(ix); } @@ -445,6 +458,24 @@ return QString(); } +QString DocumentChecker::searchPathRecursively(const QDir &dir, const QString &fileName) const +{ + QString foundFileName; + QStringList filters; + filters << fileName; + QDir searchDir(dir); + searchDir.setNameFilters(filters); + QStringList filesAndDirs = searchDir.entryList(QDir::Files | QDir::Readable); + if (!filesAndDirs.isEmpty()) return searchDir.absoluteFilePath(filesAndDirs.at(0)); + searchDir.setNameFilters(QStringList()); + filesAndDirs = searchDir.entryList(QDir::Dirs | QDir::Readable | QDir::Executable | QDir::NoDotAndDotDot); + for (int i = 0; i < filesAndDirs.size() && foundFileName.isEmpty(); i++) { + foundFileName = searchPathRecursively(searchDir.absoluteFilePath(filesAndDirs.at(i)), fileName); + if (!foundFileName.isEmpty()) + break; + } + return foundFileName; +} QString DocumentChecker::searchFileRecursively(const QDir &dir, const QString &matchSize, const QString &matchHash) const { Modified: trunk/kdenlive/src/documentchecker.h =================================================================== --- trunk/kdenlive/src/documentchecker.h 2011-07-30 22:13:47 UTC (rev 5814) +++ trunk/kdenlive/src/documentchecker.h 2011-07-31 10:23:30 UTC (rev 5815) @@ -57,6 +57,7 @@ QDomDocument m_doc; Ui::MissingClips_UI m_ui; QDialog *m_dialog; + QString searchPathRecursively(const QDir &dir, const QString &fileName) const; QString searchFileRecursively(const QDir &dir, const QString &matchSize, const QString &matchHash) const; void checkStatus(); QMap <QString, QString> m_missingTitleImages; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |