FileName::FileName() : d(new Private)
-{}
+{
+}
FileName::FileName(string const & abs_filename)
: d(abs_filename.empty() ? new Private : new Private(abs_filename))
bool FileName::empty() const
{
- lyxerr << "FileName::empty() '" << absFilename() << "'" << endl;
return d->fi.absoluteFilePath().isEmpty();
}
{
QDir dir(fi.absoluteFilePath());
QFileInfoList list = dir.entryInfoList();
+ bool global_success = true;
for (int i = 0; i < list.size(); ++i) {
if (list.at(i).fileName() == ".")
continue;
if (list.at(i).fileName() == "..")
continue;
+ bool success;
if (list.at(i).isDir()) {
LYXERR(Debug::FILES, "Erasing dir "
<< fromqstr(list.at(i).absoluteFilePath()) << endl);
- if (!rmdir(list.at(i)))
- return false;
+ success = rmdir(list.at(i));
}
else {
LYXERR(Debug::FILES, "Erasing file "
<< fromqstr(list.at(i).absoluteFilePath()) << endl);
- dir.remove(list.at(i).fileName());
+ success = dir.remove(list.at(i).fileName());
+ }
+ if (!success) {
+ global_success = false;
+ lyxerr << "Could not delete "
+ << fromqstr(list.at(i).absoluteFilePath()) << "." << endl;
}
}
QDir parent = fi.absolutePath();
- return parent.rmdir(fi.fileName());
+ global_success |= parent.rmdir(fi.fileName());
+ return global_success;
}
}
+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);