summaryrefslogtreecommitdiff
authorclem <clem>2004-10-06 23:52:25 (UTC)
committer clem <clem>2004-10-06 23:52:25 (UTC)
commit5137abdac1d6990c038170a2b3533ae85eecb7f1 (patch) (side-by-side diff)
tree67b299caf70f5d7436ff05f012c98abcb665726c
parent14c237a2d5c60314935d51d9beea0527e337a9d8 (diff)
downloadopie-5137abdac1d6990c038170a2b3533ae85eecb7f1.zip
opie-5137abdac1d6990c038170a2b3533ae85eecb7f1.tar.gz
opie-5137abdac1d6990c038170a2b3533ae85eecb7f1.tar.bz2
Closed a <pre> section in a Doxygen-enabled comment
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/ofilenotify.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/libopie2/opiecore/ofilenotify.h b/libopie2/opiecore/ofilenotify.h
index bd2f9d0..d820f7c 100644
--- a/libopie2/opiecore/ofilenotify.h
+++ b/libopie2/opiecore/ofilenotify.h
@@ -1,189 +1,190 @@
/*
                This file is part of the Opie Project
=. Copyright (C) 2004 Michael 'Mickey' Lauer <mickey@Vanille.de>
.=l. Copyright (C) The Opie Team <opie-devel@handhelds.org>
         .>+-=
_;:,     .>    :=|. This program is free software; you can
.> <`_,   >  .   <= redistribute it and/or modify it under
:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
.="- .-=="i,     .._ License as published by the Free Software
- .   .-<_>     .<> Foundation; either version 2 of the License,
   ._= =}       : or (at your option) any later version.
  .%`+i>       _;_.
  .i_,=:_.      -<s. This program is distributed in the hope that
   +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
  : ..    .:,     . . . without even the implied warranty of
  =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
_.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
..}^=.=       =       ; Library General Public License for more
++=   -.     .`     .: details.
:     =  ...= . :.=-
-.   .:....=;==+<; You should have received a copy of the GNU
-_. . .   )=.  = Library General Public License along with
  --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef OFILENOTIFY_H
#define OFILENOTIFY_H
#if defined (__GNUC__) && (__GNUC__ < 3)
#define _GNU_SOURCE
#endif
/* QT */
#include <qobject.h>
#include <qsignal.h>
#include <qstring.h>
/* STD */
#include <signal.h>
#include <fcntl.h>
namespace Opie {
namespace Core {
/*======================================================================================
* OFileNotificationType
*======================================================================================*/
/**
* @brief An enumerate for the different types of file notifications
*
* 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>Create = The file was created in the directory
* <li>Delete = The file was unlinked from directory
* <li>Rename = The file was renamed
* <li>Attrib = The file had its attributes changed (chmod,chown,chgrp)
* </ul>
*
**/
enum OFileNotificationType { Single = 0x0000000,
Multi = DN_MULTISHOT,
Access = DN_ACCESS,
Modify = DN_MODIFY,
Create = DN_CREATE,
Delete = DN_DELETE,
Rename = DN_RENAME,
Attrib = DN_ATTRIB };
/*======================================================================================
* OFileNotification
*======================================================================================*/
/**
* @brief Represents a file notification
*
* This class allows to watch for events happening to files.
* It uses the dnotify kernel interface which is a very efficient signalling interface.
*
* @see <file:///usr/src/linux/Documentation/dnotify.txt>
*
* @author Michael 'Mickey' Lauer <mickey@vanille.de>
*
**/
class OFileNotification : public QObject
{
Q_OBJECT
public:
OFileNotification( QObject* parent = 0, const char* name = 0 );
~OFileNotification();
/**
* This static function calls a slot when an event with @a type happens to file @a path.
*
* It is very convenient to use this function because you do not need to
* bother with a timerEvent or to create a local QTimer object.
*
* Example:
* <pre>
*
* #include <opie2/oapplication.h>
* #include <opie2/onitify.h>
* using namespace Opie::Core;
*
* int main( int argc, char **argv )
* {
* OApplication a( argc, argv, "File Notification Example" );
* OFileNotification::singleShot( "/tmp/quit", &a, SLOT(quit()), Create );
* ... // create and show your widgets
* return a.exec();
* }
+ * </pre>
*
* This sample program automatically terminates when the file "/tmp/quite" has been created.
*
*
* The @a receiver is the receiving object and the @a member is the slot.
**/
static void 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 start( 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 the UNIX file descriptor for the file being watched.
**/
int fileno() const;
/**
* @returns if a file is currently being watched.
**/
bool isActive() const;
signals:
/**
* This signal is emitted if an event happens of the specified type happens to the file being watched.
**/
void triggered();
protected:
bool activate();
virtual bool hasChanged();
static bool registerSignalHandler();
static void unregisterSignalHandler();
static void __signalHandler( int sig, siginfo_t *si, void *data );
private:
QString _path;
OFileNotificationType _type;
QSignal _signal;
int _fd;
bool _active;
struct stat _stat;
};
#if 0
class ODirectoryNotification : public OFileNotification
{
public:
virtual bool hasChanged() { return true; };
};
#endif
}
}
#endif