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)