1 #ifndef FILEFILTERITEMS_H
2 #define FILEFILTERITEMS_H
7 #include <qdeclarative.h>
8 #include <QFileSystemWatcher>
10 #include "qmlprojectitem.h"
11 #include "filesystemwatcher.h"
13 namespace QmlProjectManager {
15 class FileFilterBaseItem : public QmlProjectContentItem {
18 Q_PROPERTY(QString directory READ directory WRITE setDirectory NOTIFY directoryChanged)
19 Q_PROPERTY(bool recursive READ recursive WRITE setRecursive NOTIFY recursiveChanged)
20 Q_PROPERTY(QStringList paths READ pathsProperty WRITE setPathsProperty)
22 Q_PROPERTY(QStringList files READ files NOTIFY filesChanged DESIGNABLE false)
25 FileFilterBaseItem(QObject *parent = 0);
27 QString directory() const;
28 void setDirectory(const QString &directoryPath);
30 void setDefaultDirectory(const QString &directoryPath);
32 QString filter() const;
33 void setFilter(const QString &filter);
35 bool recursive() const;
36 void setRecursive(bool recursive);
38 QStringList pathsProperty() const;
39 void setPathsProperty(const QStringList &paths);
41 virtual QStringList files() const;
42 bool matchesFile(const QString &filePath) const;
45 void directoryChanged();
46 void recursiveChanged();
48 void filesChanged(const QSet<QString> &added, const QSet<QString> &removed);
51 void updateFileList();
54 QString absolutePath(const QString &path) const;
55 QString absoluteDir() const;
57 bool fileMatches(const QString &fileName) const;
58 QSet<QString> filesInSubTree(const QDir &rootDir, const QDir &dir, QSet<QString> *parsedDirs = 0);
64 // simple "*.png" patterns are stored in m_fileSuffixes, otherwise store in m_regExpList
65 QList<QString> m_fileSuffixes;
66 QList<QRegExp> m_regExpList;
68 enum RecursiveOption {
71 RecurseDefault // not set explicitly
74 RecursiveOption m_recurse;
76 QStringList m_explicitFiles;
78 QSet<QString> m_files;
79 FileSystemWatcher m_dirWatcher;
82 friend class ProjectItem;
85 class QmlFileFilterItem : public FileFilterBaseItem {
89 QmlFileFilterItem(QObject *parent = 0);
92 class JsFileFilterItem : public FileFilterBaseItem {
94 Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
96 void setFilter(const QString &filter);
102 JsFileFilterItem(QObject *parent = 0);
105 class ImageFileFilterItem : public FileFilterBaseItem {
107 Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
109 void setFilter(const QString &filter);
112 void filterChanged();
115 ImageFileFilterItem(QObject *parent = 0);
118 class CssFileFilterItem : public FileFilterBaseItem {
120 Q_PROPERTY(QString filter READ filter WRITE setFilter NOTIFY filterChanged)
122 void setFilter(const QString &filter);
125 void filterChanged();
128 CssFileFilterItem(QObject *parent = 0);
131 } // namespace QmlProjectManager
133 QML_DECLARE_TYPE(QmlProjectManager::QmlFileFilterItem)
134 QML_DECLARE_TYPE(QmlProjectManager::JsFileFilterItem)
135 QML_DECLARE_TYPE(QmlProjectManager::ImageFileFilterItem)
136 QML_DECLARE_TYPE(QmlProjectManager::CssFileFilterItem)
138 #endif // FILEFILTERITEMS_HPROJECTITEM_H