summaryrefslogtreecommitdiff
path: root/libopie2/opiecore/ofilenotify.cpp
Unidiff
Diffstat (limited to 'libopie2/opiecore/ofilenotify.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/ofilenotify.cpp31
1 files changed, 23 insertions, 8 deletions
diff --git a/libopie2/opiecore/ofilenotify.cpp b/libopie2/opiecore/ofilenotify.cpp
index efd041a..11d4f87 100644
--- a/libopie2/opiecore/ofilenotify.cpp
+++ b/libopie2/opiecore/ofilenotify.cpp
@@ -90,23 +90,23 @@ int OFileNotification::watch( const QString& path, bool sshot, OFileNotification
90 if ( !S_ISREG( s.st_mode ) ) 90 if ( !S_ISREG( s.st_mode ) )
91 { 91 {
92 qWarning( "OFileNotification::watch(): Can't watch '%s': %s.", (const char*) path, "not a regular file" ); 92 qWarning( "OFileNotification::watch(): Can't watch '%s': %s.", (const char*) path, "not a regular file" );
93 return -1; 93 return -1;
94 } 94 }
95 95
96 if ( notification_list.isEmpty() )
97 {
98 OFileNotification::registerEventHandler();
99 }
100
101 return startWatching( path, sshot, type ); 96 return startWatching( path, sshot, type );
102} 97}
103 98
104 99
105int OFileNotification::startWatching( const QString& path, bool sshot, OFileNotificationType type ) 100int OFileNotification::startWatching( const QString& path, bool sshot, OFileNotificationType type )
106{ 101{
102 if ( notification_list.isEmpty() )
103 {
104 OFileNotification::registerEventHandler();
105 }
106
107 struct inotify_watch_request iwr; 107 struct inotify_watch_request iwr;
108 ::memset( &iwr, 0, sizeof iwr ); 108 ::memset( &iwr, 0, sizeof iwr );
109 iwr.name = const_cast<char*>( (const char*) path ); 109 iwr.name = const_cast<char*>( (const char*) path );
110 iwr.mask = type; 110 iwr.mask = type;
111 111
112 _wd = ::ioctl( OFileNotification::_fd, INOTIFY_WATCH, &iwr ); 112 _wd = ::ioctl( OFileNotification::_fd, INOTIFY_WATCH, &iwr );
@@ -252,12 +252,27 @@ ODirNotification::~ODirNotification()
252} 252}
253 253
254 254
255int ODirNotification::watch( const QString& path, bool sshot, OFileNotificationType type, int recurse ) 255int ODirNotification::watch( const QString& path, bool sshot, OFileNotificationType type, int recurse )
256{ 256{
257 qDebug( "ODirNotification::watch( %s, %d, 0x%08x, %d )", (const char*) path, sshot, type, recurse ); 257 qDebug( "ODirNotification::watch( %s, %d, 0x%08x, %d )", (const char*) path, sshot, type, recurse );
258 return 0;
259}
260 258
259 if ( recurse == 0 )
260 {
261 OFileNotification* fn = new OFileNotification( this, "ODirNotification delegate" );
262 int result = fn->startWatching( path, sshot, type );
263 if ( result != -1 )
264 {
265 connect( fn, SIGNAL( triggered( const QString& ) ), this, SIGNAL( triggered( const QString& ) ) );
266 return result;
267 }
268 }
269 else
270 {
271 qDebug( "ODirNotification::watch(), recursion not yet implemented... :)" );
272 return -1;
273 }
261} 274}
262 275
263} \ No newline at end of file 276} // namespace Ui
277
278} // namespace Opie