Diffstat (limited to 'examples/opiecore/onotifydemo/onotifydemo.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | examples/opiecore/onotifydemo/onotifydemo.cpp | 48 |
1 files changed, 43 insertions, 5 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 | |||
@@ -1,37 +1,38 @@ | |||
1 | #include "onotifydemo.h" | 1 | #include "onotifydemo.h" |
2 | 2 | ||
3 | /* OPIE */ | 3 | /* OPIE */ |
4 | #include <opie2/odebug.h> | 4 | #include <opie2/odebug.h> |
5 | #include <opie2/oapplication.h> | 5 | #include <opie2/oapplication.h> |
6 | #include <opie2/ofiledialog.h> | 6 | #include <opie2/ofiledialog.h> |
7 | #include <opie2/olistview.h> | 7 | #include <opie2/olistview.h> |
8 | #include <opie2/ofilenotify.h> | 8 | #include <opie2/ofilenotify.h> |
9 | using namespace Opie::Core; | 9 | using namespace Opie::Core; |
10 | using namespace Opie::Ui; | 10 | using namespace Opie::Ui; |
11 | 11 | ||
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> |
16 | #include <qhbuttongroup.h> | 17 | #include <qhbuttongroup.h> |
17 | #include <qvbuttongroup.h> | 18 | #include <qvbuttongroup.h> |
18 | #include <qmessagebox.h> | 19 | #include <qmessagebox.h> |
19 | #include <qpushbutton.h> | 20 | #include <qpushbutton.h> |
20 | 21 | ||
21 | DemoApp::DemoApp( int argc, char** argv ) : OApplication( argc, argv, "libopie2 notify demo" ) | 22 | DemoApp::DemoApp( int argc, char** argv ) : OApplication( argc, argv, "libopie2 notify demo" ) |
22 | { | 23 | { |
23 | 24 | ||
24 | QVBox* vbox = new QVBox(); | 25 | QVBox* vbox = new QVBox(); |
25 | setMainWidget( vbox ); | 26 | setMainWidget( vbox ); |
26 | 27 | ||
27 | l = new OListView( vbox ); | 28 | l = new OListView( vbox ); |
28 | l->addColumn( "Notification Path" ); | 29 | l->addColumn( "Notification Path" ); |
29 | l->addColumn( "Trigger Type" ); | 30 | l->addColumn( "Trigger Type" ); |
30 | l->addColumn( "Trigger Mask" ); | 31 | l->addColumn( "Trigger Mask" ); |
31 | l->setColumnAlignment( 1, AlignCenter ); | 32 | l->setColumnAlignment( 1, AlignCenter ); |
32 | l->setColumnAlignment( 2, AlignCenter ); | 33 | l->setColumnAlignment( 2, AlignCenter ); |
33 | 34 | ||
34 | QHBox* hbox = new QHBox( vbox ); | 35 | QHBox* hbox = new QHBox( vbox ); |
35 | g2 = new QVButtonGroup( "Specify Trigger Type", hbox ); | 36 | g2 = new QVButtonGroup( "Specify Trigger Type", hbox ); |
36 | QCheckBox* c1 = new QCheckBox( "Access", g2 ); | 37 | QCheckBox* c1 = new QCheckBox( "Access", g2 ); |
37 | QCheckBox* c2 = new QCheckBox( "Modify", g2 ); | 38 | QCheckBox* c2 = new QCheckBox( "Modify", g2 ); |
@@ -68,73 +69,110 @@ DemoApp::DemoApp( int argc, char** argv ) : OApplication( argc, argv, "libopie2 | |||
68 | g1->insert( minus, 2 ); | 69 | g1->insert( minus, 2 ); |
69 | connect( plus1, SIGNAL( clicked() ), this, SLOT( addSingle() ) ); | 70 | connect( plus1, SIGNAL( clicked() ), this, SLOT( addSingle() ) ); |
70 | connect( plus2, SIGNAL( clicked() ), this, SLOT( addMulti() ) ); | 71 | connect( plus2, SIGNAL( clicked() ), this, SLOT( addMulti() ) ); |
71 | connect( minus, SIGNAL( clicked() ), this, SLOT( delTrigger() ) ); | 72 | connect( minus, SIGNAL( clicked() ), this, SLOT( delTrigger() ) ); |
72 | 73 | ||
73 | g1->show(); | 74 | g1->show(); |
74 | g2->show(); | 75 | g2->show(); |
75 | l->show(); | 76 | l->show(); |
76 | hbox->show(); | 77 | hbox->show(); |
77 | vbox->show(); | 78 | vbox->show(); |
78 | showMainWidget( vbox ); | 79 | showMainWidget( vbox ); |
79 | } | 80 | } |
80 | 81 | ||
81 | void DemoApp::addTrigger( bool multi ) | 82 | void DemoApp::addTrigger( bool multi ) |
82 | { | 83 | { |
83 | if ( !m ) | 84 | if ( !m ) |
84 | { | 85 | { |
85 | QMessageBox::warning( 0, "Add Trigger", "<p>Can't add trigger without at least one selected trigger type</p>", "&Sorry", 0 ); | 86 | QMessageBox::warning( 0, "Add Trigger", "<p>Can't add trigger without at least one selected trigger type</p>", "&Sorry", 0 ); |
86 | return; | 87 | return; |
87 | } | 88 | } |
88 | 89 | ||
89 | QString filename = OFileDialog::getOpenFileName( OFileSelector::ExtendedAll ); | 90 | QString filename = OFileDialog::getOpenFileName( OFileSelector::ExtendedAll ); |
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 |
103 | { | 136 | { |
104 | odebug << "cancelled." << oendl; | 137 | odebug << "cancelled." << oendl; |
105 | } | 138 | } |
106 | } | 139 | } |
107 | 140 | ||
108 | void DemoApp::modifierClicked( int modifier ) { m = static_cast<OFileNotificationType>( (int)m ^ int(modifier) ); }; | 141 | void DemoApp::modifierClicked( int modifier ) { m = static_cast<OFileNotificationType>( (int)m ^ int(modifier) ); }; |
109 | void DemoApp::addSingle() { addTrigger(); }; | 142 | void DemoApp::addSingle() { addTrigger(); }; |
110 | void DemoApp::addMulti() { addTrigger( true ); }; | 143 | void DemoApp::addMulti() { addTrigger( true ); }; |
111 | 144 | ||
112 | void DemoApp::delTrigger() | 145 | void DemoApp::delTrigger() |
113 | { | 146 | { |
114 | QListViewItem* item = l->selectedItem(); | 147 | QListViewItem* item = l->selectedItem(); |
115 | if ( !item ) | 148 | if ( !item ) |
116 | { | 149 | { |
117 | QMessageBox::warning( 0, "Del Trigger", "<p>No trigger selected!</p>", "&Sorry", 0 ); | 150 | QMessageBox::warning( 0, "Del Trigger", "<p>No trigger selected!</p>", "&Sorry", 0 ); |
118 | return; | 151 | return; |
119 | } | 152 | } |
120 | else | 153 | else |
121 | { | 154 | { |
122 | QString filename( item->text( 0 ) ); | 155 | QString filename( item->text( 0 ) ); |
123 | odebug << "Filename = " << filename << oendl; | 156 | odebug << "Filename = " << filename << oendl; |
124 | } | 157 | } |
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 | ||
132 | int main( int argc, char** argv ) | 170 | int main( int argc, char** argv ) |
133 | { | 171 | { |
134 | DemoApp* app = new DemoApp( argc, argv ); | 172 | DemoApp* app = new DemoApp( argc, argv ); |
135 | app->exec(); | 173 | app->exec(); |
136 | 174 | ||
137 | return 0; | 175 | return 0; |
138 | 176 | ||
139 | } | 177 | } |
140 | 178 | ||