QmlProject file format: Let filters recurse by default

E.g. "QmlFiles {}" now also monitors subdirectories by default, while
"QmlFiles { paths : ["bla.qml"] } does not.

Task-number: BAUHAUS-503
This commit is contained in:
Kai Koehne
2010-03-22 10:19:39 +01:00
parent 8540effe3a
commit 3984c057b8
5 changed files with 51 additions and 25 deletions

View File

@@ -6,7 +6,7 @@ namespace QmlProjectManager {
FileFilterBaseItem::FileFilterBaseItem(QObject *parent) :
QmlProjectContentItem(parent),
m_recursive(false)
m_recurse(RecurseDefault)
{
connect(&m_fsWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(updateFileList()));
connect(&m_fsWatcher, SIGNAL(fileChanged(QString)), this, SLOT(updateFileList()));
@@ -58,15 +58,33 @@ void FileFilterBaseItem::setFilter(const QString &filter)
bool FileFilterBaseItem::recursive() const
{
return m_recursive;
bool recursive;
if (m_recurse == Recurse) {
recursive = true;
} else if (m_recurse == DoNotRecurse) {
recursive = false;
} else { // RecurseDefault
if (m_explicitFiles.isEmpty()) {
recursive = true;
} else {
recursive = false;
}
}
return recursive;
}
void FileFilterBaseItem::setRecursive(bool recursive)
void FileFilterBaseItem::setRecursive(bool recurse)
{
if (recursive == m_recursive)
return;
m_recursive = recursive;
updateFileList();
bool oldRecursive = recursive();
if (recurse) {
m_recurse = Recurse;
} else {
m_recurse = DoNotRecurse;
}
if (recurse != oldRecursive)
updateFileList();
}
QStringList FileFilterBaseItem::pathsProperty() const
@@ -194,7 +212,7 @@ QSet<QString> FileFilterBaseItem::filesInSubTree(const QDir &rootDir, const QDir
}
}
if (m_recursive) {
if (recursive()) {
foreach (const QFileInfo &subDir, dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) {
fileSet += filesInSubTree(rootDir, QDir(subDir.absoluteFilePath()), parsedDirs);
}

View File

@@ -61,7 +61,15 @@ private:
QString m_filter;
QList<QRegExp> m_regExpList;
bool m_recursive;
enum RecursiveOption {
Recurse,
DoNotRecurse,
RecurseDefault // not set explicitly
};
RecursiveOption m_recurse;
QStringList m_explicitFiles;
QFileSystemWatcher m_fsWatcher;