#ifndef WATCHER_H #define WATCHER_H #include #include #include #include class Watcher : public QObject { Q_OBJECT public: explicit Watcher(const QString& path, QObject *parent = 0); signals: void pathAdded(const QString& path); void pathRemoved(const QString& path); void pathChanged(const QString& path); private slots: void readInotify(); private: QStringList scanDirs(const QDir& dir); void addWatch(const QString& path); void removeWatch(const QString& path); void removeWatch(int wd); private: int _fd; QSocketNotifier *_notifier; quint32 _mask; QByteArray _buffer; QMap _watches; QHash _dirs; }; #endif // WATCHER_H