author | mickeyl <mickeyl> | 2005-06-02 10:38:42 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2005-06-02 10:38:42 (UTC) |
commit | 9d6c759ac1adc5cb654bb3ada6b1d64cddc7217d (patch) (side-by-side diff) | |
tree | 05f7572469fe6c5721b44ed64796bd1104ea3525 /libopie2/opiecore/linux/ofilenotify.h | |
parent | b30f28de8d5fa29001bc73a0a0e56ef653f1269f (diff) | |
download | opie-9d6c759ac1adc5cb654bb3ada6b1d64cddc7217d.zip opie-9d6c759ac1adc5cb654bb3ada6b1d64cddc7217d.tar.gz opie-9d6c759ac1adc5cb654bb3ada6b1d64cddc7217d.tar.bz2 |
more work on recursive watches
Diffstat (limited to 'libopie2/opiecore/linux/ofilenotify.h') (more/less context) (show whitespace changes)
-rw-r--r-- | libopie2/opiecore/linux/ofilenotify.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libopie2/opiecore/linux/ofilenotify.h b/libopie2/opiecore/linux/ofilenotify.h index 05343b9..17e6b5d 100644 --- a/libopie2/opiecore/linux/ofilenotify.h +++ b/libopie2/opiecore/linux/ofilenotify.h @@ -90,48 +90,49 @@ class OFileNotificationEvent; * * This enumerate provides a means to specify the type of events that you are interest in. * Valid values are: * <ul> * <li>Access: The file was accessed (read) * <li>Modify The file was modified (write,truncate) * <li>Attrib = The file had its attributes changed (chmod,chown,chgrp) * <li>CloseWrite = Writable file was closed * <li>CloseNoWrite = Unwritable file was closed * <li>Open = File was opened * <li>MovedFrom = File was moved from X * <li>MovedTo = File was moved to Y * <li>DeleteSubdir = Subdir was deleted * <li>DeleteFile = Subfile was deleted * <li>CreateSubdir = Subdir was created * <li>CreateFile = Subfile was created * <li>DeleteSelf = Self was deleted * <li>Unmount = The backing filesystem was unmounted * </ul> * **/ enum OFileNotificationType { + Nothing = 0, Access = IN_ACCESS, Modify = IN_MODIFY, Attrib = IN_ATTRIB, CloseWrite = IN_CLOSE_WRITE, CloseNoWrite = IN_CLOSE_NOWRITE, Open = IN_OPEN, MovedFrom = IN_MOVED_FROM, MovedTo = IN_MOVED_TO, DeleteSubdir = IN_DELETE_SUBDIR, DeleteFile = IN_DELETE_FILE, CreateSubdir = IN_CREATE_SUBDIR, CreateFile = IN_CREATE_FILE, DeleteSelf = IN_DELETE_SELF, Unmount = IN_UNMOUNT, _QueueOverflow = IN_Q_OVERFLOW, /* Internal, don't use this in client code */ _Ignored = IN_IGNORED, /* Internal, don't use this in client code */ }; /*====================================================================================== * OFileNotification *======================================================================================*/ /** * @brief Represents a file notification @@ -177,48 +178,52 @@ class OFileNotification : public QObject * This sample program automatically terminates when the file "/tmp/quit" has been accessed. * * * The @a receiver is the receiving object and the @a member is the slot. **/ static bool singleShot( const QString& path, QObject* receiver, const char* member, OFileNotificationType type = Modify ); /** * Starts to watch for @a type changes to @a path. Set @a sshot to True if you want to be notified only once. * Note that in that case it may be more convenient to use @ref OFileNotification::singleShot() then. **/ int watch( const QString& path, bool sshot = false, OFileNotificationType type = Modify ); /** * Stop watching for file events. **/ void stop(); /** * @returns the notification type as set by @ref start(). **/ OFileNotificationType type() const; /** * @returns the path to the file being watched by this instance. **/ QString path() const; /** + * @returns if the notification is single-shot + */ + bool isSingleShot() const; + /** * @returns if a file is currently being watched. **/ bool isActive() const; /** * @internal */ int startWatching( const QString& path, bool sshot = false, OFileNotificationType type = Modify ); signals: void triggered( const QString&, unsigned int, const QString& ); void accessed( const QString& ); void modified( const QString& ); void attributed( const QString& ); void closed( const QString&, bool ); void opened( const QString& ); void movedTo( const QString&, const QString& ); void movedFrom( const QString&, const QString& ); void deletedSubdir( const QString&, const QString& ); void deletedFile( const QString&, const QString& ); void createdSubdir( const QString&, const QString& ); void createdFile( const QString&, const QString& ); void deleted( const QString& ); void unmounted( const QString& ); @@ -271,48 +276,56 @@ class ODirNotification : public QObject * Starts to watch for @a type changes to @a path. Recurse @a recurse levels down the filesystem tree, * use 0 for no recursion and -1 for unlimited recursion. * Set @a sshot to True if you want to be notified only once. **/ int watch( const QString& path, bool sshot = false, OFileNotificationType type = Modify, int recurse = 0 ); signals: /** * This signal is emitted if an event happens of the specified type happens to the directory being watched. **/ void triggered( const QString&, unsigned int, const QString& ); void accessed( const QString& ); void modified( const QString& ); void attributed( const QString& ); void closed( const QString&, bool ); void opened( const QString& ); void movedTo( const QString&, const QString& ); void movedFrom( const QString&, const QString& ); void deletedSubdir( const QString&, const QString& ); void deletedFile( const QString&, const QString& ); void createdSubdir( const QString&, const QString& ); void createdFile( const QString&, const QString& ); void deleted( const QString& ); void unmounted( const QString& ); + + private slots: + void subdirCreated( const QString&, const QString& ); + + private: + OFileNotification* _topfilenotification; + OFileNotificationType _type; + int _depth; }; /*====================================================================================== * OFileNotificationEvent *======================================================================================*/ class OFileNotificationEvent { public: OFileNotificationEvent( OFileNotification* parent, int wd, unsigned int mask, unsigned int cookie, const QString& name ); ~OFileNotificationEvent(); OFileNotification* parent() const { return _parent; }; int descriptor() const { return _wd; }; unsigned int mask() const { return _mask; }; unsigned int cookie() const { return _cookie; }; QString name() const { return _name; }; void activate() { _parent->activate( this ); }; private: OFileNotification* _parent; int _wd; unsigned int _mask; unsigned int _cookie; QString _name; |