summaryrefslogtreecommitdiff
path: root/core/applets/vmemo/vmemo.cpp
Unidiff
Diffstat (limited to 'core/applets/vmemo/vmemo.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/vmemo/vmemo.cpp78
1 files changed, 68 insertions, 10 deletions
diff --git a/core/applets/vmemo/vmemo.cpp b/core/applets/vmemo/vmemo.cpp
index f5d2b20..e327098 100644
--- a/core/applets/vmemo/vmemo.cpp
+++ b/core/applets/vmemo/vmemo.cpp
@@ -205,10 +205,12 @@ VMemo::VMemo( QWidget *parent, const char *_name )
205 struct utsname name; /* check for embedix kernel running on the zaurus*/ 205 struct utsname name; /* check for embedix kernel running on the zaurus*/
206 if (uname(&name) != -1) { 206 if (uname(&name) != -1) {
207 QString release=name.release; 207 QString release=name.release;
208 Config vmCfg("VMemo"); 208 Config vmCfg("Vmemo");
209 vmCfg.setGroup("Defaults"); 209 vmCfg.setGroup("Defaults");
210 int toggleKey = vmCfg.readNumEntry("toggleKey", -1); 210 int toggleKey = setToggleButton(vmCfg.readNumEntry("toggleKey", -1));
211 211
212 qDebug("toggleKey %d", toggleKey);
213
212 if(release.find("embedix",0,TRUE) !=-1) 214 if(release.find("embedix",0,TRUE) !=-1)
213 systemZaurus=TRUE; 215 systemZaurus=TRUE;
214 else 216 else
@@ -269,9 +271,17 @@ bool VMemo::startRecording() {
269 271
270 if ( recording) 272 if ( recording)
271 return FALSE;; 273 return FALSE;;
272 Config config( "Vmemo" ); 274
275 Config config( "Vmemo" );
273 config.setGroup( "System" ); 276 config.setGroup( "System" );
277
274 useAlerts = config.readBoolEntry("Alert"); 278 useAlerts = config.readBoolEntry("Alert");
279 if(useAlerts) {
280
281 msgLabel = new QLabel( 0, "alertLabel" );
282 msgLabel->setText("<B><P><font size=+2>VMemo-Recording</font></B>");
283 msgLabel->show();
284 }
275 285
276// if(useAlerts) 286// if(useAlerts)
277// QMessageBox::message("VMemo","Really Record?");//) ==1) 287// QMessageBox::message("VMemo","Really Record?");//) ==1)
@@ -283,7 +293,7 @@ bool VMemo::startRecording() {
283 qDebug("Start recording"); 293 qDebug("Start recording");
284 recording = TRUE; 294 recording = TRUE;
285 if (openDSP() == -1) { 295 if (openDSP() == -1) {
286 QMessageBox::critical(0, "VMemo", "Could not open dsp device.\n"+errorMsg, "Abort"); 296 QMessageBox::critical(0, "vmemo", "Could not open dsp device.\n"+errorMsg, "Abort");
287 recording = FALSE; 297 recording = FALSE;
288 return FALSE; 298 return FALSE;
289 } 299 }
@@ -319,7 +329,7 @@ bool VMemo::startRecording() {
319 if(openWAV(fileName.latin1()) == -1) { 329 if(openWAV(fileName.latin1()) == -1) {
320 QString err("Could not open the output file\n"); 330 QString err("Could not open the output file\n");
321 err += fileName; 331 err += fileName;
322 QMessageBox::critical(0, "VMemo", err, "Abort"); 332 QMessageBox::critical(0, "vmemo", err, "Abort");
323 close(dsp); 333 close(dsp);
324 return FALSE; 334 return FALSE;
325 } 335 }
@@ -335,6 +345,7 @@ bool VMemo::startRecording() {
335 l.setType("audio/x-wav"); 345 l.setType("audio/x-wav");
336 l.setCategories(cats); 346 l.setCategories(cats);
337 l.writeLink(); 347 l.writeLink();
348
338 349
339 record(); 350 record();
340 return TRUE; 351 return TRUE;
@@ -342,6 +353,8 @@ bool VMemo::startRecording() {
342 353
343void VMemo::stopRecording() { 354void VMemo::stopRecording() {
344 recording = FALSE; 355 recording = FALSE;
356 if(useAlerts)
357 if( msgLabel) delete msgLabel;
345} 358}
346 359
347int VMemo::openDSP() 360int VMemo::openDSP()
@@ -429,30 +442,40 @@ int VMemo::openWAV(const char *filename)
429void VMemo::record(void) 442void VMemo::record(void)
430{ 443{
431 int length=0, result, value; 444 int length=0, result, value;
432 qDebug("Recording"); 445 QString msg;
446 msg.sprintf("Recording format %d", format);
447 qDebug(msg);
433 448
434 if(systemZaurus) { 449 if(systemZaurus) {
435 signed short sound[512], monoBuffer[512]; 450 signed short sound[512], monoBuffer[512];
436 if(format==AFMT_S16_LE) { 451 if(format==AFMT_S16_LE) {
452
437 while(recording) { 453 while(recording) {
454
438 result = read(dsp, sound, 512); // 8192 455 result = read(dsp, sound, 512); // 8192
439 int j=0; 456 int j=0;
457
440 if(systemZaurus) { 458 if(systemZaurus) {
441 for (int i = 0; i < result; i++) { //since Z is mono do normally 459 for (int i = 0; i < result; i++) { //since Z is mono do normally
442 monoBuffer[i] = sound[i]; 460 monoBuffer[i] = sound[i];
443 } 461 }
462
444 length+=write(wav, monoBuffer, result); 463 length+=write(wav, monoBuffer, result);
464
445 } else { //ipaq /stereo inputs 465 } else { //ipaq /stereo inputs
466
446 for (int i = 0; i < result; i+=2) { 467 for (int i = 0; i < result; i+=2) {
447 monoBuffer[j] = (sound[i]+sound[i+1])/2; 468 monoBuffer[j] = (sound[i]+sound[i+1])/2;
448 j++; 469 j++;
449 } 470 }
471
450 length+=write(wav, monoBuffer, result/2); 472 length+=write(wav, monoBuffer, result/2);
451 } 473 }
474 qApp->processEvents();
452// printf("%d\r",length); 475// printf("%d\r",length);
453// fflush(stdout); 476// fflush(stdout);
454 } 477 }
455 } else { //AFMT_U8 478 } else { //AFMT_U8
456// 8bit unsigned 479// 8bit unsigned
457 unsigned short sound[512], monoBuffer[512]; 480 unsigned short sound[512], monoBuffer[512];
458 while(recording) { 481 while(recording) {
@@ -507,8 +530,43 @@ void VMemo::record(void)
507 perror("ioctl(\"SNDCTL_DSP_RESET\")"); 530 perror("ioctl(\"SNDCTL_DSP_RESET\")");
508 ::close(dsp); 531 ::close(dsp);
509 fileName = fileName.left(fileName.length()-4); 532 fileName = fileName.left(fileName.length()-4);
510 if(useAlerts) 533// if(useAlerts)
511 QMessageBox::message("Vmemo"," Done recording\n"+ fileName); 534// QMessageBox::message("Vmemo"," Done1 recording\n"+ fileName);
512 qDebug("done recording "+fileName); 535 qDebug("done recording "+fileName);
513 QSound::play(Resource::findSound("vmemoe")); 536 QSound::play(Resource::findSound("vmemoe"));
514} 537}
538
539int VMemo::setToggleButton(int tog) {
540
541 for( int i=0; i < 10;i++) {
542 switch (tog) {
543 case 0:
544 return -1;
545 break;
546 case 1:
547 return 0;
548 break;
549 case 2:
550 return Key_Escape;
551 break;
552 case 3:
553 return Key_Space;
554 break;
555 case 4:
556 return Key_F12;
557 break;
558 case 5:
559 return Key_F9;
560 break;
561 case 6:
562 return Key_F10;
563 break;
564 case 7:
565 return Key_F11;
566 break;
567 case 8:
568 return Key_F13;
569 break;
570 };
571 }
572}