]> git.lyx.org Git - features.git/commitdiff
Introducing FileName::dirList() to replace the one in filetools.cpp
authorAbdelrazak Younes <younes@lyx.org>
Tue, 27 Nov 2007 09:43:30 +0000 (09:43 +0000)
committerAbdelrazak Younes <younes@lyx.org>
Tue, 27 Nov 2007 09:43:30 +0000 (09:43 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21816 a592a061-630c-0410-9148-cb99ea01b6c8

src/Converter.cpp
src/support/FileName.cpp
src/support/FileName.h
src/support/filetools.cpp
src/support/filetools.h

index 1fe895e3140076bc9198a5f534345c9cfd726621..3b958c3117db3ccd578e22cc2fb4771f574a0d79 100644 (file)
@@ -47,7 +47,6 @@ using support::bformat;
 using support::changeExtension;
 using support::compare_ascii_no_case;
 using support::contains;
-using support::dirList;
 using support::FileName;
 using support::getExtension;
 using support::libFileSearch;
@@ -520,8 +519,8 @@ bool Converters::move(string const & fmt,
        string const to_base = removeExtension(to.absFilename());
        string const to_extension = getExtension(to.absFilename());
 
-       vector<FileName> const files = dirList(FileName(path),
-                       getExtension(from.absFilename()));
+       vector<FileName> const files = FileName(path).dirList(
+               getExtension(from.absFilename()));
        for (vector<FileName>::const_iterator it = files.begin();
             it != files.end(); ++it) {
                string const from2 = it->absFilename();
index 33d7539c52f76edb59d93b2c62ea576914ce89a0..d5507120f4f78ceeb76a4ca2b9909fd4e33926df 100644 (file)
@@ -285,6 +285,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);
index dfda706f2397461abf684f739652d3ec5bc165ee..d447f5abf35c066123a282e8269da6dffad261b6 100644 (file)
@@ -14,8 +14,9 @@
 
 #include "strfwd.h"
 
-#include <string>
 #include <ctime>
+#include <string>
+#include <vector>
 
 
 namespace lyx {
@@ -91,6 +92,10 @@ public:
        /// Creates directory. Returns true on success
        bool createDirectory(int permissions) const;
 
+       /// \return list files in a directory having optional extension ext..
+       std::vector<FileName> dirList(
+               std::string const & ext = std::string());
+
        /// Get the contents of a file as a huge std::string
        std::string fileContents() const;
        /**
index f3a4914d9f14db79f60d7da02bd35a8e8cba8d72..4b80d824fe4c63eb6004195917d392f14dfdc843 100644 (file)
@@ -191,36 +191,6 @@ FileName const fileOpenSearch(string const & path, string const & name,
 #endif
 
 
-/// Returns a vector of all files in directory dir having extension ext.
-vector<FileName> const dirList(FileName const & dir, string const & ext)
-{
-       // EXCEPTIONS FIXME. Rewrite needed when we turn on exceptions. (Lgb)
-       vector<FileName> dirlist;
-
-       if (!(dir.exists() && dir.isDirectory())) {
-               LYXERR(Debug::FILES, "Directory \"" << dir
-                       << "\" does not exist to DirList.");
-               return dirlist;
-       }
-
-       string extension;
-       if (!ext.empty() && ext[0] != '.')
-               extension += '.';
-       extension += ext;
-
-       string const encoded_dir = dir.toFilesystemEncoding();
-       fs::directory_iterator dit(encoded_dir);
-       fs::directory_iterator end;
-       for (; dit != end; ++dit) {
-               string const & fil = dit->leaf();
-               if (suffixIs(fil, extension))
-                       dirlist.push_back(FileName::fromFilesystemEncoding(
-                                       encoded_dir + '/' + fil));
-       }
-       return dirlist;
-}
-
-
 // Returns the real name of file name in directory path, with optional
 // extension ext.
 FileName const fileSearch(string const & path, string const & name,
index 32ef735085ddddf3fb65fefa4e7d4b292eecd8c6..7fb33baea0518a750f8502454be157f3eeea53e2 100644 (file)
@@ -66,10 +66,6 @@ FileName const fileSearch(std::string const & path,
                             std::string const & ext = std::string(),
                             search_mode mode = standard_mode);
 
-/// Returns a vector of all files in directory dir having extension ext.
-std::vector<FileName> const dirList(FileName const & dir,
-                                      std::string const & ext = std::string());
-
 ///
 bool isLyXFilename(std::string const & filename);