kio Library API Documentation

KDirWatch Class Reference

Watch directories and files for changes. Class for watching directory and file changes. More...

#include <kdirwatch.h>

Inheritance diagram for KDirWatch:

QObject List of all members.

Signals

void dirty (const QString &)
 Emitted when a watched object is changed.

void created (const QString &)
 Emitted when a file or directory is created.

void deleted (const QString &)
 Emitted when a file or directory is deleted.


Public Methods

 KDirWatch (QObject *parent=0, const char *name=0)
 Constructor.

 ~KDirWatch ()
 Destructor.

void addDir (const QString &path, bool watchFiles=false, bool recursive=false)
 Adds a directory to be watched.

void addFile (const QString &file)
 Adds a file to be watched.

QDateTime ctime (const QString &path)
 Returns the time the directory/file was last changed.

void removeDir (const QString &path)
 Removes a directory from the list of scanned directories.

void removeFile (const QString &file)
 Removes a file from the list of watched files.

bool stopDirScan (const QString &path)
 Stops scanning the specified path.

bool restartDirScan (const QString &path)
 Restarts scanning for specified path.

void startScan (bool notify=false, bool skippedToo=false)
 Starts scanning of all dirs in list.

void stopScan ()
 Stops scanning of all directories in internal list.

bool isStopped ()
 Is scanning stopped? After creation of a KDirWatch instance, this is false.

bool contains (const QString &path) const
 Check if a directory is being watched by this KDirWatch instance.

void setCreated (const QString &)
 created()

void setDirty (const QString &)
 dirty()

void setDeleted (const QString &)
 deleted()


Static Public Methods

void statistics ()
 Dump statistic information about all KDirWatch instances.

KDirWatch * self ()
 The KDirWatch instance usually globally used in an application.

bool exists ()
 Return true if KDirWatch::self() exists
Since:
3.1.



Detailed Description

Watch directories and files for changes. Class for watching directory and file changes.

The watched directories or files doesn't have to exist yet.

When a watched directory is changed, i.e. when files therein are created or deleted, KDirWatch will emit the signal dirty().

When a watched, but previously not existing directory gets created, KDirWatch will emit the signal created().

When a watched directory gets deleted, KDirWatch will emit the signal deleted(). The directory is still watched for new creation.

When a watched file is changed, i.e. attributes changed or written to, KDirWatch will emit the signal dirty().

Scanning of particular directories or files can be stopped temporarily and restarted. The whole class can be stopped and restarted. Directories and files can be added/removed from list in any state.

The implementation uses the FAM service when available; if FAM is not available, the DNOTIFY functionality is used on LINUX. As a last resort, a regular polling for change of modification times is done; the polling interval is a global config option: DirWatch/PollInterval and DirWatch/NFSPollInterval for NFS mounted directories.

Author:
Sven Radej <sven@lisa.exp.univie.ac.at>

Definition at line 60 of file kdirwatch.h.


Constructor & Destructor Documentation

KDirWatch::KDirWatch QObject   parent = 0,
const char *    name = 0
 

Constructor.

Scanning begins immediatly when a dir/file watch is added.

Definition at line 1247 of file kdirwatch.cpp.

References QObject::name(), and QObject::setName().

KDirWatch::~KDirWatch  
 

Destructor.

Stops scanning and cleans up.

Definition at line 1265 of file kdirwatch.cpp.


Member Function Documentation

void KDirWatch::addDir const QString   path,
bool    watchFiles = false,
bool    recursive = false
 

Adds a directory to be watched.

The directory does not have to exist. When watchFiles is false (the default), the signals dirty(), created(), deleted() can be emitted, all for the watched directory. When watchFiles is true, all files in the watched directory are looked for changes, too. Thus, the signals fileDirty(), fileCreated(), fileDeleted() can be emitted. are looked for changes, too. Thus, the signals dirty(), created(), deleted() can be emitted.

When recursive is true, also all sub directories are watched.

Definition at line 1278 of file kdirwatch.cpp.

void KDirWatch::addFile const QString   file
 

Adds a file to be watched.

Definition at line 1288 of file kdirwatch.cpp.

QDateTime KDirWatch::ctime const QString   path
 

Returns the time the directory/file was last changed.

Definition at line 1293 of file kdirwatch.cpp.

