move funtion with std::vector to filetools

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21903 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Peter Kümmel 2007-12-02 09:19:43 +00:00
parent 6d24433cc5
commit aef7e129e7
5 changed files with 44 additions and 36 deletions

View File

@ -519,7 +519,8 @@ bool Converters::move(string const & fmt,
string const to_base = removeExtension(to.absFilename()); string const to_base = removeExtension(to.absFilename());
string const to_extension = getExtension(to.absFilename()); string const to_extension = getExtension(to.absFilename());
vector<FileName> const files = FileName(path).dirList(getExtension(from.absFilename())); vector<FileName> const files =
support::dirList(FileName(path), getExtension(from.absFilename()));
for (vector<FileName>::const_iterator it = files.begin(); for (vector<FileName>::const_iterator it = files.begin();
it != files.end(); ++it) { it != files.end(); ++it) {
string const from2 = it->absFilename(); string const from2 = it->absFilename();

View File

@ -326,37 +326,9 @@ bool FileName::createDirectory(int permission) const
} }
std::vector<FileName> FileName::dirList(std::string const & ext) docstring const FileName::absoluteFilePath() const
{ {
std::vector<FileName> dirlist; return qstring_to_ucs4(d->fi.absoluteFilePath());
if (!isDirectory()) {
LYXERR0("Directory '" << *this << "' does not exist!");
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, "filtering on extension "
<< fromqstr(filter) << " is requested.");
}
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, "found file " << fi);
}
return dirlist;
} }
@ -588,7 +560,7 @@ bool FileName::isZippedFile() const
docstring const FileName::relPath(string const & path) const docstring const FileName::relPath(string const & path) const
{ {
// FIXME UNICODE // FIXME UNICODE
return makeRelPath(qstring_to_ucs4(d->fi.absoluteFilePath()), from_utf8(path)); return makeRelPath(absoluteFilePath(), from_utf8(path));
} }

View File

@ -15,7 +15,6 @@
#include "support/strfwd.h" #include "support/strfwd.h"
#include <ctime> #include <ctime>
#include <vector>
namespace lyx { namespace lyx {
@ -140,12 +139,11 @@ public:
/// change to a directory, return success /// change to a directory, return success
bool chdir() const; bool chdir() const;
/// \return list other files in the directory having optional extension 'ext'.
std::vector<FileName> dirList(std::string const & ext = empty_string());
/// \param buffer_path if empty, uses `pwd` /// \param buffer_path if empty, uses `pwd`
docstring const relPath(std::string const & path) const; docstring const relPath(std::string const & path) const;
docstring const absoluteFilePath() const;
private: private:
/// ///
struct Private; struct Private;

View File

@ -934,5 +934,39 @@ int compare_timestamps(FileName const & file1, FileName const & file2)
return cmp; return cmp;
} }
std::vector<FileName> dirList(FileName const & filename, std::string const & ext)
{
std::vector<FileName> dirlist;
if (!filename.isDirectory()) {
LYXERR0("Directory '" << filename << "' does not exist!");
return dirlist;
}
QDir dir(toqstr(filename.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, "filtering on extension "
<< fromqstr(filter) << " is requested.");
}
QFileInfoList list = dir.entryInfoList();
for (int i = 0; i != list.size(); ++i) {
FileName fi(fromqstr(list.at(i).absoluteFilePath()));
dirlist.push_back(fi);
LYXERR(Debug::FILES, "found file " << fi);
}
return dirlist;
}
} //namespace support } //namespace support
} // namespace lyx } // namespace lyx

View File

@ -275,6 +275,9 @@ typedef std::pair<int, std::string> cmd_ret;
cmd_ret const runCommand(std::string const & cmd); cmd_ret const runCommand(std::string const & cmd);
/// \return list other files in the directory having optional extension 'ext'.
std::vector<FileName> dirList(FileName const & filename, std::string const & ext);
} // namespace support } // namespace support
} // namespace lyx } // namespace lyx