comparison 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
comparison
equal deleted inserted replaced
9:b5943e4bf676 10:ec87a79770ee
26 #include <QtGui/QTreeWidget> 26 #include <QtGui/QTreeWidget>
27 27
28 #include <iostream> 28 #include <iostream>
29 #include <memory> 29 #include <memory>
30 30
31 #include <boost/filesystem.hpp>
32
31 void DataController::findFiles(const QDir& dir, QStringList& list) 33 void DataController::findFiles(const QDir& dir, QStringList& list)
32 { 34 {
35 #if USE_BOOST_FIND
36 namespace fs = boost::filesystem;
37 fs::path someDir(dir.path().toStdString());
38 fs::directory_iterator end_iter;
39
40 if ( fs::exists(someDir) && fs::is_directory(someDir)) {
41 for( fs::directory_iterator dir_iter(someDir) ; dir_iter != end_iter ; ++dir_iter) {
42 if (fs::is_directory(dir_iter->status()) ) {
43 findFiles(QString::fromStdWString(dir_iter->path().wstring()));
44 }
45 if (fs::is_regular_file(dir_iter->status()) ) {
46 list << QString::fromStdWString(dir_iter->path().wstring());
47 }
48 }
49 }
50 #else
33 foreach(QString filename, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) { 51 foreach(QString filename, dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs)) {
34 filename = dir.absoluteFilePath(filename); 52 filename = dir.absoluteFilePath(filename);
35 findFiles(QDir(filename), list); 53 findFiles(QDir(filename), list);
36 } 54 }
37 55
38 foreach(QString filename, dir.entryList(QDir::Files | QDir::NoSymLinks)) { 56 foreach(QString filename, dir.entryList(QDir::Files | QDir::NoSymLinks)) {
39 list << dir.absoluteFilePath(filename); 57 list << dir.absoluteFilePath(filename);
40 } 58 }
59 #endif
60
41 } 61 }
42 62
43 QStringList DataController::findFiles(const QDir& dir) 63 QStringList DataController::findFiles(const QDir& dir)
44 { 64 {
45 QStringList list; 65 QStringList list;