void KDirWatch::removeDir const QString   path
 

Removes a directory from the list of scanned directories.

If specified path is not in the list this does nothing.

Definition at line 1303 of file kdirwatch.cpp.

void KDirWatch::removeFile const QString   file
 

Removes a file from the list of watched files.

If specified path is not in the list this does nothing.

Definition at line 1308 of file kdirwatch.cpp.

bool KDirWatch::stopDirScan const QString   path
 

Stops scanning the specified path.

The path is not deleted from the interal just, it is just skipped. Call this function when you perform an huge operation on this directory (copy/move big files or many files). When finished, call restartDirScan (path). Returns false if specified path is not in list, true otherwise.

Definition at line 1313 of file kdirwatch.cpp.

bool KDirWatch::restartDirScan const QString   path
 

Restarts scanning for specified path.

Resets ctime. It doesn't notify the change (by emitted a signal), since the ctime value is reset.

Call it when you are finished with big operations on that path, and when you have refreshed that path. Returns false if specified path is not in list, true otherwise.

Definition at line 1322 of file kdirwatch.cpp.

void KDirWatch::startScan bool    notify = false,
bool    skippedToo = false
 

Starts scanning of all dirs in list.

If notify is true, all changed directories (since stopScan() call) will be notified for refresh. If notify is false, all ctimes will be reset (except those who are stopped, but only if skippedToo is false) and changed dirs won't be notified. You can start scanning even if the list is empty. First call should be called with false or else all directories in list will be notified. If skippedToo is true, the skipped directoris (scanning of which was stopped with stopDirScan() ) will be reset and notified for change. Otherwise, stopped directories will continue to be unnotified.

Definition at line 1339 of file kdirwatch.cpp.

void KDirWatch::stopScan  
 

Stops scanning of all directories in internal list.

The timer is stopped, but the list is not cleared.

Definition at line 1333 of file kdirwatch.cpp.

bool KDirWatch::isStopped   [inline]
 

Is scanning stopped? After creation of a KDirWatch instance, this is false.

Definition at line 174 of file kdirwatch.h.

bool KDirWatch::contains const QString   path const
 

Check if a directory is being watched by this KDirWatch instance.

Definition at line 1346 of file kdirwatch.cpp.

void KDirWatch::statistics   [static]
 

Dump statistic information about all KDirWatch instances.

This checks for consistency, too.

Definition at line 1359 of file kdirwatch.cpp.

void KDirWatch::setCreated const QString  
 

created()

Definition at line 1369 of file kdirwatch.cpp.

References created(), and QObject::name().

void KDirWatch::setDirty const QString  
 

dirty()

Definition at line 1375 of file kdirwatch.cpp.

References dirty(), and QObject::name().

void KDirWatch::setDeleted const QString  
 

deleted()

Definition at line 1381 of file kdirwatch.cpp.

References deleted(), and QObject::name().

KDirWatch * KDirWatch::self   [static]
 

The KDirWatch instance usually globally used in an application.

It is automatically deleted when the application exits.

However, you can create an arbitrary number of KDirWatch instances aside from this one - for those you have to take care of memory management.

Definition at line 1233 of file kdirwatch.cpp.

References KStaticDeleter< type >::setObject().

bool KDirWatch::exists   [static]
 

Return true if KDirWatch::self() exists

Since:
3.1.

Definition at line 1242 of file kdirwatch.cpp.

void KDirWatch::dirty const QString   [signal]
 

Emitted when a watched object is changed.

For a directory this signal is emitted when files therein are created or deleted. For a file this signal is emitted when its size or attributes change.

When you watch a directory, changes in the size or attributes of contained files may or may not trigger this signal to be emitted depending on which backend is used by KDirWatch.

The new ctime is set before the signal is emitted.

Referenced by setDirty().

void KDirWatch::created const QString   [signal]
 

Emitted when a file or directory is created.

Referenced by setCreated().

void KDirWatch::deleted const QString   [signal]
 

Emitted when a file or directory is deleted.

The object is still watched for new creation.

Referenced by setDeleted().


The documentation for this class was generated from the following files:
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.0.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Oct 8 12:21:35 2003 by doxygen 1.2.18 written by Dimitri van Heesch, © 1997-2001