MultiMC5/api/logic/RecursiveFileSystemWatcher.h

64 lines
1.3 KiB
C
Raw Normal View History

#pragma once
#include <QFileSystemWatcher>
#include <QDir>
#include "pathmatcher/IPathMatcher.h"
#include "multimc_logic_export.h"
class MULTIMC_LOGIC_EXPORT RecursiveFileSystemWatcher : public QObject
{
2018-07-15 12:51:05 +00:00
Q_OBJECT
public:
2018-07-15 12:51:05 +00:00
RecursiveFileSystemWatcher(QObject *parent);
void setRootDir(const QDir &root);
QDir rootDir() const
{
return m_root;
}
// WARNING: setting this to true may be bad for performance
void setWatchFiles(const bool watchFiles);
bool watchFiles() const
{
return m_watchFiles;
}
void setMatcher(IPathMatcher::Ptr matcher)
{
m_matcher = matcher;
}
QStringList files() const
{
return m_files;
}
signals:
2018-07-15 12:51:05 +00:00
void filesChanged();
void fileChanged(const QString &path);
public slots:
2018-07-15 12:51:05 +00:00
void enable();
void disable();
private:
2018-07-15 12:51:05 +00:00
QDir m_root;
bool m_watchFiles = false;
bool m_isEnabled = false;
IPathMatcher::Ptr m_matcher;
2018-07-15 12:51:05 +00:00
QFileSystemWatcher *m_watcher;
2018-07-15 12:51:05 +00:00
QStringList m_files;
void setFiles(const QStringList &files);
2018-07-15 12:51:05 +00:00
void addFilesToWatcherRecursive(const QDir &dir);
QStringList scanRecursive(const QDir &dir);
private slots:
2018-07-15 12:51:05 +00:00
void fileChange(const QString &path);
void directoryChange(const QString &path);
};