summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2002-06-29 01:11:48 (UTC)
committer llornkcor <llornkcor>2002-06-29 01:11:48 (UTC)
commita5d9aa39940c14c477b9ef2887c8fd303fa6a0e4 (patch) (unidiff)
tree471d9879766c1c39b5039478a23a20948b8d0325
parenta9e336965e1cccb41d3e9f5c31168c85cf4e7d36 (diff)
downloadopie-a5d9aa39940c14c477b9ef2887c8fd303fa6a0e4.zip
opie-a5d9aa39940c14c477b9ef2887c8fd303fa6a0e4.tar.gz
opie-a5d9aa39940c14c477b9ef2887c8fd303fa6a0e4.tar.bz2
fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/vmemo/vmemo.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/core/applets/vmemo/vmemo.cpp b/core/applets/vmemo/vmemo.cpp
index 2d694d2..7965b59 100644
--- a/core/applets/vmemo/vmemo.cpp
+++ b/core/applets/vmemo/vmemo.cpp
@@ -180,256 +180,259 @@ static char * vmemo_xpm[] = {
180 " ", 180 " ",
181 " . + @ # ", 181 " . + @ # ",
182 " $ % & * = - ", 182 " $ % & * = - ",
183 " ; > , ' ) ! ~ ", 183 " ; > , ' ) ! ~ ",
184 " { ] ^ / ( _ : ", 184 " { ] ^ / ( _ : ",
185 " < [ } | 1 2 3 ", 185 " < [ } | 1 2 3 ",
186 " 4 5 6 7 8 9 0 a b c ", 186 " 4 5 6 7 8 9 0 a b c ",
187 " d e f g h i j 3 k l m n ", 187 " d e f g h i j 3 k l m n ",
188 " o p q r s t u v w n ", 188 " o p q r s t u v w n ",
189 " o x y z A B C D E n ", 189 " o x y z A B C D E n ",
190 " F G H I J K L M N O ", 190 " F G H I J K L M N O ",
191 " P Q R S T U V W X ", 191 " P Q R S T U V W X ",
192 " Y Z ` b ...+. ", 192 " Y Z ` b ...+. ",
193 " @.#.$.%.&. ", 193 " @.#.$.%.&. ",
194 " *.B =. ", 194 " *.B =. ",
195 " n n n n n n n n n "}; 195 " n n n n n n n n n "};
196 196
197 197
198VMemo::VMemo( QWidget *parent, const char *_name ) 198VMemo::VMemo( QWidget *parent, const char *_name )
199 : QWidget( parent, _name ) 199 : QWidget( parent, _name )
200{ 200{
201 setFixedHeight( 18 ); 201 setFixedHeight( 18 );
202 setFixedWidth( 14 ); 202 setFixedWidth( 14 );
203 203
204 recording = FALSE; 204 recording = FALSE;
205 205
206 t_timer = new QTimer( this ); 206 t_timer = new QTimer( this );
207 connect( t_timer, SIGNAL( timeout() ), SLOT( timerBreak() ) ); 207 connect( t_timer, SIGNAL( timeout() ), SLOT( timerBreak() ) );
208 208
209 struct utsname name; /* check for embedix kernel running on the zaurus*/ 209 struct utsname name; /* check for embedix kernel running on the zaurus*/
210 if (uname(&name) != -1) { 210 if (uname(&name) != -1) {
211 QString release=name.release; 211 QString release=name.release;
212 212
213 Config vmCfg("Vmemo"); 213 Config vmCfg("Vmemo");
214 vmCfg.setGroup("Defaults"); 214 vmCfg.setGroup("Defaults");
215 int toggleKey = setToggleButton(vmCfg.readNumEntry("toggleKey", -1)); 215 int toggleKey = setToggleButton(vmCfg.readNumEntry("toggleKey", -1));
216 216
217 qDebug("toggleKey %d", toggleKey); 217 qDebug("toggleKey %d", toggleKey);
218 218
219 if(release.find("embedix",0,TRUE) !=-1) 219 if(release.find("embedix",0,TRUE) !=-1)
220 systemZaurus=TRUE; 220 systemZaurus=TRUE;
221 else 221 else
222 systemZaurus=FALSE; 222 systemZaurus=FALSE;
223 223
224 myChannel = new QCopChannel( "QPE/VMemo", this ); 224 myChannel = new QCopChannel( "QPE/VMemo", this );
225 connect( myChannel, SIGNAL(received(const QCString&, const QByteArray&)), 225 connect( myChannel, SIGNAL(received(const QCString&, const QByteArray&)),
226 this, SLOT(receive(const QCString&, const QByteArray&)) ); 226 this, SLOT(receive(const QCString&, const QByteArray&)) );
227 227
228 if( toggleKey != -1 ) { 228 if( toggleKey != -1 ) {
229 // QPEApplication::grabKeyboard(); 229 // QPEApplication::grabKeyboard();
230 QCopEnvelope e("QPE/Desktop", "keyRegister(int key, QString channel, QString message)"); 230 QCopEnvelope e("QPE/Desktop", "keyRegister(int key, QString channel, QString message)");
231 // e << 4096; // Key_Escape 231 // e << 4096; // Key_Escape
232 // e << Key_F5; //4148 232 // e << Key_F5; //4148
233 e << toggleKey; 233 e << toggleKey;
234 e << QString("QPE/VMemo"); 234 e << QString("QPE/VMemo");
235 e << QString("toggleRecord()"); 235 e << QString("toggleRecord()");
236 } 236 }
237 237
238 if( vmCfg.readNumEntry("hideIcon",0) == 1) 238 if( vmCfg.readNumEntry("hideIcon",0) == 1)
239 hide(); 239 hide();
240 } 240 }
241} 241}
242 242
243VMemo::~VMemo() 243VMemo::~VMemo()
244{ 244{
245} 245}
246 246
247void VMemo::receive( const QCString &msg, const QByteArray &data ) 247void VMemo::receive( const QCString &msg, const QByteArray &data )
248{ 248{
249 qDebug("receive"); 249 qDebug("receive");
250 QDataStream stream( data, IO_ReadOnly ); 250 QDataStream stream( data, IO_ReadOnly );
251 if (msg == "toggleRecord()") { 251 if (msg == "toggleRecord()") {
252 if (recording) { 252 if (recording) {
253 fromToggle = TRUE; 253 fromToggle = TRUE;
254 stopRecording(); 254 stopRecording();
255 } else { 255 } else {
256 fromToggle = TRUE; 256 fromToggle = TRUE;
257 startRecording(); 257 startRecording();
258 } 258 }
259 } 259 }
260} 260}
261 261
262void VMemo::paintEvent( QPaintEvent* ) 262void VMemo::paintEvent( QPaintEvent* )
263{ 263{
264 QPainter p(this); 264 QPainter p(this);
265 p.drawPixmap( 0, 1,( const char** ) vmemo_xpm ); 265 p.drawPixmap( 0, 1,( const char** ) vmemo_xpm );
266} 266}
267 267
268void VMemo::mousePressEvent( QMouseEvent * ) 268void VMemo::mousePressEvent( QMouseEvent * )
269{ 269{
270 startRecording(); 270 startRecording();
271} 271}
272 272
273void VMemo::mouseReleaseEvent( QMouseEvent * ) 273void VMemo::mouseReleaseEvent( QMouseEvent * )
274{ 274{
275 stopRecording(); 275 stopRecording();
276} 276}
277 277
278bool VMemo::startRecording() { 278bool VMemo::startRecording() {
279 279
280 if ( recording) 280 if ( recording)
281 return FALSE; 281 return FALSE;
282 282
283 Config config( "Vmemo" ); 283 Config config( "Vmemo" );
284 config.setGroup( "System" ); 284 config.setGroup( "System" );
285 285
286 useAlerts = config.readBoolEntry("Alert"); 286 useAlerts = config.readBoolEntry("Alert");
287 if(useAlerts) { 287 if(useAlerts) {
288 288
289 msgLabel = new QLabel( 0, "alertLabel" ); 289 msgLabel = new QLabel( 0, "alertLabel" );
290 msgLabel->setText("<B><P><font size=+2>VMemo-Recording</font></B>"); 290 msgLabel->setText("<B><P><font size=+2>VMemo-Recording</font></B>");
291 msgLabel->show(); 291 msgLabel->show();
292 } 292 }
293 293
294 // if(useAlerts) 294 // if(useAlerts)
295 // QMessageBox::message("VMemo","Really Record?");//) ==1) 295 // QMessageBox::message("VMemo","Really Record?");//) ==1)
296 // return; 296 // return;
297 // } else { 297 // } else {
298 // if (!systemZaurus ) 298 // if (!systemZaurus )
299 // QSound::play(Resource::findSound("vmemob")); 299 // QSound::play(Resource::findSound("vmemob"));
300 // } 300 // }
301 qDebug("Start recording engines"); 301 qDebug("Start recording engines");
302 recording = TRUE; 302 recording = TRUE;
303 303
304 if (openDSP() == -1) { 304 if (openDSP() == -1) {
305 // QMessageBox::critical(0, "vmemo", "Could not open dsp device.\n"+errorMsg, "Abort"); 305 // QMessageBox::critical(0, "vmemo", "Could not open dsp device.\n"+errorMsg, "Abort");
306 // delete msgLabel; 306 // delete msgLabel;
307 recording = FALSE; 307 recording = FALSE;
308 msgLabel=0;
309 delete msgLabel;
310
308 return FALSE; 311 return FALSE;
309 } 312 }
310 313
311 config.setGroup("Defaults"); 314 config.setGroup("Defaults");
312 315
313 QDateTime dt = QDateTime::currentDateTime(); 316 QDateTime dt = QDateTime::currentDateTime();
314 317
315 QString fName; 318 QString fName;
316 config.setGroup( "System" ); 319 config.setGroup( "System" );
317 fName = QPEApplication::documentDir() ; 320 fName = QPEApplication::documentDir() ;
318 fileName = config.readEntry("RecLocation", fName); 321 fileName = config.readEntry("RecLocation", fName);
319 322
320 int s; 323 int s;
321 s=fileName.find(':'); 324 s=fileName.find(':');
322 if(s) 325 if(s)
323 fileName=fileName.right(fileName.length()-s-2); 326 fileName=fileName.right(fileName.length()-s-2);
324 qDebug("pathname will be "+fileName); 327 qDebug("pathname will be "+fileName);
325 328
326 if( fileName.left(1).find('/') == -1) 329 if( fileName.left(1).find('/') == -1)
327 fileName="/"+fileName; 330 fileName="/"+fileName;
328 if( fileName.right(1).find('/') == -1) 331 if( fileName.right(1).find('/') == -1)
329 fileName+="/"; 332 fileName+="/";
330 fName = "vm_"+ dt.toString()+ ".wav"; 333 fName = "vm_"+ dt.toString()+ ".wav";
331 334
332 fileName+=fName; 335 fileName+=fName;
333 qDebug("filename is "+fileName); 336 qDebug("filename is "+fileName);
334 // No spaces in the filename 337 // No spaces in the filename
335 fileName.replace(QRegExp("'"),""); 338 fileName.replace(QRegExp("'"),"");
336 fileName.replace(QRegExp(" "),"_"); 339 fileName.replace(QRegExp(" "),"_");
337 fileName.replace(QRegExp(":"),"."); 340 fileName.replace(QRegExp(":"),".");
338 fileName.replace(QRegExp(","),""); 341 fileName.replace(QRegExp(","),"");
339 342
340 if(openWAV(fileName.latin1()) == -1) { 343 if(openWAV(fileName.latin1()) == -1) {
341 // QString err("Could not open the output file\n"); 344 // QString err("Could not open the output file\n");
342 // err += fileName; 345 // err += fileName;
343 // QMessageBox::critical(0, "vmemo", err, "Abort"); 346 // QMessageBox::critical(0, "vmemo", err, "Abort");
344 close(dsp); 347 close(dsp);
345 return FALSE; 348 return FALSE;
346 } 349 }
347 350
348 QArray<int> cats(1); 351 QArray<int> cats(1);
349 cats[0] = config.readNumEntry("Category", 0); 352 cats[0] = config.readNumEntry("Category", 0);
350 353
351 QString dlName("vm_"); 354 QString dlName("vm_");
352 dlName += dt.toString(); 355 dlName += dt.toString();
353 DocLnk l; 356 DocLnk l;
354 l.setFile(fileName); 357 l.setFile(fileName);
355 l.setName(dlName); 358 l.setName(dlName);
356 l.setType("audio/x-wav"); 359 l.setType("audio/x-wav");
357 l.setCategories(cats); 360 l.setCategories(cats);
358 l.writeLink(); 361 l.writeLink();
359 362
360 363
361 record(); 364 record();
362 // delete msgLabel; 365 // delete msgLabel;
363 return TRUE; 366 return TRUE;
364} 367}
365 368
366void VMemo::stopRecording() { 369void VMemo::stopRecording() {
367show(); 370show();
368 qDebug("Stopped recording"); 371 qDebug("Stopped recording");
369 recording = FALSE; 372 recording = FALSE;
370 if(useAlerts) 373 if(useAlerts)
371 if( msgLabel) delete msgLabel; 374 if( msgLabel) delete msgLabel;
372 t_timer->stop(); 375 t_timer->stop();
373 Config cfg("Vmemo"); 376 Config cfg("Vmemo");
374 cfg.setGroup("Defaults"); 377 cfg.setGroup("Defaults");
375 if( cfg.readNumEntry("hideIcon",0) == 1 ) 378 if( cfg.readNumEntry("hideIcon",0) == 1 )
376 hide(); 379 hide();
377} 380}
378 381
379int VMemo::openDSP() 382int VMemo::openDSP()
380{ 383{
381 Config cfg("Vmemo"); 384 Config cfg("Vmemo");
382 cfg.setGroup("Record"); 385 cfg.setGroup("Record");
383 386
384 speed = cfg.readNumEntry("SampleRate", 22050); 387 speed = cfg.readNumEntry("SampleRate", 22050);
385 channels = cfg.readNumEntry("Stereo", 1) ? 2 : 1; // 1 = stereo(2), 0 = mono(1) 388 channels = cfg.readNumEntry("Stereo", 1) ? 2 : 1; // 1 = stereo(2), 0 = mono(1)
386 if (cfg.readNumEntry("SixteenBit", 1)==1) { 389 if (cfg.readNumEntry("SixteenBit", 1)==1) {
387 format = AFMT_S16_LE; 390 format = AFMT_S16_LE;
388 resolution = 16; 391 resolution = 16;
389 } else { 392 } else {
390 format = AFMT_U8; 393 format = AFMT_U8;
391 resolution = 8; 394 resolution = 8;
392 } 395 }
393 396
394 qDebug("samplerate: %d, channels %d, resolution %d", speed, channels, resolution); 397 qDebug("samplerate: %d, channels %d, resolution %d", speed, channels, resolution);
395 398
396 if(systemZaurus) { 399 if(systemZaurus) {
397 dsp = open("/dev/dsp1", O_RDONLY); //Zaurus needs /dev/dsp1 400 dsp = open("/dev/dsp1", O_RDONLY); //Zaurus needs /dev/dsp1
398 channels=1; //zaurus has one input channel 401 channels=1; //zaurus has one input channel
399 } else { 402 } else {
400 dsp = open("/dev/dsp", O_RDONLY); 403 dsp = open("/dev/dsp", O_RDONLY);
401 } 404 }
402 405
403 if(dsp == -1) { 406 if(dsp == -1) {
404 perror("open(\"/dev/dsp\")"); 407 perror("open(\"/dev/dsp\")");
405 errorMsg="open(\"/dev/dsp\")\n "+(QString)strerror(errno); 408 errorMsg="open(\"/dev/dsp\")\n "+(QString)strerror(errno);
406 QMessageBox::critical(0, "vmemo", errorMsg, "Abort"); 409 QMessageBox::critical(0, "vmemo", errorMsg, "Abort");
407 return -1; 410 return -1;
408 } 411 }
409 412
410 if(ioctl(dsp, SNDCTL_DSP_SETFMT , &format)==-1) { 413 if(ioctl(dsp, SNDCTL_DSP_SETFMT , &format)==-1) {
411 perror("ioctl(\"SNDCTL_DSP_SETFMT\")"); 414 perror("ioctl(\"SNDCTL_DSP_SETFMT\")");
412 return -1; 415 return -1;
413 } 416 }
414 if(ioctl(dsp, SNDCTL_DSP_CHANNELS , &channels)==-1) { 417 if(ioctl(dsp, SNDCTL_DSP_CHANNELS , &channels)==-1) {
415 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")"); 418 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")");
416 return -1; 419 return -1;
417 } 420 }
418 if(ioctl(dsp, SNDCTL_DSP_SPEED , &speed)==-1) { 421 if(ioctl(dsp, SNDCTL_DSP_SPEED , &speed)==-1) {
419 perror("ioctl(\"SNDCTL_DSP_SPEED\")"); 422 perror("ioctl(\"SNDCTL_DSP_SPEED\")");
420 return -1; 423 return -1;
421 } 424 }
422 if(ioctl(dsp, SOUND_PCM_READ_RATE , &rate)==-1) { 425 if(ioctl(dsp, SOUND_PCM_READ_RATE , &rate)==-1) {
423 perror("ioctl(\"SOUND_PCM_READ_RATE\")"); 426 perror("ioctl(\"SOUND_PCM_READ_RATE\")");
424 return -1; 427 return -1;
425 } 428 }
426 429
427 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; //mute 430 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << FALSE; //mute
428 431
429 return 1; 432 return 1;
430} 433}
431 434
432int VMemo::openWAV(const char *filename) 435int VMemo::openWAV(const char *filename)
433{ 436{
434 track.setName(filename); 437 track.setName(filename);
435 if(!track.open(IO_WriteOnly|IO_Truncate|IO_Raw)) { 438 if(!track.open(IO_WriteOnly|IO_Truncate|IO_Raw)) {