]> git.lyx.org Git - lyx.git/blobdiff - src/support/FileName.cpp
Getting rid of normalizePath() which is unneeded for FileName purpose (the path is...
[lyx.git] / src / support / FileName.cpp
index 33d7539c52f76edb59d93b2c62ea576914ce89a0..91b9a33cc4db809d17927a84737af8b7a5e7373d 100644 (file)
@@ -76,7 +76,8 @@ struct FileName::Private
 
 
 FileName::FileName() : d(new Private)
-{}
+{
+}
 
 FileName::FileName(string const & abs_filename)
        : d(abs_filename.empty() ? new Private : new Private(abs_filename))
@@ -285,6 +286,42 @@ bool FileName::createDirectory(int permission) const
 }
 
 
+std::vector<FileName> FileName::dirList(std::string const & ext)
+{
+       std::vector<FileName> dirlist;
+       if (!exists() || !isDirectory()) {
+               lyxerr << "FileName::dirList(): Directory \"" << absFilename()
+                       << "\" does not exist!" << endl;
+               return dirlist;
+       }
+
+       QDir dir(d->fi.absoluteFilePath());
+
+       if (!ext.empty()) {
+               QString filter;
+               switch (ext[0]) {
+               case '.': filter = "*" + toqstr(ext); break;
+               case '*': filter = toqstr(ext); break;
+               default: filter = "*." + toqstr(ext);
+               }
+               dir.setNameFilters(QStringList(filter));
+               LYXERR(Debug::FILES, "FileName::dirList(): filtering on extension "
+                       << fromqstr(filter) << " is requested." << endl);
+       }
+
+       QFileInfoList list = dir.entryInfoList();
+       for (int i = 0; i < list.size(); ++i) {
+               FileName fi;
+               fi.d->fi = list.at(i);
+               dirlist.push_back(fi);
+               LYXERR(Debug::FILES, "FileName::dirList(): found file "
+                       << fi.absFilename() << endl);
+       }
+
+       return dirlist;
+}
+
+
 docstring FileName::displayName(int threshold) const
 {
        return makeDisplayPath(absFilename(), threshold);