-rw-r--r-- | examples/opiecore/onotifydemo/onotifydemo.cpp | 48 | ||||
-rw-r--r-- | examples/opiecore/onotifydemo/onotifydemo.h | 3 | ||||
-rw-r--r-- | libopie2/opiecore/ofilenotify.cpp | 31 | ||||
-rw-r--r-- | libopie2/opiecore/ofilenotify.h | 10 |
4 files changed, 76 insertions, 16 deletions
diff --git a/examples/opiecore/onotifydemo/onotifydemo.cpp b/examples/opiecore/onotifydemo/onotifydemo.cpp index 0e84d80..2beda2a 100644 --- a/examples/opiecore/onotifydemo/onotifydemo.cpp +++ b/examples/opiecore/onotifydemo/onotifydemo.cpp | |||
@@ -12,4 +12,5 @@ using namespace Opie::Ui; | |||
12 | /* QT */ | 12 | /* QT */ |
13 | #include <qcheckbox.h> | 13 | #include <qcheckbox.h> |
14 | #include <qfileinfo.h> | ||
14 | #include <qvbox.h> | 15 | #include <qvbox.h> |
15 | #include <qhbox.h> | 16 | #include <qhbox.h> |
@@ -90,13 +91,45 @@ DemoApp::DemoApp( int argc, char** argv ) : OApplication( argc, argv, "libopie2 | |||
90 | if ( !filename.isEmpty() ) | 91 | if ( !filename.isEmpty() ) |
91 | { | 92 | { |
93 | bool success = true; | ||
92 | odebug << "Filename = " << filename << oendl; | 94 | odebug << "Filename = " << filename << oendl; |
93 | 95 | ||
94 | int fntype = m; | 96 | int fntype = m; |
95 | QString modifier = QString().sprintf( " = 0x%08x", fntype ); | 97 | QString modifier = QString().sprintf( " = 0x%08x", fntype ); |
96 | new OListViewItem( l, filename, multi ? "MULTI" : "SINGLE", modifier ); | 98 | |
99 | if ( QFileInfo( filename ).isFile() ) | ||
100 | { | ||
97 | if ( !multi ) | 101 | if ( !multi ) |
98 | OFileNotification::singleShot( filename, this, SLOT( trigger() ), (OFileNotificationType) fntype ); | 102 | { |
103 | success = OFileNotification::singleShot( filename, this, SLOT( unnamedTrigger() ), (OFileNotificationType) fntype ); | ||
104 | } | ||
99 | else | 105 | else |
100 | odebug << "not yet implemented..." << oendl; | 106 | { |
107 | OFileNotification* fn = new OFileNotification(); | ||
108 | success = fn->watch( filename, false, (OFileNotificationType) fntype ); | ||
109 | connect( fn, SIGNAL( triggered( const QString& ) ), this, SLOT( namedTrigger( const QString& ) ) ); | ||
110 | } | ||
111 | } | ||
112 | else if ( QFileInfo( filename ).isDir() ) | ||
113 | { | ||
114 | ODirNotification* dn = new ODirNotification(); | ||
115 | success = dn->watch( filename, !multi, (OFileNotificationType) fntype ); | ||
116 | connect( dn, SIGNAL( triggered( const QString& ) ), this, SLOT( namedTrigger( const QString& ) ) ); | ||
117 | } | ||
118 | else | ||
119 | { | ||
120 | odebug << "Huh!? Neither file nor directory..." << oendl; | ||
121 | return; | ||
122 | } | ||
123 | |||
124 | /* if ( !success ) | ||
125 | { | ||
126 | QMessageBox::warning( 0, "Add Trigger", "<p>Couldn't add trigger :(</p>", "&Sorry", 0 ); | ||
127 | return; | ||
128 | } | ||
129 | else | ||
130 | */ { | ||
131 | new OListViewItem( l, filename, multi ? "MULTI" : "SINGLE", modifier ); | ||
132 | } | ||
133 | return; | ||
101 | } | 134 | } |
102 | else | 135 | else |
@@ -125,7 +158,12 @@ DemoApp::DemoApp( int argc, char** argv ) : OApplication( argc, argv, "libopie2 | |||
125 | } | 158 | } |
126 | 159 | ||
127 | void DemoApp::trigger() | 160 | void DemoApp::unnamedTrigger() |
161 | { | ||
162 | owarn << "DemoApp::singleShotStrigger() : F I R E !!!!!" << oendl; | ||
163 | } | ||
164 | |||
165 | void DemoApp::namedTrigger( const QString& path ) | ||
128 | { | 166 | { |
129 | owarn << "FIRE!" << oendl; | 167 | owarn << "DemoApp::named trigger = " << path << " : F I R E !!!!!" << oendl; |
130 | } | 168 | } |
131 | 169 | ||
diff --git a/examples/opiecore/onotifydemo/onotifydemo.h b/examples/opiecore/onotifydemo/onotifydemo.h index c4e3456..f6ac5ea 100644 --- a/examples/opiecore/onotifydemo/onotifydemo.h +++ b/examples/opiecore/onotifydemo/onotifydemo.h | |||
@@ -20,5 +20,6 @@ public slots: | |||
20 | void addMulti(); | 20 | void addMulti(); |
21 | void delTrigger(); | 21 | void delTrigger(); |
22 | void trigger(); | 22 | void unnamedTrigger(); |
23 | void namedTrigger( const QString& name ); | ||
23 | 24 | ||
24 | private: | 25 | private: |
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 | |||
@@ -94,9 +94,4 @@ int OFileNotification::watch( const QString& path, bool sshot, OFileNotification | |||
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 | } |
@@ -105,4 +100,9 @@ int OFileNotification::watch( const QString& path, bool sshot, OFileNotification | |||
105 | int OFileNotification::startWatching( const QString& path, bool sshot, OFileNotificationType type ) | 100 | int 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 ); |
@@ -256,8 +256,23 @@ int ODirNotification::watch( const QString& path, bool sshot, OFileNotificationT | |||
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; | ||
261 | } | 273 | } |
262 | |||
263 | } \ No newline at end of file | 274 | } \ No newline at end of file |
275 | |||
276 | } // namespace Ui | ||
277 | |||
278 | } // namespace Opie | ||
diff --git a/libopie2/opiecore/ofilenotify.h b/libopie2/opiecore/ofilenotify.h index 41ba84d..3eb917e 100644 --- a/libopie2/opiecore/ofilenotify.h +++ b/libopie2/opiecore/ofilenotify.h | |||
@@ -130,5 +130,5 @@ class OFileNotification : public QObject | |||
130 | * { | 130 | * { |
131 | * OApplication a( argc, argv, "File Notification Example" ); | 131 | * OApplication a( argc, argv, "File Notification Example" ); |
132 | * OFileNotification::singleShot( "/tmp/quit", &a, SLOT(quit()), Create ); | 132 | * OFileNotification::singleShot( "/tmp/quit", &a, SLOT(quit()), Access ); |
133 | * ... // create and show your widgets | 133 | * ... // create and show your widgets |
134 | * return a.exec(); | 134 | * return a.exec(); |
@@ -136,5 +136,5 @@ class OFileNotification : public QObject | |||
136 | * </pre> | 136 | * </pre> |
137 | * | 137 | * |
138 | * This sample program automatically terminates when the file "/tmp/quit" has been created. | 138 | * This sample program automatically terminates when the file "/tmp/quit" has been accessed. |
139 | * | 139 | * |
140 | * | 140 | * |
@@ -223,4 +223,10 @@ class ODirNotification : public QObject | |||
223 | **/ | 223 | **/ |
224 | int watch( const QString& path, bool sshot = false, OFileNotificationType type = Modify, int recurse = 0 ); | 224 | int watch( const QString& path, bool sshot = false, OFileNotificationType type = Modify, int recurse = 0 ); |
225 | |||
226 | signals: | ||
227 | /** | ||
228 | * This signal is emitted if an event happens of the specified type happens to the directory being watched. | ||
229 | **/ | ||
230 | void triggered( const QString& name ); | ||
225 | }; | 231 | }; |
226 | 232 | ||