/*!
@~chinese
@ingroup dfilesystem
@file include/filesystem/dbasefilewatcher.h

@class Dtk::Core::DBaseFileWatcher
@brief DBaseFileWatcher 类提供了一系列接口可供监视文件和目录的变动。
@note 建议使用 DFileWatcher 类，该类是 DBaseFileWatcher 的子类，提供了更多的功能。或者使用DFileWatcherManager类，该类提供了对文件和目录的监视功能。
@warning 该类是一个虚类，不应该被直接使用，而应该使用 DFileWatcher 类或者 DFileWatcherManager 类。

@fn QUrl Dtk::Core::DBaseFileWatcher::fileUrl()
@brief 返回文件的统一资源定位符
@sa [QUrl](https://doc.qt.io/qt-5/qurl.html)

@fn bool Dtk::Core::DBaseFileWatcher::startWatcher()
@brief 开始监视文件变动
@return true 成功  false 失败
@sa DBaseFileWatcher::stopWatcher

@fn bool Dtk::Core::DBaseFileWatcher::stopWatcher()
@brief 停止监视文件变动
@return true 成功  false 失败
@sa DBaseFileWatcher::startWatcher()

@fn bool Dtk::Core::DBaseFileWatcher::restartWatcher()
@brief 重启监视文件变动
@return true 成功  false 失败
@sa DBaseFileWatcher::startWatcher()

@fn virtual void Dtk::Core::DBaseFileWatcher::setEnabledSubfileWatcher(const QUrl &subfileUrl, bool enabled = true)
@brief 设置是否对`subfileUrl`目录启用文件监视
@param[in] subfileUrl 设置所针对的 Url
@param[in] enabled 是否启用文件变动监视

@fn static bool Dtk::Core::DBaseFileWatcher::ghostSignal(const QUrl &targetUrl, SignalType1 signal, const QUrl &arg1)
@brief 发送一个信号表示目标目录`targetUrl`得到了一个`signal`信号，包含参数`arg1`<br>
使用方式如下:
@code
        DBaseFileWatcher::ghostSignal(QUrl("bookmark:///"), &DBaseFileWatcher::fileDeleted, QUrl("bookmark:///bookmarkFile1"));
@endcode
@return 成功发送返回 true,否则返回 false

@fn static bool Dtk::Core::DBaseFileWatcher::ghostSignal(const QUrl &targetUrl, DBaseFileWatcher::SignalType2 signal, const QUrl &arg1, const QUrl &arg2)
@brief 发送一个信号表示目标目录`targetUrl`得到了一个`signal`信号，包含参数`arg1`和`arg2`<br>
@details 示例用法:
@code
  DBaseFileWatcher::ghostSignal(QUrl("bookmark:///"), &DBaseFileWatcher::fileMoved, QUrl("bookmark:///bookmarkFile1"), QUrl("bookmark:///NewNameFile1"));
@endcode

@var Dtk::Core::DBaseFileWatcher::fileDeleted(const QUrl &url)
@brief 文件被删除的信号

@var Dtk::Core::DBaseFileWatcher::fileMoved(const QUrl &fromUrl, const QUrl &toUrl)
@brief 文件被移动的信号

@var Dtk::Core::DBaseFileWatcher::fileAttributeChanged(const QUrl &url)
@brief 文件属性被改变的信号

@var Dtk::Core::DBaseFileWatcher::subfileCreated(const QUrl &url)
@brief 子文件被创建的信号

@var Dtk::Core::DBaseFileWatcher::fileClosed(const QUrl &url)
@brief 文件被关闭的信号

@var Dtk::Core::DBaseFileWatcher::fileModified(const QUrl &url)
@brief 文件被修改的信号

*/
