Beispiel #1
0
/*!
 * Adds the necessary paths to the file system watcher
 * \param filePath Path (including name) of the file to watch.
 * \param watcher The file system watcher.
 */
static void addPathsToWatcher(const QString &filePath,
                              QScopedPointer<QFileSystemWatcher>& watcher)
{
    QFileInfo fileInfo(filePath);
    QString directory;
    bool fileExists = fileInfo.exists();
    if (fileExists) {
        // If the file exists, we can take the canonical path directly
        directory = fileInfo.canonicalPath();
    } else {
        // If the file doesn't exist, canonicalPath would return an empty string. That's why
        // we need to get the parent directory first.
        QFileInfo parentPath(fileInfo.absolutePath());
        if (parentPath.exists()) {
            directory = parentPath.canonicalFilePath();
        }
    }

    if (!directory.isEmpty()) {
        // Watch the directory if it's not being watched yet
        if (!watcher->directories().contains(directory)) {
            watcher->addPath(directory);
        }
    }

    // Watch the file itself if it's not being watched yet
    if (fileExists && !watcher->files().contains(filePath)) {
        watcher->addPath(filePath);
    }
}