#include <QSet>
#include <qdeclarative.h>
#include <QFileSystemWatcher>
+#include <QTimer>
#include "qmlprojectitem.h"
+#include "filesystemwatcher.h"
namespace QmlProjectManager {
Q_PROPERTY(QString directory READ directory WRITE setDirectory NOTIFY directoryChanged)
Q_PROPERTY(bool recursive READ recursive WRITE setRecursive NOTIFY recursiveChanged)
- Q_PROPERTY(QStringList paths READ pathsProperty WRITE setPathsProperty NOTIFY pathsPropertyChanged)
+ Q_PROPERTY(QStringList paths READ pathsProperty WRITE setPathsProperty)
Q_PROPERTY(QStringList files READ files NOTIFY filesChanged DESIGNABLE false)
void directoryChanged();
void recursiveChanged();
void pathsChanged();
- void filesChanged();
- void filterChanged();
+ void filesChanged(const QSet<QString> &added, const QSet<QString> &removed);
private slots:
void updateFileList();
+ void updateFileListNow();
private:
QString absolutePath(const QString &path) const;
QString absoluteDir() const;
+ bool fileMatches(const QString &fileName) const;
QSet<QString> filesInSubTree(const QDir &rootDir, const QDir &dir, QSet<QString> *parsedDirs = 0);
QString m_rootDir;
QString m_defaultDir;
QString m_filter;
+ // simple "*.png" patterns are stored in m_fileSuffixes, otherwise store in m_regExpList
+ QList<QString> m_fileSuffixes;
QList<QRegExp> m_regExpList;
- bool m_recursive;
- QStringList m_explicitFiles;
- QFileSystemWatcher m_fsWatcher;
+ enum RecursiveOption {
+ Recurse,
+ DoNotRecurse,
+ RecurseDefault // not set explicitly
+ };
+
+ RecursiveOption m_recurse;
+
+ QStringList m_explicitFiles;
QSet<QString> m_files;
+ FileSystemWatcher m_dirWatcher;
+ QTimer m_updateFileListTimer;
+
friend class ProjectItem;
};
class JsFileFilterItem : public FileFilterBaseItem {
Q_OBJECT
- Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged())
+ Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
+
+ void setFilter(const QString &filter);
+
+signals:
+ void filterChanged();
public:
JsFileFilterItem(QObject *parent = 0);
class ImageFileFilterItem : public FileFilterBaseItem {
Q_OBJECT
- Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged())
+ Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
+
+ void setFilter(const QString &filter);
+
+signals:
+ void filterChanged();
public:
ImageFileFilterItem(QObject *parent = 0);
class CssFileFilterItem : public FileFilterBaseItem {
Q_OBJECT
- Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged())
+ Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
+
+ void setFilter(const QString &filter);
+
+signals:
+ void filterChanged();
public:
CssFileFilterItem(QObject *parent = 0);