Mercurial > dedupe
diff DataController.cpp @ 10:ec87a79770ee
Use boost find, to work around problems with QDir.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Thu, 23 Aug 2012 00:26:45 +0200 |
| parents | b5943e4bf676 |
| children | e60d6caceb62 |
line wrap: on
line diff
--- a/DataController.cpp Wed Aug 22 18:48:07 2012 +0200 +++ b/DataController.cpp Thu Aug 23 00:26:45 2012 +0200 @@ -28,8 +28,26 @@ #include <iostream> #include <memory> +#include <boost/filesystem.hpp> + void DataController::findFiles(const QDir& dir, QStringList& list) { +#if USE_BOOST_FIND + namespace fs = boost::filesystem; + fs::path someDir(dir.path().toStdString()); + fs::directory_iterator end_iter; + + if ( fs::exists(someDir) && fs::is_directory(someDir)) { + for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter) { + if (fs::is_directory(dir_iter->status()) ) { + findFiles(QString::fromStdWString(dir_iter->path().wstring())); + } + if (fs::is_regular_file(dir_iter->status()) ) { + list << QString::fromStdWString(dir_iter->path().wstring()); + } + } + } +#else foreach(QString filename, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) { filename = dir.absoluteFilePath(filename); findFiles(QDir(filename), list); @@ -38,6 +56,8 @@ foreach(QString filename, dir.entryList(QDir::Files | QDir::NoSymLinks)) { list << dir.absoluteFilePath(filename); } +#endif + } QStringList DataController::findFiles(const QDir& dir)
