summaryrefslogtreecommitdiff
authorllornkcor <llornkcor>2005-03-12 02:23:02 (UTC)
committer llornkcor <llornkcor>2005-03-12 02:23:02 (UTC)
commitaa7039012cc79c02304e36db16e6f5ff82e19867 (patch) (unidiff)
tree7e987a42504cfa7fc030bdef813147d61604849d
parent9815fc1551763226f974f8ea8eab6d0b031e0be3 (diff)
downloadopie-aa7039012cc79c02304e36db16e6f5ff82e19867.zip
opie-aa7039012cc79c02304e36db16e6f5ff82e19867.tar.gz
opie-aa7039012cc79c02304e36db16e6f5ff82e19867.tar.bz2
remove ouput
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opierec/qtrec.cpp35
-rw-r--r--noncore/multimedia/opierec/qtrec.h13
-rw-r--r--noncore/multimedia/opierec/wavFile.cpp36
3 files changed, 40 insertions, 44 deletions
diff --git a/noncore/multimedia/opierec/qtrec.cpp b/noncore/multimedia/opierec/qtrec.cpp
index 9b761aa..9d3d5cf 100644
--- a/noncore/multimedia/opierec/qtrec.cpp
+++ b/noncore/multimedia/opierec/qtrec.cpp
@@ -1,2066 +1,2053 @@
1/**************************************************************************** 1/****************************************************************************
2 // qtrec.cpp 2 // qtrec.cpp
3 Created: Thu Jan 17 11:19:58 2002 3 Created: Thu Jan 17 11:19:58 2002
4 copyright 2002 by L.J. Potter <ljp@llornkcor.com> 4 copyright 2002 by L.J. Potter <ljp@llornkcor.com>
5****************************************************************************/ 5****************************************************************************/
6//#define DEV_VERSION 6//#define DEV_VERSION
7 7
8#include "pixmaps.h" 8#include "pixmaps.h"
9#include "qtrec.h" 9#include "qtrec.h"
10#include "waveform.h" 10#include "waveform.h"
11extern "C" { 11extern "C" {
12#include "adpcm.h" 12#include "adpcm.h"
13} 13}
14 14
15/* OPIE */ 15/* OPIE */
16#include <opie2/odebug.h> 16#include <opie2/odebug.h>
17#include <qpe/config.h> 17#include <qpe/config.h>
18#include <qpe/qcopenvelope_qws.h> 18#include <qpe/qcopenvelope_qws.h>
19#include <qpe/qpeapplication.h> 19#include <qpe/qpeapplication.h>
20#include <qpe/resource.h> 20#include <qpe/resource.h>
21#include <qpe/storage.h> 21#include <qpe/storage.h>
22using namespace Opie::Core; 22using namespace Opie::Core;
23 23
24/* QT */ 24/* QT */
25#include <qcheckbox.h> 25#include <qcheckbox.h>
26#include <qcombobox.h> 26#include <qcombobox.h>
27#include <qdir.h> 27#include <qdir.h>
28#include <qgroupbox.h> 28#include <qgroupbox.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qlayout.h> 30#include <qlayout.h>
31#include <qlistview.h> 31#include <qlistview.h>
32#include <qmessagebox.h> 32#include <qmessagebox.h>
33#include <qpopupmenu.h> 33#include <qpopupmenu.h>
34#include <qpushbutton.h> 34#include <qpushbutton.h>
35#include <qslider.h> 35#include <qslider.h>
36#include <qtabwidget.h> 36#include <qtabwidget.h>
37#include <qtimer.h> 37#include <qtimer.h>
38 38
39/* STD */ 39/* STD */
40#include <errno.h> 40#include <errno.h>
41#include <fcntl.h> 41#include <fcntl.h>
42#include <math.h> 42#include <math.h>
43#include <mntent.h> 43#include <mntent.h>
44#include <stdio.h> 44#include <stdio.h>
45#include <stdlib.h> 45#include <stdlib.h>
46#include <sys/ioctl.h> 46#include <sys/ioctl.h>
47#include <sys/soundcard.h> 47#include <sys/soundcard.h>
48#include <sys/stat.h> 48#include <sys/stat.h>
49#include <sys/time.h> 49#include <sys/time.h>
50#include <sys/types.h> 50#include <sys/types.h>
51#include <sys/vfs.h> 51#include <sys/vfs.h>
52#include <unistd.h> 52#include <unistd.h>
53#include <sys/wait.h> 53#include <sys/wait.h>
54#include <sys/signal.h> 54#include <sys/signal.h>
55#include <pthread.h> 55#include <pthread.h>
56 56
57#ifdef PDAUDIO //ALSA 57#ifdef PDAUDIO //ALSA
58#include <alsa/asoundlib.h> 58#include <alsa/asoundlib.h>
59static int deviceSampleRates[8] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000, -1 }; 59static int deviceSampleRates[8] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000, -1 };
60static int deviceBitRates[] = { 8, 16, 24, 32, -1 }; 60static int deviceBitRates[] = { 8, 16, 24, 32, -1 };
61#else //OSS 61#else //OSS
62static int deviceSampleRates[6] = { 11025, 16000, 22050, 32000, 44100, -1 }; 62static int deviceSampleRates[6] = { 11025, 16000, 22050, 32000, 44100, -1 };
63static int deviceBitRates[] = { 8, 16, -1 }; 63static int deviceBitRates[] = { 8, 16, -1 };
64#endif 64#endif
65 65
66 66
67//#define ZAURUS 0 67//#define ZAURUS 0
68struct adpcm_state encoder_state; 68struct adpcm_state encoder_state;
69struct adpcm_state decoder_state; 69struct adpcm_state decoder_state;
70 70
71typedef struct { 71typedef struct {
72 int sampleRate; 72 int sampleRate;
73 /* int fragSize; */ 73 /* int fragSize; */
74 /* int blockSize; */ 74 /* int blockSize; */
75 int resolution; //bitrate 75 int resolution; //bitrate
76 int channels; //number of channels 76 int channels; //number of channels
77 int fd; //file descriptor 77 int fd; //file descriptor
78 int sd; //sound device descriptor 78 int sd; //sound device descriptor
79 int numberSamples; //total number of samples 79 int numberSamples; //total number of samples
80 int SecondsToRecord; // number of seconds that should be recorded 80 int SecondsToRecord; // number of seconds that should be recorded
81 float numberOfRecordedSeconds; //total number of samples recorded 81 float numberOfRecordedSeconds; //total number of samples recorded
82 int samplesToRecord; //number of samples to be recorded 82 int samplesToRecord; //number of samples to be recorded
83 int inVol; //input volume 83 int inVol; //input volume
84 int outVol; //output volume 84 int outVol; //output volume
85 int format; //wavfile format PCM.. ADPCM 85 int format; //wavfile format PCM.. ADPCM
86 const char *fileName; //name of fiel to be played/recorded 86 const char *fileName; //name of fiel to be played/recorded
87} fileParameters; 87} fileParameters;
88 88
89fileParameters filePara; 89fileParameters filePara;
90 90
91bool monitoring, recording, playing; 91bool monitoring, recording, playing;
92bool stopped; 92bool stopped;
93QLabel *timeLabel; 93QLabel *timeLabel;
94QSlider *timeSlider; 94QSlider *timeSlider;
95int sd; 95int sd;
96 96
97Waveform* waveform; 97Waveform* waveform;
98Device *soundDevice; 98Device *soundDevice;
99 99
100 100
101#ifdef THREADED 101#ifdef THREADED
102void quickRec() 102void quickRec()
103#else 103#else
104 void QtRec::quickRec() 104 void QtRec::quickRec()
105#endif 105#endif
106{ 106{
107 107
108 odebug << ( filePara.numberSamples/filePara.sampleRate * filePara.channels ) << oendl; 108 odebug << ( filePara.numberSamples/filePara.sampleRate * filePara.channels ) << oendl;
109 odebug << "samples " << filePara.numberSamples << ", rate " << filePara.sampleRate 109 odebug << "samples " << filePara.numberSamples << ", rate " << filePara.sampleRate
110 << ", channels " << filePara.channels << oendl; 110 << ", channels " << filePara.channels << oendl;
111 111
112 int total = 0; // Total number of bytes read in so far. 112 int total = 0; // Total number of bytes read in so far.
113 int bytesWritten, number; 113 int bytesWritten, number;
114 114
115 bytesWritten = 0; 115 bytesWritten = 0;
116 number = 0; 116 number = 0;
117 QString num; 117 QString num;
118 int level = 0; 118 int level = 0;
119 int threshold = 0; 119 int threshold = 0;
120 int bits = filePara.resolution; 120 int bits = filePara.resolution;
121 odebug << "bits " << bits << "" << oendl; 121 odebug << "bits " << bits << "" << oendl;
122 122
123 if( filePara.resolution == 16 ) { //AFMT_S16_LE) 123 if( filePara.resolution == 16 ) { //AFMT_S16_LE)
124 odebug << "AFMT_S16_LE size " << filePara.SecondsToRecord << "" << oendl; 124 odebug << "AFMT_S16_LE size " << filePara.SecondsToRecord << "" << oendl;
125 odebug << "samples to record " << filePara.samplesToRecord << "" << oendl; 125 odebug << "samples to record " << filePara.samplesToRecord << "" << oendl;
126 odebug << "" << filePara.sd << "" << oendl; 126 odebug << "" << filePara.sd << "" << oendl;
127 level = 7; 127 level = 7;
128 threshold = 0; 128 threshold = 0;
129 129
130 if( filePara.format == WAVE_FORMAT_DVI_ADPCM) { 130 if( filePara.format == WAVE_FORMAT_DVI_ADPCM) {
131 odebug << "start recording WAVE_FORMAT_DVI_ADPCM" << oendl; 131 odebug << "start recording WAVE_FORMAT_DVI_ADPCM" << oendl;
132// <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_DVI_ADPCM >>>>>>>>>>>>>>>>>>>>>> 132// <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_DVI_ADPCM >>>>>>>>>>>>>>>>>>>>>>
133 char abuf[ BUFSIZE/2 ]; 133 char abuf[ BUFSIZE/2 ];
134 short sbuf[ BUFSIZE ]; 134 short sbuf[ BUFSIZE ];
135 short sbuf2[ BUFSIZE ]; 135 short sbuf2[ BUFSIZE ];
136 memset( abuf, 0, BUFSIZE/2); 136 memset( abuf, 0, BUFSIZE/2);
137 memset( sbuf, 0, BUFSIZE); 137 memset( sbuf, 0, BUFSIZE);
138 memset( sbuf2, 0, BUFSIZE); 138 memset( sbuf2, 0, BUFSIZE);
139 139
140 for(;;) { 140 for(;;) {
141 if ( stopped) { 141 if ( stopped) {
142 odebug << "quickRec:: stopped" << oendl; 142 odebug << "quickRec:: stopped" << oendl;
143 break; 143 break;
144 } 144 }
145 145
146// number=::read( filePara.sd, sbuf, BUFSIZE); 146// number=::read( filePara.sd, sbuf, BUFSIZE);
147 number = soundDevice->devRead( filePara.sd, sbuf, BUFSIZE); 147 number = soundDevice->devRead( filePara.sd, sbuf, BUFSIZE);
148 148
149 if(number <= 0) { 149 if(number <= 0) {
150 perror("recording error "); 150 perror("recording error ");
151 odebug << "" << filePara.fileName << " " << number << "" << oendl; 151 odebug << "" << filePara.fileName << " " << number << "" << oendl;
152 stopped = true; 152 stopped = true;
153 return; 153 return;
154 } 154 }
155 //if(stereo == 2) { 155 //if(stereo == 2) {
156// adpcm_coder( sbuf2, abuf, number/2, &encoder_state); 156// adpcm_coder( sbuf2, abuf, number/2, &encoder_state);
157 adpcm_coder( sbuf, abuf, number/2, &encoder_state); 157 adpcm_coder( sbuf, abuf, number/2, &encoder_state);
158 158
159 bytesWritten = ::write( filePara.fd , abuf, number/4); 159 bytesWritten = ::write( filePara.fd , abuf, number/4);
160 160
161 waveform->newSamples( sbuf, number ); 161 waveform->newSamples( sbuf, number );
162 162
163 total += bytesWritten; 163 total += bytesWritten;
164 filePara.numberSamples = total; 164 filePara.numberSamples = total;
165 timeSlider->setValue( total); 165 timeSlider->setValue( total);
166 166
167 printf("%d, bytes %d,total %d\r", number, bytesWritten, total); 167 printf("%d, bytes %d,total %d\r", number, bytesWritten, total);
168 fflush(stdout); 168 fflush(stdout);
169 169
170 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate * (float)2;/// filePara.channels; 170 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate * (float)2;/// filePara.channels;
171 171
172 qApp->processEvents(); 172 qApp->processEvents();
173 if( total >= filePara.samplesToRecord) { 173 if( total >= filePara.samplesToRecord) {
174 stopped = true; 174 stopped = true;
175 break; 175 break;
176 } 176 }
177 } 177 }
178 } else { 178 } else {
179 // <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_PCM >>>>>>>>>>>>>>>>>>>>>> 179 // <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_PCM >>>>>>>>>>>>>>>>>>>>>>
180 odebug << "start recording WAVE_FORMAT_PCM" << oendl; 180 odebug << "start recording WAVE_FORMAT_PCM" << oendl;
181 short inbuffer[ BUFSIZE ], outbuffer[ BUFSIZE ]; 181 short inbuffer[ BUFSIZE ], outbuffer[ BUFSIZE ];
182 memset( inbuffer, 0, BUFSIZE); 182 memset( inbuffer, 0, BUFSIZE);
183 memset( outbuffer, 0, BUFSIZE); 183 memset( outbuffer, 0, BUFSIZE);
184 184
185 for(;;) { 185 for(;;) {
186 if ( stopped) { 186 if ( stopped) {
187 odebug << "quickRec:: stopped" << oendl; 187 odebug << "quickRec:: stopped" << oendl;
188 stopped = true; 188 stopped = true;
189 break; // stop if playing was set to false 189 break; // stop if playing was set to false
190 return; 190 return;
191 } 191 }
192 192
193 number = soundDevice->devRead( soundDevice->sd /*filePara.sd*/, (short *)inbuffer, BUFSIZE); 193 number = soundDevice->devRead( soundDevice->sd /*filePara.sd*/, (short *)inbuffer, BUFSIZE);
194 194
195 if( number <= 0) { 195 if( number <= 0) {
196 perror( "recording error "); 196 perror( "recording error ");
197 odebug << filePara.fileName << oendl; 197 odebug << filePara.fileName << oendl;
198 stopped = true; 198 stopped = true;
199 return; 199 return;
200 } 200 }
201 201
202 bytesWritten = ::write( filePara.fd , inbuffer, number); 202 bytesWritten = ::write( filePara.fd , inbuffer, number);
203 waveform->newSamples( inbuffer, number ); 203 waveform->newSamples( inbuffer, number );
204 204
205 if( bytesWritten < 0) { 205 if( bytesWritten < 0) {
206 perror("File writing error "); 206 perror("File writing error ");
207 stopped = true; 207 stopped = true;
208 return; 208 return;
209 } 209 }
210 210
211 total += bytesWritten; 211 total += bytesWritten;
212 212
213 filePara.numberSamples = total; 213 filePara.numberSamples = total;
214 214
215 if( filePara.SecondsToRecord != 0) 215 if( filePara.SecondsToRecord != 0)
216 timeSlider->setValue( total); 216 timeSlider->setValue( total);
217 printf("%d, bytes %d,total %d\r",number, bytesWritten , total); 217 printf("%d, bytes %d,total %d\r",number, bytesWritten , total);
218 fflush(stdout); 218 fflush(stdout);
219 219
220 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate 220 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate
221 / (float)2/filePara.channels; 221 / (float)2/filePara.channels;
222 qApp->processEvents(); 222 qApp->processEvents();
223 223
224 if( total >= filePara.samplesToRecord) { 224 if( total >= filePara.samplesToRecord) {
225 stopped = true; 225 stopped = true;
226 break; 226 break;
227 } 227 }
228 } 228 }
229 } //end main loop 229 } //end main loop
230 230
231 } else { 231 } else {
232// <<<<<<<<<<<<<<<<<<<<<<< format = AFMT_U8; 232// <<<<<<<<<<<<<<<<<<<<<<< format = AFMT_U8;
233 unsigned char unsigned_inbuffer[ BUFSIZE ], unsigned_outbuffer[ BUFSIZE ]; 233 unsigned char unsigned_inbuffer[ BUFSIZE ], unsigned_outbuffer[ BUFSIZE ];
234 memset( unsigned_inbuffer, 0, BUFSIZE); 234 memset( unsigned_inbuffer, 0, BUFSIZE);
235 memset( unsigned_outbuffer, 0, BUFSIZE); 235 memset( unsigned_outbuffer, 0, BUFSIZE);
236 236
237 for(;;) { 237 for(;;) {
238 if ( stopped) { 238 if ( stopped) {
239 odebug << "quickRec:: stopped" << oendl; 239 odebug << "quickRec:: stopped" << oendl;
240 break; // stop if playing was set to false 240 break; // stop if playing was set to false
241 } 241 }
242 242
243 number = ::read( soundDevice->sd /*filePara.sd*/ , unsigned_inbuffer, BUFSIZE); 243 number = ::read( soundDevice->sd /*filePara.sd*/ , unsigned_inbuffer, BUFSIZE);
244 bytesWritten = ::write( filePara.fd , unsigned_inbuffer, number); 244 bytesWritten = ::write( filePara.fd , unsigned_inbuffer, number);
245 waveform->newSamples( (const short *) unsigned_inbuffer, number ); 245 waveform->newSamples( (const short *) unsigned_inbuffer, number );
246 246
247 if(bytesWritten < 0) { 247 if(bytesWritten < 0) {
248 stopped = true; 248 stopped = true;
249 QMessageBox::message("Note","<p>There was a problem writing to the file</p>"); 249 QMessageBox::message("Note","<p>There was a problem writing to the file</p>");
250 perror("File writing error "); 250 perror("File writing error ");
251 return; 251 return;
252 } 252 }
253 253
254 total += bytesWritten; 254 total += bytesWritten;
255 filePara.numberSamples = total; 255 filePara.numberSamples = total;
256 // printf("%d, bytes %d,total %d \r",number, bytesWritten , total); 256 // printf("%d, bytes %d,total %d \r",number, bytesWritten , total);
257 // fflush(stdout); 257 // fflush(stdout);
258 if( filePara.SecondsToRecord !=0) 258 if( filePara.SecondsToRecord !=0)
259 timeSlider->setValue( total); 259 timeSlider->setValue( total);
260 260
261 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate; 261 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate;
262 262
263 qApp->processEvents(); 263 qApp->processEvents();
264 if( total >= filePara.samplesToRecord) { 264 if( total >= filePara.samplesToRecord) {
265 stopped = true; 265 stopped = true;
266 break; 266 break;
267 } 267 }
268 } //end main loop 268 } //end main loop
269 } 269 }
270 printf("\n"); 270 printf("\n");
271} /// END quickRec() 271} /// END quickRec()
272 272
273 273
274#ifdef THREADED 274#ifdef THREADED
275void playIt() 275void playIt()
276#else 276#else
277 void QtRec::playIt() 277 void QtRec::playIt()
278#endif 278#endif
279{ 279{
280 int bytesWritten = 0; 280 int bytesWritten = 0;
281 int number = 0; 281 int number = 0;
282 int total = 0; // Total number of bytes read in so far. 282 int total = 0; // Total number of bytes read in so far.
283 if( filePara.resolution == 16 ) { //AFMT_S16_LE) { 283 if( filePara.resolution == 16 ) { //AFMT_S16_LE) {
284 if( filePara.format == WAVE_FORMAT_DVI_ADPCM) { 284 if( filePara.format == WAVE_FORMAT_DVI_ADPCM) {
285 char abuf[ BUFSIZE / 2 ]; 285 char abuf[ BUFSIZE / 2 ];
286 short sbuf[ BUFSIZE ]; 286 short sbuf[ BUFSIZE ];
287 short sbuf2[ BUFSIZE * 2 ]; 287 short sbuf2[ BUFSIZE * 2 ];
288 memset( abuf, 0, BUFSIZE / 2); 288 memset( abuf, 0, BUFSIZE / 2);
289 memset( sbuf, 0, BUFSIZE); 289 memset( sbuf, 0, BUFSIZE);
290 memset( sbuf2, 0, BUFSIZE * 2); 290 memset( sbuf2, 0, BUFSIZE * 2);
291// <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_DVI_ADPCM >>>>>>>>>>>>>>>>>>>>>> 291// <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_DVI_ADPCM >>>>>>>>>>>>>>>>>>>>>>
292 for(;;) { // play loop 292 for(;;) { // play loop
293 if ( stopped) { 293 if ( stopped) {
294 break; 294 break;
295 return; 295 return;
296 }// stop if playing was set to false 296 }// stop if playing was set to false
297 297
298 number = ::read( filePara.fd, abuf, BUFSIZE / 2); 298 number = ::read( filePara.fd, abuf, BUFSIZE / 2);
299 adpcm_decoder( abuf, sbuf, number * 2, &decoder_state); 299 adpcm_decoder( abuf, sbuf, number * 2, &decoder_state);
300 300
301// for (int i=0;i< number * 2; 2 * i++) { //2*i is left channel 301// for (int i=0;i< number * 2; 2 * i++) { //2*i is left channel
302// sbuf2[i+1]=sbuf2[i]=sbuf[i]; 302// sbuf2[i+1]=sbuf2[i]=sbuf[i];
303// } 303// }
304 bytesWritten = write ( soundDevice->sd , sbuf, number * 4); 304 bytesWritten = write ( soundDevice->sd , sbuf, number * 4);
305 305
306 waveform->newSamples( sbuf, number ); 306 waveform->newSamples( sbuf, number );
307 307
308 // if(filePara.channels==1) 308 // if(filePara.channels==1)
309 // total += bytesWritten/2; //mono 309 // total += bytesWritten/2; //mono
310 // else 310 // else
311 total += bytesWritten; 311 total += bytesWritten;
312 filePara.numberSamples = total/4; 312 filePara.numberSamples = total/4;
313 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate / 2; 313 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate / 2;
314 314
315 timeSlider->setValue( total/4); 315 timeSlider->setValue( total/4);
316// timeString.sprintf("%.2f", filePara.numberOfRecordedSeconds); 316// timeString.sprintf("%.2f", filePara.numberOfRecordedSeconds);
317// if(filePara.numberOfRecordedSeconds>1) 317// if(filePara.numberOfRecordedSeconds>1)
318// timeLabel->setText( timeString+ tr(" seconds")); 318// timeLabel->setText( timeString+ tr(" seconds"));
319// printf("playing number %d, bytes %d, total %d\n",number, bytesWritten, total/4); 319// printf("playing number %d, bytes %d, total %d\n",number, bytesWritten, total/4);
320// fflush(stdout); 320// fflush(stdout);
321 321
322 qApp->processEvents(); 322 qApp->processEvents();
323 323
324 if( /*total >= filePara.numberSamples || */ bytesWritten == 0) { 324 if( /*total >= filePara.numberSamples || */ bytesWritten == 0) {
325// if( total >= filePara.numberSamples ){//|| secCount > filePara.numberOfRecordedSeconds ) { 325// if( total >= filePara.numberSamples ){//|| secCount > filePara.numberOfRecordedSeconds ) {
326 stopped = true; 326 stopped = true;
327 break; 327 break;
328 } 328 }
329 } 329 }
330 } else { 330 } else {
331 // <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_PCM >>>>>>>>>>>>>>>>>>>>>> 331 // <<<<<<<<<<<<<<<<<<<<<<<<<<< WAVE_FORMAT_PCM >>>>>>>>>>>>>>>>>>>>>>
332 short inbuffer[ BUFSIZE ], outbuffer[ BUFSIZE ]; 332 short inbuffer[ BUFSIZE ], outbuffer[ BUFSIZE ];
333 memset( inbuffer, 0, BUFSIZE); 333 memset( inbuffer, 0, BUFSIZE);
334 memset( outbuffer, 0, BUFSIZE); 334 memset( outbuffer, 0, BUFSIZE);
335 335
336 for(;;) { // play loop 336 for(;;) { // play loop
337 if ( stopped) { 337 if ( stopped) {
338 break; 338 break;
339 return; 339 return;
340 } 340 }
341// stop if playing was set to false 341// stop if playing was set to false
342 number = ::read( filePara.fd, inbuffer, BUFSIZE); 342 number = ::read( filePara.fd, inbuffer, BUFSIZE);
343// for (int i=0;i< number * 2; 2 * i++) { //2*i is left channel 343// for (int i=0;i< number * 2; 2 * i++) { //2*i is left channel
344// // for (int i=0;i< number ; i++) { //2*i is left channel 344// // for (int i=0;i< number ; i++) { //2*i is left channel
345// outbuffer[i+1]= outbuffer[i]=inbuffer[i]; 345// outbuffer[i+1]= outbuffer[i]=inbuffer[i];
346// } 346// }
347 bytesWritten = ::write( soundDevice->sd, inbuffer, number); 347 bytesWritten = ::write( soundDevice->sd, inbuffer, number);
348 waveform->newSamples( inbuffer, number); 348 waveform->newSamples( inbuffer, number);
349 //-------------->>>> out to device 349 //-------------->>>> out to device
350 // total+=bytesWritten; 350 // total+=bytesWritten;
351 // if(filePara.channels==1) 351 // if(filePara.channels==1)
352 // total += bytesWritten/2; //mono 352 // total += bytesWritten/2; //mono
353 // else 353 // else
354 total += bytesWritten; 354 total += bytesWritten;
355 timeSlider->setValue( total); 355 timeSlider->setValue( total);
356 356
357 filePara.numberSamples = total; 357 filePara.numberSamples = total;
358 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate / (float)2; 358 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate / (float)2;
359 359
360// timeString.sprintf("%.2f",filePara.numberOfRecordedSeconds); 360// timeString.sprintf("%.2f",filePara.numberOfRecordedSeconds);
361// timeLabel->setText( timeString + tr(" seconds")); 361// timeLabel->setText( timeString + tr(" seconds"));
362 362
363 qApp->processEvents(); 363 qApp->processEvents();
364 364
365 if( /*total >= filePara.numberSamples || */ bytesWritten == 0) { 365 if( /*total >= filePara.numberSamples || */ bytesWritten == 0) {
366 owarn << "Jane! Stop this crazy thing!" << oendl; 366 owarn << "Jane! Stop this crazy thing!" << oendl;
367 stopped = true; 367 stopped = true;
368// playing = false; 368// playing = false;
369 break; 369 break;
370 } 370 }
371 } 371 }
372// printf("\nplaying number %d, bytes %d, total %d\r",number, bytesWritten, total); 372// printf("\nplaying number %d, bytes %d, total %d\r",number, bytesWritten, total);
373// fflush(stdout); 373// fflush(stdout);
374 } //end loop 374 } //end loop
375 } else { 375 } else {
376/////////////////////////////// format = AFMT_U8; 376/////////////////////////////// format = AFMT_U8;
377 unsigned char unsigned_inbuffer[ BUFSIZE ]; //, unsigned_outbuffer[BUFSIZE]; 377 unsigned char unsigned_inbuffer[ BUFSIZE ]; //, unsigned_outbuffer[BUFSIZE];
378 memset( unsigned_inbuffer, 0, BUFSIZE); 378 memset( unsigned_inbuffer, 0, BUFSIZE);
379 for(;;) { 379 for(;;) {
380// main loop 380// main loop
381 if (stopped) { 381 if (stopped) {
382 break; // stop if playing was set to false 382 break; // stop if playing was set to false
383 return; 383 return;
384 } 384 }
385 number = ::read( filePara.fd, unsigned_inbuffer, BUFSIZE); 385 number = ::read( filePara.fd, unsigned_inbuffer, BUFSIZE);
386//data = (val >> 8) ^ 0x80; 386//data = (val >> 8) ^ 0x80;
387 // unsigned_outbuffer = (unsigned_inbuffer >> 8) ^ 0x80; 387 // unsigned_outbuffer = (unsigned_inbuffer >> 8) ^ 0x80;
388 bytesWritten = write ( filePara.sd, unsigned_inbuffer, number); 388 bytesWritten = write ( filePara.sd, unsigned_inbuffer, number);
389 waveform->newSamples( (const short *)unsigned_inbuffer, bytesWritten ); 389 waveform->newSamples( (const short *)unsigned_inbuffer, bytesWritten );
390 total += bytesWritten; 390 total += bytesWritten;
391 391
392 timeSlider->setValue( total); 392 timeSlider->setValue( total);
393 filePara.numberSamples = total; 393 filePara.numberSamples = total;
394 394
395 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate; 395 filePara.numberOfRecordedSeconds = (float)total / (float)filePara.sampleRate;
396// timeString.sprintf("%.2f",filePara.numberOfRecordedSeconds); 396// timeString.sprintf("%.2f",filePara.numberOfRecordedSeconds);
397// timeLabel->setText( timeString + tr(" seconds")); 397// timeLabel->setText( timeString + tr(" seconds"));
398 qApp->processEvents(); 398 qApp->processEvents();
399 399
400 if( /*total >= filePara.numberSamples || */ bytesWritten == 0) { 400 if( /*total >= filePara.numberSamples || */ bytesWritten == 0) {
401// if( total >= filePara.numberSamples ) { 401// if( total >= filePara.numberSamples ) {
402 stopped = true; 402 stopped = true;
403 break; 403 break;
404 } 404 }
405// printf("Writing number %d, bytes %d, total %d, numberSamples %d\r",number, bytesWritten , total, filePara.numberSamples); 405// printf("Writing number %d, bytes %d, total %d, numberSamples %d\r",number, bytesWritten , total, filePara.numberSamples);
406// fflush(stdout); 406// fflush(stdout);
407 } 407 }
408 } 408 }
409} 409}
410 410
411 411
412QtRec::QtRec( QWidget* parent, const char* name, WFlags fl ) 412QtRec::QtRec( QWidget* parent, const char* name, WFlags fl )
413 : QWidget( parent, name, fl ) 413 : QWidget( parent, name, fl )
414{ 414{
415 if ( !name ) 415 if ( !name )
416 setName( "OpieRec" ); 416 setName( "OpieRec" );
417 init(); 417 init();
418 initConfig(); 418 initConfig();
419 initConnections(); 419 initConnections();
420 renameBox = 0; 420 renameBox = 0;
421 421
422// open sound device to get volumes 422// open sound device to get volumes
423 Config hwcfg("OpieRec"); 423 Config hwcfg("OpieRec");
424 hwcfg.setGroup("Hardware"); 424 hwcfg.setGroup("Hardware");
425 425
426 426
427 soundDevice = new Device( this, false); //open play 427 soundDevice = new Device( this, false); //open play
428 428
429 getInVol(); 429 getInVol();
430 getOutVol(); 430 getOutVol();
431 431
432 soundDevice->closeDevice( true); 432 soundDevice->closeDevice( true);
433 soundDevice->sd = -1; 433 soundDevice->sd = -1;
434 soundDevice = 0; 434 soundDevice = 0;
435 wavFile = 0; 435 wavFile = 0;
436// if( soundDevice) delete soundDevice; 436// if( soundDevice) delete soundDevice;
437 QTimer::singleShot(100,this, SLOT(initIconView())); 437 QTimer::singleShot(100,this, SLOT(initIconView()));
438 438
439 if( autoMute) 439 if( autoMute)
440 doMute( true); 440 doMute( true);
441 // ListView1->setFocus(); 441 // ListView1->setFocus();
442 playing = false; 442 playing = false;
443} 443}
444 444
445QtRec::~QtRec() { 445QtRec::~QtRec() {
446// if( soundDevice) delete soundDevice; 446// if( soundDevice) delete soundDevice;
447 447
448} 448}
449 449
450void QtRec::cleanUp() { 450void QtRec::cleanUp() {
451 451
452 if( !stopped) { 452 if( !stopped) {
453 stopped = true; 453 stopped = true;
454 endRecording(); 454 endRecording();
455 } 455 }
456 456
457 ListView1->clear(); 457 ListView1->clear();
458 458
459 if( autoMute) 459 if( autoMute)
460 doMute(false); 460 doMute(false);
461 461
462// if( wavFile) delete wavFile; 462// if( wavFile) delete wavFile;
463// if(soundDevice) delete soundDevice; 463// if(soundDevice) delete soundDevice;
464} 464}
465 465
466void QtRec::init() { 466void QtRec::init() {
467 467
468 needsStereoOut = false; 468 needsStereoOut = false;
469 QPixmap image3( ( const char** ) image3_data ); 469 QPixmap image3( ( const char** ) image3_data );
470 QPixmap image4( ( const char** ) image4_data ); 470 QPixmap image4( ( const char** ) image4_data );
471 QPixmap image6( ( const char** ) image6_data ); 471 QPixmap image6( ( const char** ) image6_data );
472 472
473 stopped = true; 473 stopped = true;
474 setCaption( tr( "OpieRecord " )); 474 setCaption( tr( "OpieRecord " ));
475 QGridLayout *layout = new QGridLayout( this ); 475 QGridLayout *layout = new QGridLayout( this );
476 layout->setSpacing( 2); 476 layout->setSpacing( 2);
477 layout->setMargin( 2); 477 layout->setMargin( 2);
478 478
479 TabWidget = new QTabWidget( this, "TabWidget" ); 479 TabWidget = new QTabWidget( this, "TabWidget" );
480 layout->addMultiCellWidget(TabWidget, 0, 7, 0, 8); 480 layout->addMultiCellWidget(TabWidget, 0, 7, 0, 8);
481// TabWidget->setTabShape(QTabWidget::Triangular); 481// TabWidget->setTabShape(QTabWidget::Triangular);
482 482
483 ///**********<<<<<<<<<<<<>>>>>>>>>>>>*************** 483 ///**********<<<<<<<<<<<<>>>>>>>>>>>>***************
484 tab = new QWidget( TabWidget, "tab" ); 484 tab = new QWidget( TabWidget, "tab" );
485 485
486 QGridLayout *layout1 = new QGridLayout( tab); 486 QGridLayout *layout1 = new QGridLayout( tab);
487 layout1->setSpacing( 2); 487 layout1->setSpacing( 2);
488 layout1->setMargin( 2); 488 layout1->setMargin( 2);
489 489
490 timeSlider = new QSlider( 0,100,10,0, QSlider::Horizontal, tab, (const char *) "timeSlider" ); 490 timeSlider = new QSlider( 0,100,10,0, QSlider::Horizontal, tab, (const char *) "timeSlider" );
491 layout1->addMultiCellWidget( timeSlider, 1, 1, 0, 3); 491 layout1->addMultiCellWidget( timeSlider, 1, 1, 0, 3);
492 492
493 // timeLabel = new QLabel( tab, "TimeLabel" ); 493 // timeLabel = new QLabel( tab, "TimeLabel" );
494 // layout1->addMultiCellWidget( timeLabel, 0, 0, 0, 3); 494 // layout1->addMultiCellWidget( timeLabel, 0, 0, 0, 3);
495 495
496 // playLabel2 = new QLabel(tab, "PlayLabel2" ); 496 // playLabel2 = new QLabel(tab, "PlayLabel2" );
497 // playLabel2->setText(tr("Play") ); 497 // playLabel2->setText(tr("Play") );
498 // playLabel2->setFixedHeight( 18); 498 // playLabel2->setFixedHeight( 18);
499 // layout1->addMultiCellWidget( playLabel2, 0, 0, 4, 4); 499 // layout1->addMultiCellWidget( playLabel2, 0, 0, 4, 4);
500 500
501 Stop_PushButton = new QPushButton( tab, "Stop_PushButton" ); 501 Stop_PushButton = new QPushButton( tab, "Stop_PushButton" );
502 layout1->addMultiCellWidget( Stop_PushButton, 1, 1, 4, 4); 502 layout1->addMultiCellWidget( Stop_PushButton, 1, 1, 4, 4);
503 Stop_PushButton->setFixedSize( 22, 22); 503 Stop_PushButton->setFixedSize( 22, 22);
504 Stop_PushButton->setPixmap( image4 ); 504 Stop_PushButton->setPixmap( image4 );
505 505
506 toBeginningButton = new QPushButton( tab, "Beginning_PushButton" ); 506 toBeginningButton = new QPushButton( tab, "Beginning_PushButton" );
507 layout1->addMultiCellWidget(toBeginningButton, 1, 1, 5, 5); 507 layout1->addMultiCellWidget(toBeginningButton, 1, 1, 5, 5);
508 toBeginningButton->setFixedSize( 22, 22); 508 toBeginningButton->setFixedSize( 22, 22);
509 toBeginningButton->setPixmap( Resource::loadPixmap("fastback") ); 509 toBeginningButton->setPixmap( Resource::loadPixmap("fastback") );
510 510
511 toEndButton = new QPushButton( tab, "End_PushButton" ); 511 toEndButton = new QPushButton( tab, "End_PushButton" );
512 layout1->addMultiCellWidget( toEndButton, 1, 1, 6, 6); 512 layout1->addMultiCellWidget( toEndButton, 1, 1, 6, 6);
513 toEndButton->setFixedSize( 22, 22); 513 toEndButton->setFixedSize( 22, 22);
514 toEndButton->setPixmap( Resource::loadPixmap( "fastforward" ) ); 514 toEndButton->setPixmap( Resource::loadPixmap( "fastforward" ) );
515 515
516 // QLabel *recLabel2; 516 // QLabel *recLabel2;
517 // recLabel2 = new QLabel( tab, "recLabel2" ); 517 // recLabel2 = new QLabel( tab, "recLabel2" );
518 // recLabel2->setText(tr("Rec")); 518 // recLabel2->setText(tr("Rec"));
519 // recLabel2->setFixedHeight( 18); 519 // recLabel2->setFixedHeight( 18);
520 // layout1->addMultiCellWidget( recLabel2, 0, 0, 7, 7); 520 // layout1->addMultiCellWidget( recLabel2, 0, 0, 7, 7);
521 521
522 Rec_PushButton = new QPushButton( tab, "Rec_PushButton" ); 522 Rec_PushButton = new QPushButton( tab, "Rec_PushButton" );
523 layout1->addMultiCellWidget( Rec_PushButton, 1, 1, 7, 7); 523 layout1->addMultiCellWidget( Rec_PushButton, 1, 1, 7, 7);
524 Rec_PushButton->setFixedSize( 22, 22); 524 Rec_PushButton->setFixedSize( 22, 22);
525 Rec_PushButton->setPixmap( image6 ); 525 Rec_PushButton->setPixmap( image6 );
526 526
527 t = new QTimer( this ); 527 t = new QTimer( this );
528 connect( t, SIGNAL( timeout() ), SLOT( timerBreak() ) ); 528 connect( t, SIGNAL( timeout() ), SLOT( timerBreak() ) );
529 529
530 rewindTimer = new QTimer( this ); 530 rewindTimer = new QTimer( this );
531 connect( rewindTimer, SIGNAL( timeout() ), 531 connect( rewindTimer, SIGNAL( timeout() ),
532 this, SLOT( rewindTimerTimeout() ) ); 532 this, SLOT( rewindTimerTimeout() ) );
533 533
534 forwardTimer = new QTimer( this ); 534 forwardTimer = new QTimer( this );
535 connect( forwardTimer, SIGNAL( timeout() ), 535 connect( forwardTimer, SIGNAL( timeout() ),
536 this, SLOT( forwardTimerTimeout() ) ); 536 this, SLOT( forwardTimerTimeout() ) );
537 537
538 deleteSoundButton = new QPushButton( tab, "deleteSoundButton" ); 538 deleteSoundButton = new QPushButton( tab, "deleteSoundButton" );
539 layout1->addMultiCellWidget( deleteSoundButton, 1, 1, 8, 8); 539 layout1->addMultiCellWidget( deleteSoundButton, 1, 1, 8, 8);
540 deleteSoundButton->setText( tr( "Del" ) ); 540 deleteSoundButton->setText( tr( "Del" ) );
541 541
542 ListView1 = new QListView( tab, "IconView1" ); 542 ListView1 = new QListView( tab, "IconView1" );
543 layout1->addMultiCellWidget( ListView1, 2, 2, 0, 8); 543 layout1->addMultiCellWidget( ListView1, 2, 2, 0, 8);
544 544
545 ListView1->addColumn( tr( "Name" ) ); 545 ListView1->addColumn( tr( "Name" ) );
546 ListView1->setSorting( 1, false); 546 ListView1->setSorting( 1, false);
547 ListView1->addColumn( tr( "Time" ) ); //in seconds 547 ListView1->addColumn( tr( "Time" ) ); //in seconds
548 ListView1->setColumnWidthMode(0, QListView::Maximum); 548 ListView1->setColumnWidthMode(0, QListView::Maximum);
549 ListView1->setColumnAlignment( 1, QListView::AlignCenter); 549 ListView1->setColumnAlignment( 1, QListView::AlignCenter);
550 ListView1->setAllColumnsShowFocus( true ); 550 ListView1->setAllColumnsShowFocus( true );
551 QPEApplication::setStylusOperation( ListView1->viewport(), QPEApplication::RightOnHold); 551 QPEApplication::setStylusOperation( ListView1->viewport(), QPEApplication::RightOnHold);
552 552
553 TabWidget->insertTab( tab, tr( "Files" ) ); 553 TabWidget->insertTab( tab, tr( "Files" ) );
554 554
555 ///**********<<<<<<<<<<<<>>>>>>>>>>>>*************** 555 ///**********<<<<<<<<<<<<>>>>>>>>>>>>***************
556 tab_3 = new QWidget( TabWidget, "tab_3" ); 556 tab_3 = new QWidget( TabWidget, "tab_3" );
557 QGridLayout *glayout3 = new QGridLayout( tab_3 ); 557 QGridLayout *glayout3 = new QGridLayout( tab_3 );
558 glayout3->setSpacing( 2); 558 glayout3->setSpacing( 2);
559 glayout3->setMargin( 2); 559 glayout3->setMargin( 2);
560 //////////////////////////////////// 560 ////////////////////////////////////
561 sampleGroup = new QGroupBox( tab_3, "samplegroup" ); 561 sampleGroup = new QGroupBox( tab_3, "samplegroup" );
562 sampleGroup->setTitle( tr( "Sample Rate" ) ); 562 sampleGroup->setTitle( tr( "Sample Rate" ) );
563 sampleGroup->setFixedSize( 95,50); 563 sampleGroup->setFixedSize( 95,50);
564 564
565 sampleRateComboBox = new QComboBox( false, sampleGroup, "SampleRateComboBox" ); 565 sampleRateComboBox = new QComboBox( false, sampleGroup, "SampleRateComboBox" );
566 sampleRateComboBox->setGeometry( QRect( 10, 20, 80, 25 ) ); 566 sampleRateComboBox->setGeometry( QRect( 10, 20, 80, 25 ) );
567 QString s; 567 QString s;
568 int z = 0; 568 int z = 0;
569 while( deviceSampleRates[z] != -1) { 569 while( deviceSampleRates[z] != -1) {
570 sampleRateComboBox->insertItem( s.setNum( deviceSampleRates[z], 10)); 570 sampleRateComboBox->insertItem( s.setNum( deviceSampleRates[z], 10));
571 z++; 571 z++;
572 } 572 }
573 573
574 574
575 glayout3->addMultiCellWidget( sampleGroup, 0, 0, 0, 0); 575 glayout3->addMultiCellWidget( sampleGroup, 0, 0, 0, 0);
576 576
577 sizeGroup= new QGroupBox( tab_3, "sizeGroup" ); 577 sizeGroup= new QGroupBox( tab_3, "sizeGroup" );
578 sizeGroup->setTitle( tr( "Limit Size" ) ); 578 sizeGroup->setTitle( tr( "Limit Size" ) );
579 sizeGroup->setFixedSize( 80, 50); 579 sizeGroup->setFixedSize( 80, 50);
580 580
581 sizeLimitCombo = new QComboBox( false, sizeGroup, "sizeLimitCombo" ); 581 sizeLimitCombo = new QComboBox( false, sizeGroup, "sizeLimitCombo" );
582 sizeLimitCombo ->setGeometry( QRect( 5, 20, 70, 25 ) ); 582 sizeLimitCombo ->setGeometry( QRect( 5, 20, 70, 25 ) );
583 sizeLimitCombo->insertItem(tr("Unlimited")); 583 sizeLimitCombo->insertItem(tr("Unlimited"));
584 584
585 for(int i=1;i<13; i++) { 585 for(int i=1;i<13; i++) {
586 sizeLimitCombo->insertItem( QString::number( i * 5)); 586 sizeLimitCombo->insertItem( QString::number( i * 5));
587 } 587 }
588 588
589 589
590 glayout3->addMultiCellWidget( sizeGroup, 0, 0, 1, 1); 590 glayout3->addMultiCellWidget( sizeGroup, 0, 0, 1, 1);
591 dirGroup = new QGroupBox( tab_3, "dirGroup" ); 591 dirGroup = new QGroupBox( tab_3, "dirGroup" );
592 dirGroup->setTitle( tr( "File Directory" ) ); 592 dirGroup->setTitle( tr( "File Directory" ) );
593 dirGroup->setFixedSize( 130, 50); 593 dirGroup->setFixedSize( 130, 50);
594 594
595 directoryComboBox = new QComboBox( false, dirGroup, "dirGroup" ); 595 directoryComboBox = new QComboBox( false, dirGroup, "dirGroup" );
596 directoryComboBox->setGeometry( QRect( 10, 15, 115, 25 ) ); 596 directoryComboBox->setGeometry( QRect( 10, 15, 115, 25 ) );
597 597
598 glayout3->addMultiCellWidget( dirGroup, 1, 1, 0, 0); 598 glayout3->addMultiCellWidget( dirGroup, 1, 1, 0, 0);
599 599
600 bitGroup = new QGroupBox( tab_3, "bitGroup" ); 600 bitGroup = new QGroupBox( tab_3, "bitGroup" );
601 bitGroup->setTitle( tr( "Bit Depth" ) ); 601 bitGroup->setTitle( tr( "Bit Depth" ) );
602 bitGroup->setFixedSize( 65, 50); 602 bitGroup->setFixedSize( 65, 50);
603 603
604 bitRateComboBox = new QComboBox( false, bitGroup, "BitRateComboBox" ); 604 bitRateComboBox = new QComboBox( false, bitGroup, "BitRateComboBox" );
605 605
606 z = 0; 606 z = 0;
607 while( deviceBitRates[z] != -1) { 607 while( deviceBitRates[z] != -1) {
608 bitRateComboBox->insertItem( s.setNum( deviceBitRates[z], 10) ); 608 bitRateComboBox->insertItem( s.setNum( deviceBitRates[z], 10) );
609 z++; 609 z++;
610 } 610 }
611 611
612 bitRateComboBox->setGeometry( QRect( 5, 20, 50, 25 ) ); 612 bitRateComboBox->setGeometry( QRect( 5, 20, 50, 25 ) );
613 613
614 glayout3->addMultiCellWidget( bitGroup, 1, 1, 1, 1); 614 glayout3->addMultiCellWidget( bitGroup, 1, 1, 1, 1);
615 615
616 compressionCheckBox = new QCheckBox ( tr("Wave Compression (smaller files)"), tab_3 ); 616 compressionCheckBox = new QCheckBox ( tr("Wave Compression (smaller files)"), tab_3 );
617 617
618 autoMuteCheckBox = new QCheckBox ( tr("Auto Mute"), tab_3 ); 618 autoMuteCheckBox = new QCheckBox ( tr("Auto Mute"), tab_3 );
619 stereoCheckBox = new QCheckBox ( tr("Stereo"), tab_3 ); 619 stereoCheckBox = new QCheckBox ( tr("Stereo"), tab_3 );
620 620
621 glayout3->addMultiCellWidget( compressionCheckBox, 2, 2, 0, 3); 621 glayout3->addMultiCellWidget( compressionCheckBox, 2, 2, 0, 3);
622 glayout3->addMultiCellWidget( autoMuteCheckBox, 3, 3, 0, 0); 622 glayout3->addMultiCellWidget( autoMuteCheckBox, 3, 3, 0, 0);
623 glayout3->addMultiCellWidget( stereoCheckBox, 3, 3, 1, 1); 623 glayout3->addMultiCellWidget( stereoCheckBox, 3, 3, 1, 1);
624 624
625 tab_5 = new QWidget( TabWidget, "tab_5" ); 625 tab_5 = new QWidget( TabWidget, "tab_5" );
626 626
627 QHBoxLayout *Layout19a; 627 QHBoxLayout *Layout19a;
628 Layout19a = new QHBoxLayout( tab_5); 628 Layout19a = new QHBoxLayout( tab_5);
629 Layout19a->setSpacing( 2 ); 629 Layout19a->setSpacing( 2 );
630 Layout19a->setMargin( 0 ); 630 Layout19a->setMargin( 0 );
631 631
632 Layout15 = new QVBoxLayout( this); 632 Layout15 = new QVBoxLayout( this);
633 Layout15->setSpacing( 2 ); 633 Layout15->setSpacing( 2 );
634 Layout15->setMargin( 0 ); 634 Layout15->setMargin( 0 );
635 635
636 Layout15b = new QVBoxLayout( this); 636 Layout15b = new QVBoxLayout( this);
637 Layout15b->setSpacing( 2 ); 637 Layout15b->setSpacing( 2 );
638 Layout15b->setMargin( 0 ); 638 Layout15b->setMargin( 0 );
639 639
640 TextLabel2 = new QLabel( tab_5, "InputLabel" ); 640 TextLabel2 = new QLabel( tab_5, "InputLabel" );
641 TextLabel2->setText( tr( "In")); 641 TextLabel2->setText( tr( "In"));
642 TextLabel2->setFixedWidth( 35); 642 TextLabel2->setFixedWidth( 35);
643 Layout15->addWidget( TextLabel2 ); 643 Layout15->addWidget( TextLabel2 );
644 644
645 TextLabel3 = new QLabel( tab_5, "OutputLabel" ); 645 TextLabel3 = new QLabel( tab_5, "OutputLabel" );
646 TextLabel3->setText( tr( "Out" ) ); 646 TextLabel3->setText( tr( "Out" ) );
647 Layout15b->addWidget( TextLabel3 ); 647 Layout15b->addWidget( TextLabel3 );
648 648
649 InputSlider = new QSlider( -100, 0, 10, 0, QSlider::Vertical, tab_5, (const char *) "InputSlider" ); 649 InputSlider = new QSlider( -100, 0, 10, 0, QSlider::Vertical, tab_5, (const char *) "InputSlider" );
650 InputSlider->setTickmarks( QSlider::Both); 650 InputSlider->setTickmarks( QSlider::Both);
651 Layout15->addWidget( InputSlider); 651 Layout15->addWidget( InputSlider);
652 652
653 OutputSlider = new QSlider( -100,0,10,0, QSlider::Vertical,tab_5,(const char *) "OutputSlider" ); 653 OutputSlider = new QSlider( -100,0,10,0, QSlider::Vertical,tab_5,(const char *) "OutputSlider" );
654 OutputSlider->setTickmarks( QSlider::Both); 654 OutputSlider->setTickmarks( QSlider::Both);
655 655
656 Layout15b->addWidget( OutputSlider ); 656 Layout15b->addWidget( OutputSlider );
657 657
658 outMuteCheckBox = new QCheckBox ( tr("mute"), tab_5 ); 658 outMuteCheckBox = new QCheckBox ( tr("mute"), tab_5 );
659 Layout15->addWidget( outMuteCheckBox ); 659 Layout15->addWidget( outMuteCheckBox );
660 660
661 inMuteCheckBox = new QCheckBox ( tr("mute"), tab_5 ); 661 inMuteCheckBox = new QCheckBox ( tr("mute"), tab_5 );
662 inMuteCheckBox-> setFocusPolicy ( QWidget::NoFocus ); 662 inMuteCheckBox-> setFocusPolicy ( QWidget::NoFocus );
663 Layout15b->addWidget( inMuteCheckBox ); 663 Layout15b->addWidget( inMuteCheckBox );
664 664
665 665
666 Layout19a->addLayout( Layout15 ); 666 Layout19a->addLayout( Layout15 );
667 Layout19a->addLayout( Layout15b ); 667 Layout19a->addLayout( Layout15b );
668 668
669 fillDirectoryCombo(); 669 fillDirectoryCombo();
670 670
671 TabWidget->insertTab( tab_3, tr( "Options" ) ); 671 TabWidget->insertTab( tab_3, tr( "Options" ) );
672 672
673 TabWidget->insertTab( tab_5, tr( "Volume" ) ); 673 TabWidget->insertTab( tab_5, tr( "Volume" ) );
674 674
675 waveform = new Waveform( this, "waveform" ); 675 waveform = new Waveform( this, "waveform" );
676 waveform->setMinimumSize( QSize( 0, 50 ) ); 676 waveform->setMinimumSize( QSize( 0, 50 ) );
677 677
678 layout->addMultiCellWidget( waveform, 8, 8, 0, 8); 678 layout->addMultiCellWidget( waveform, 8, 8, 0, 8);
679 waveform->setBackgroundColor ( black ); 679 waveform->setBackgroundColor ( black );
680} 680}
681 681
682void QtRec::initIconView() { 682void QtRec::initIconView() {
683 ListView1->clear(); 683 ListView1->clear();
684 Config cfg("OpieRec"); 684 Config cfg("OpieRec");
685 cfg.setGroup("Sounds"); 685 cfg.setGroup("Sounds");
686 QString temp; 686 QString temp;
687 QPixmap image0( ( const char** ) image0_data ); 687 QPixmap image0( ( const char** ) image0_data );
688 688
689 int nFiles = cfg.readNumEntry("NumberofFiles",0); 689 int nFiles = cfg.readNumEntry("NumberofFiles",0);
690// owarn << "init number of files " << nFiles << "" << oendl; 690// owarn << "init number of files " << nFiles << "" << oendl;
691 691
692 for(int i = 1; i <= nFiles; i++) { 692 for(int i = 1; i <= nFiles; i++) {
693 693
694 QListViewItem * item; 694 QListViewItem * item;
695 QString fileS, mediaLocation, fileDate, filePath; 695 QString fileS, mediaLocation, fileDate, filePath;
696 696
697 temp.sprintf( "%d",i); 697 temp.sprintf( "%d",i);
698 temp = cfg.readEntry( temp,""); //reads currentFile 698 temp = cfg.readEntry( temp,""); //reads currentFile
699 filePath = cfg.readEntry( temp,""); //currentFileName 699 filePath = cfg.readEntry( temp,""); //currentFileName
700 700
701 QFileInfo info(filePath); 701 QFileInfo info(filePath);
702 fileDate = info.lastModified().toString(); 702 fileDate = info.lastModified().toString();
703 703
704 fileS = cfg.readEntry( filePath, "0" );// file length in seconds 704 fileS = cfg.readEntry( filePath, "0" );// file length in seconds
705 mediaLocation = getStorage( filePath); 705 mediaLocation = getStorage( filePath);
706 if( info.exists()) { 706 if( info.exists()) {
707 // owarn << "new item " << temp << oendl; 707 // owarn << "new item " << temp << oendl;
708 item = new QListViewItem( ListView1, temp, fileS /*, mediaLocation, fileDate*/); 708 item = new QListViewItem( ListView1, temp, fileS /*, mediaLocation, fileDate*/);
709 item->setPixmap( 0, image0); 709 item->setPixmap( 0, image0);
710 if( currentFileName == filePath) 710 if( currentFileName == filePath)
711 ListView1->setSelected( item, true); 711 ListView1->setSelected( item, true);
712 } 712 }
713 } 713 }
714} 714}
715 715
716void QtRec::initConnections() { 716void QtRec::initConnections() {
717 connect(qApp,SIGNAL(aboutToQuit()),SLOT(cleanUp())); 717 connect(qApp,SIGNAL(aboutToQuit()),SLOT(cleanUp()));
718 718
719 connect(toBeginningButton,SIGNAL(pressed()),this,SLOT(rewindPressed())); 719 connect(toBeginningButton,SIGNAL(pressed()),this,SLOT(rewindPressed()));
720 connect(toBeginningButton,SIGNAL(released()),this,SLOT(rewindReleased())); 720 connect(toBeginningButton,SIGNAL(released()),this,SLOT(rewindReleased()));
721 connect(toEndButton,SIGNAL(pressed()),this,SLOT(FastforwardPressed())); 721 connect(toEndButton,SIGNAL(pressed()),this,SLOT(FastforwardPressed()));
722 connect(toEndButton,SIGNAL(released()),this,SLOT(FastforwardReleased())); 722 connect(toEndButton,SIGNAL(released()),this,SLOT(FastforwardReleased()));
723
723 connect(deleteSoundButton,SIGNAL(released()),this,SLOT(deleteSound())); 724 connect(deleteSoundButton,SIGNAL(released()),this,SLOT(deleteSound()));
725
724 connect(Stop_PushButton,SIGNAL(released()),this,SLOT(doPlayBtn())); 726 connect(Stop_PushButton,SIGNAL(released()),this,SLOT(doPlayBtn()));
727 // connect(Stop_PushButton,SIGNAL(released()),this,SLOT(doPlayBtn()));
728
729 // connect(Rec_PushButton,SIGNAL(released()),this,SIGNAL(startRecording()));
725 connect(Rec_PushButton,SIGNAL(released()),this,SLOT(newSound())); 730 connect(Rec_PushButton,SIGNAL(released()),this,SLOT(newSound()));
726 731
727 connect(TabWidget,SIGNAL(currentChanged(QWidget*)),this,SLOT(thisTab(QWidget*))); 732 connect(TabWidget,SIGNAL(currentChanged(QWidget*)),this,SLOT(thisTab(QWidget*)));
728 733
729 connect(OutputSlider,SIGNAL(sliderReleased()),this,SLOT(changedOutVolume())); 734 connect(OutputSlider,SIGNAL(sliderReleased()),this,SLOT(changedOutVolume()));
730 connect(InputSlider,SIGNAL(sliderReleased()),this,SLOT(changedInVolume())); 735 connect(InputSlider,SIGNAL(sliderReleased()),this,SLOT(changedInVolume()));
731 736
732 connect(sampleRateComboBox,SIGNAL(activated(int)),this,SLOT(changesamplerateCombo(int))); 737 connect(sampleRateComboBox,SIGNAL(activated(int)),this,SLOT(changesamplerateCombo(int)));
733 connect(bitRateComboBox,SIGNAL(activated(int)),this,SLOT(changebitrateCombo(int))); 738 connect(bitRateComboBox,SIGNAL(activated(int)),this,SLOT(changebitrateCombo(int)));
734 connect(directoryComboBox,SIGNAL(activated(int)),this,SLOT(changeDirCombo(int))); 739 connect(directoryComboBox,SIGNAL(activated(int)),this,SLOT(changeDirCombo(int)));
735 connect(sizeLimitCombo,SIGNAL(activated(int)),this,SLOT(changeSizeLimitCombo(int))); 740 connect(sizeLimitCombo,SIGNAL(activated(int)),this,SLOT(changeSizeLimitCombo(int)));
736 741
737 connect(stereoCheckBox,SIGNAL(toggled(bool)),this,SLOT(changeStereoCheck(bool))); 742 connect(stereoCheckBox,SIGNAL(toggled(bool)),this,SLOT(changeStereoCheck(bool)));
738 connect(outMuteCheckBox,SIGNAL(toggled(bool)),this,SLOT(doVolMuting(bool))); 743 connect(outMuteCheckBox,SIGNAL(toggled(bool)),this,SLOT(doVolMuting(bool)));
739 connect(inMuteCheckBox,SIGNAL(toggled(bool)),this,SLOT(doMicMuting(bool))); 744 connect(inMuteCheckBox,SIGNAL(toggled(bool)),this,SLOT(doMicMuting(bool)));
740 745
741 connect(ListView1,SIGNAL(doubleClicked(QListViewItem*)),this,SLOT(itClick(QListViewItem*))); 746 connect(ListView1,SIGNAL(doubleClicked(QListViewItem*)),this,SLOT(itClick(QListViewItem*)));
742 connect(ListView1,SIGNAL(mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),this,SLOT(listPressed(int,QListViewItem*,const QPoint&,int))); 747 connect(ListView1,SIGNAL(mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),this,SLOT(listPressed(int,QListViewItem*,const QPoint&,int)));
743 748
744 connect(timeSlider,SIGNAL(sliderMoved(int)),this,SLOT(changeTimeSlider(int))); 749 connect(timeSlider,SIGNAL(sliderMoved(int)),this,SLOT(changeTimeSlider(int)));
745 connect(timeSlider,SIGNAL(sliderPressed()),this,SLOT(timeSliderPressed())); 750 connect(timeSlider,SIGNAL(sliderPressed()),this,SLOT(timeSliderPressed()));
746 connect(timeSlider,SIGNAL(sliderReleased()),this,SLOT(timeSliderReleased())); 751 connect(timeSlider,SIGNAL(sliderReleased()),this,SLOT(timeSliderReleased()));
747 752
748 connect(compressionCheckBox,SIGNAL(toggled(bool)),this,SLOT(compressionSelected(bool))); 753 connect(compressionCheckBox,SIGNAL(toggled(bool)),this,SLOT(compressionSelected(bool)));
749 connect(autoMuteCheckBox,SIGNAL(toggled(bool)),this,SLOT(slotAutoMute(bool))); 754 connect(autoMuteCheckBox,SIGNAL(toggled(bool)),this,SLOT(slotAutoMute(bool)));
750} 755}
751 756
752void QtRec::initConfig() { 757void QtRec::initConfig() {
753 int index, fred, i; 758 int index, fred, i;
754 Config cfg("OpieRec"); 759 Config cfg("OpieRec");
755 cfg.setGroup("Settings"); 760 cfg.setGroup("Settings");
756 761
757 index = cfg.readNumEntry("samplerate",22050); 762 index = cfg.readNumEntry("samplerate",22050);
758 bool ok; 763 bool ok;
759 764
760 for(int ws=0;ws<sampleRateComboBox->count();ws++) { 765 for(int ws=0;ws<sampleRateComboBox->count();ws++) {
761 fred = sampleRateComboBox->text(ws).toInt(&ok, 10); 766 fred = sampleRateComboBox->text(ws).toInt(&ok, 10);
762 if( index == fred) { 767 if( index == fred) {
763 filePara.sampleRate = fred; 768 filePara.sampleRate = fred;
764 sampleRateComboBox->setCurrentItem(ws); 769 sampleRateComboBox->setCurrentItem(ws);
765 } 770 }
766 } 771 }
767 772
768 i = cfg.readNumEntry("bitrate",16); 773 i = cfg.readNumEntry("bitrate",16);
769 if(i == 16) 774 if(i == 16)
770 bitRateComboBox->setCurrentItem( 1); 775 bitRateComboBox->setCurrentItem( 1);
771 else if(i == 24) 776 else if(i == 24)
772 bitRateComboBox->setCurrentItem( 2); 777 bitRateComboBox->setCurrentItem( 2);
773 else if(i == 32) 778 else if(i == 32)
774 bitRateComboBox->setCurrentItem( 3); 779 bitRateComboBox->setCurrentItem( 3);
775 else 780 else
776 bitRateComboBox->setCurrentItem( 0); 781 bitRateComboBox->setCurrentItem( 0);
777 782
778 filePara.resolution = i; 783 filePara.resolution = i;
779 784
780 i = cfg.readNumEntry("sizeLimit", 5 ); 785 i = cfg.readNumEntry("sizeLimit", 5 );
781 QString temp; 786 QString temp;
782 sizeLimitCombo->setCurrentItem((i/5)); 787 sizeLimitCombo->setCurrentItem((i/5));
783 788
784 stereoCheckBox->setChecked( cfg.readBoolEntry("stereo", 1)); 789 stereoCheckBox->setChecked( cfg.readBoolEntry("stereo", 1));
785 if( stereoCheckBox->isChecked()) { 790 if( stereoCheckBox->isChecked()) {
786 filePara.channels = 2; 791 filePara.channels = 2;
787 } else { 792 } else {
788 filePara.channels = 1; 793 filePara.channels = 1;
789 } 794 }
790 795
791 compressionCheckBox->setChecked( cfg.readBoolEntry("wavCompression",1)); 796 compressionCheckBox->setChecked( cfg.readBoolEntry("wavCompression",1));
792 if( compressionCheckBox->isChecked()) { 797 if( compressionCheckBox->isChecked()) {
793 bitRateComboBox->setCurrentItem(1); 798 bitRateComboBox->setCurrentItem(1);
794 bitRateComboBox->setEnabled(false); 799 bitRateComboBox->setEnabled(false);
795 filePara.resolution=16; 800 filePara.resolution=16;
796 } 801 }
797 802
798 autoMuteCheckBox->setChecked( cfg.readBoolEntry("useAutoMute",0)); 803 autoMuteCheckBox->setChecked( cfg.readBoolEntry("useAutoMute",0));
799 if( autoMuteCheckBox->isChecked()) 804 if( autoMuteCheckBox->isChecked())
800 slotAutoMute(true); 805 slotAutoMute(true);
801 else 806 else
802 slotAutoMute(false); 807 slotAutoMute(false);
803 808
804 Config cofg( "qpe"); 809 Config cofg( "qpe");
805 cofg.setGroup( "Volume"); 810 cofg.setGroup( "Volume");
806 outMuteCheckBox->setChecked( cofg.readBoolEntry( "Mute",0)); 811 outMuteCheckBox->setChecked( cofg.readBoolEntry( "Mute",0));
807 inMuteCheckBox->setChecked( cofg.readBoolEntry( "MicMute",0)); 812 inMuteCheckBox->setChecked( cofg.readBoolEntry( "MicMute",0));
808} 813}
809 814
810void QtRec::stop() { 815void QtRec::stop() {
811 // owarn << "STOP" << oendl; 816 // owarn << "STOP" << oendl;
812 setRecordButton(false); 817 setRecordButton(false);
813 818
814 if( !recording) 819 if( !recording) {
820 emit stopPlaying();
815 endPlaying(); 821 endPlaying();
816 else 822 } else {
823 emit stopRecording();
817 endRecording(); 824 endRecording();
825 }
818 timeSlider->setValue(0); 826 timeSlider->setValue(0);
819} 827}
820 828
821void QtRec::doPlayBtn() { 829void QtRec::doPlayBtn() {
822 830
823 if(!stopped) { 831 if(!stopped) {
824 // playLabel2->setText(tr("Play")); 832 // playLabel2->setText(tr("Play"));
825 stop(); 833 stop();
826 } else { 834 } else {
827 if(ListView1->currentItem() == 0) return; 835 if(ListView1->currentItem() == 0) return;
828 // playLabel2->setText(tr("Stop")); 836 // playLabel2->setText(tr("Stop"));
829 currentFile = ListView1->currentItem()->text(0); 837 currentFile = ListView1->currentItem()->text(0);
830 start(); 838 start();
831 } 839 }
832} 840}
833 841
834void QtRec::start() { //play 842void QtRec::start() { //play
835 if( stopped) { 843 if( stopped) {
836 QPixmap image3( ( const char** ) image3_data ); 844 QPixmap image3( ( const char** ) image3_data );
837 Stop_PushButton->setPixmap( image3 ); 845 Stop_PushButton->setPixmap( image3 );
838 Stop_PushButton->setDown( true); 846 Stop_PushButton->setDown( true);
839 stopped = false; 847 stopped = false;
840 paused = false; 848 paused = false;
841 secCount = 1; 849 secCount = 1;
842 850
843 if( openPlayFile()) 851 if( openPlayFile())
844 if( setupAudio( false)) //recording is false 852 if( setupAudio( false)) //recording is false
845 doPlay(); 853 doPlay();
846 } 854 }
847} 855}
848 856
849bool QtRec::rec() { //record 857bool QtRec::rec() { //record
850 QString timeString; 858 QString timeString;
851 timeString.sprintf("%.0f", 0.0); 859 timeString.sprintf("%.0f", 0.0);
852 // timeLabel->setText( timeString+ " seconds"); 860 // timeLabel->setText( timeString+ " seconds");
853 if(!stopped) { 861 if(!stopped) {
854 monitoring = true; 862 monitoring = true;
855 return false; 863 return false;
856 } else { 864 } else {
857 secCount = 1; 865 secCount = 1;
858 // playLabel2->setText(tr("Stop")); 866 // playLabel2->setText(tr("Stop"));
859 monitoring = false; 867 monitoring = false;
860 setRecordButton( true); 868 setRecordButton( true);
861 869
862 if( setupAudio( true)) 870 if( setupAudio( true))
863 if(setUpFile()) { 871 if(setUpFile()) {
864 int fileSize = 0; 872 int fileSize = 0;
865 Config cfg("OpieRec"); 873 Config cfg("OpieRec");
866 cfg.setGroup("Settings"); 874 cfg.setGroup("Settings");
867// odebug << "<<<<<<<Device bits " << soundDevice->getDeviceBits()
868// << ", device rate " << soundDevice->getDeviceRate()
869// << ", device channels " << soundDevice->getDeviceChannels() << oendl;
870
871 //filePara.sampleRate = cfg.readNumEntry("samplerate", 22050);
872// odebug << "sample rate is " << filePara.sampleRate << "" << oendl;
873 filePara.SecondsToRecord = getCurrentSizeLimit(); 875 filePara.SecondsToRecord = getCurrentSizeLimit();
874
875// odebug << "size limit " << filePara.SecondsToRecord << " sec" << oendl;
876 int diskSize = checkDiskSpace( (const QString &) wavFile->trackName()); 876 int diskSize = checkDiskSpace( (const QString &) wavFile->trackName());
877 877
878 if( filePara.SecondsToRecord == 0) { 878 if( filePara.SecondsToRecord == 0) {
879 fileSize = diskSize; 879 fileSize = diskSize;
880 } else if( filePara.format == WAVE_FORMAT_PCM) { 880 } else if( filePara.format == WAVE_FORMAT_PCM) {
881// odebug << "WAVE_FORMAT_PCM" << oendl; 881// odebug << "WAVE_FORMAT_PCM" << oendl;
882 fileSize = (filePara.SecondsToRecord ) * filePara.channels 882 fileSize = (filePara.SecondsToRecord ) * filePara.channels
883 * filePara.sampleRate * ( filePara.resolution / 8) + 1000; 883 * filePara.sampleRate * ( filePara.resolution / 8) + 1000;
884 } else { 884 } else {
885// odebug << "WAVE_FORMAT_DVI_ADPCM" << oendl; 885// odebug << "WAVE_FORMAT_DVI_ADPCM" << oendl;
886 fileSize = ((filePara.SecondsToRecord) * filePara.channels 886 fileSize = ((filePara.SecondsToRecord) * filePara.channels
887 * filePara.sampleRate * ( filePara.resolution / 8) ) / 4 + 250; 887 * filePara.sampleRate * ( filePara.resolution / 8) ) / 4 + 250;
888 } 888 }
889 889
890 filePara.samplesToRecord = fileSize; 890 filePara.samplesToRecord = fileSize;
891 odebug << "filesize should be " << filePara.samplesToRecord 891 odebug << "filesize should be " << filePara.samplesToRecord
892 << ", bits " << filePara.resolution << ", rate " << filePara.sampleRate; 892 << ", bits " << filePara.resolution << ", rate " << filePara.sampleRate;
893 if( paused) { 893 if( paused) {
894 paused = false; 894 paused = false;
895 } 895 }
896 // else { 896 // else {
897 odebug << "Setting timeslider " << filePara.samplesToRecord << "" << oendl; 897 odebug << "Setting timeslider " << filePara.samplesToRecord << "" << oendl;
898 // if(fileSize != 0) 898 // if(fileSize != 0)
899 timeSlider->setRange(0, filePara.samplesToRecord); 899 timeSlider->setRange(0, filePara.samplesToRecord);
900 // } 900 // }
901 901
902 if( diskSize < fileSize/1024) { 902 if( diskSize < fileSize/1024) {
903 QMessageBox::warning(this, 903 QMessageBox::warning(this,
904 tr("Low Disk Space"), 904 tr("Low Disk Space"),
905 tr("You are running low of\nrecording space\n" 905 tr("You are running low of\nrecording space\n"
906 "or a card isn't being recognized")); 906 "or a card isn't being recognized"));
907 stopped = true; //we need to be stopped 907 stopped = true; //we need to be stopped
908 stop(); 908 stop();
909 } else { 909 } else {
910 QString msg; 910 QString msg;
911 msg.sprintf("%d, %d, %d", filePara.sampleRate, filePara.channels, filePara.resolution); 911 msg.sprintf("%d, %d, %d", filePara.sampleRate, filePara.channels, filePara.resolution);
912#ifdef DEV_VERSION 912#ifdef DEV_VERSION
913 setCaption( msg); 913 setCaption( msg);
914#endif 914#endif
915 filePara.fileName=currentFile.latin1(); 915 filePara.fileName=currentFile.latin1();
916 odebug << "Start recording" << oendl; 916 odebug << "Start recording" << oendl;
917 stopped = false; 917 stopped = false;
918 918
919#ifdef THREADED 919#ifdef THREADED
920 odebug << "Start recording thread" << oendl; 920 odebug << "Start recording thread" << oendl;
921 pthread_t thread1; 921 pthread_t thread1;
922 pthread_create( &thread1, NULL, (void * (*)(void *))quickRec, NULL/* &*/); 922 pthread_create( &thread1, NULL, (void * (*)(void *))quickRec, NULL/* &*/);
923#endif 923#endif
924 toBeginningButton->setEnabled( false); 924 toBeginningButton->setEnabled( false);
925 toEndButton->setEnabled( false); 925 toEndButton->setEnabled( false);
926 926
927 startTimer(1000); 927 startTimer(1000);
928#ifndef THREADED 928#ifndef THREADED
929 quickRec(); 929 quickRec();
930#endif 930#endif
931 } 931 }
932 } //end setUpFile 932 } //end setUpFile
933 } //end setupAudio 933 } //end setupAudio
934 return true; 934 return true;
935} 935}
936/* 936/*
937 This happens when a tab is selected*/ 937 This happens when a tab is selected*/
938void QtRec::thisTab(QWidget* widg) { 938void QtRec::thisTab(QWidget* widg) {
939 if(widg != NULL) { 939 if(widg != NULL) {
940 int index = TabWidget->currentPageIndex(); 940 int index = TabWidget->currentPageIndex();
941 941
942 if(index == 0) { //file page 942 if(index == 0) { //file page
943 } 943 }
944 944
945 if(index == 1) { //control page 945 if(index == 1) { //control page
946 fillDirectoryCombo(); 946 fillDirectoryCombo();
947// soundDevice->getOutVol(); 947// soundDevice->getOutVol();
948// soundDevice->getInVol(); 948// soundDevice->getInVol();
949 } 949 }
950 950
951 if( index==2) { //help page 951 if( index==2) { //help page
952 } 952 }
953 953
954 qApp->processEvents(); 954 qApp->processEvents();
955 update(); 955 update();
956 } 956 }
957} 957}
958 958
959void QtRec::getOutVol( ) { 959void QtRec::getOutVol( ) {
960 filePara.outVol = soundDevice->getOutVolume(); 960 filePara.outVol = soundDevice->getOutVolume();
961// odebug << "out vol " << filePara.outVol << "" << oendl; 961// odebug << "out vol " << filePara.outVol << "" << oendl;
962 OutputSlider->setValue( -filePara.outVol); 962 OutputSlider->setValue( -filePara.outVol);
963} 963}
964 964
965void QtRec::getInVol() { 965void QtRec::getInVol() {
966 filePara.inVol = soundDevice->getInVolume(); 966 filePara.inVol = soundDevice->getInVolume();
967// odebug << "in vol " << filePara.inVol << "" << oendl; 967// odebug << "in vol " << filePara.inVol << "" << oendl;
968 InputSlider->setValue( -filePara.inVol); 968 InputSlider->setValue( -filePara.inVol);
969} 969}
970 970
971void QtRec::changedOutVolume() { 971void QtRec::changedOutVolume() {
972 soundDevice->changedOutVolume( -OutputSlider->value()); 972 soundDevice->changedOutVolume( -OutputSlider->value());
973} 973}
974 974
975void QtRec::changedInVolume( ) { 975void QtRec::changedInVolume( ) {
976 soundDevice->changedInVolume( -InputSlider->value()); 976 soundDevice->changedInVolume( -InputSlider->value());
977} 977}
978 978
979 979
980bool QtRec::setupAudio( bool b) { 980bool QtRec::setupAudio( bool b) {
981 bool ok; 981 bool ok;
982 int sampleformat, stereo, flags; 982 int sampleformat, stereo, flags;
983 QString dspString, mixerString; 983 QString dspString, mixerString;
984 984
985 filePara.resolution = bitRateComboBox->currentText().toInt( &ok,10); //16 985 filePara.resolution = bitRateComboBox->currentText().toInt( &ok,10); //16
986 986
987 if( !b) { 987 if( !b) {
988// we want to play 988// we want to play
989#ifdef PDAUDIO //ALSA 989#ifdef PDAUDIO //ALSA
990 if( filePara.resolution == 16 || compressionCheckBox->isChecked() ) { 990 if( filePara.resolution == 16 || compressionCheckBox->isChecked() ) {
991 sampleformat = SND_PCM_FORMAT_S16; 991 sampleformat = SND_PCM_FORMAT_S16;
992 filePara.resolution = 16; 992 filePara.resolution = 16;
993 } else if( filePara.resolution == 24 || compressionCheckBox->isChecked() ) { 993 } else if( filePara.resolution == 24 || compressionCheckBox->isChecked() ) {
994 sampleformat = SND_PCM_FORMAT_S24; 994 sampleformat = SND_PCM_FORMAT_S24;
995 filePara.resolution = 24; 995 filePara.resolution = 24;
996 } else if( filePara.resolution == 32 || compressionCheckBox->isChecked() ) { 996 } else if( filePara.resolution == 32 || compressionCheckBox->isChecked() ) {
997 sampleformat = SND_PCM_FORMAT_S32; 997 sampleformat = SND_PCM_FORMAT_S32;
998 filePara.resolution = 32; 998 filePara.resolution = 32;
999 } else { 999 } else {
1000 sampleformat = SND_PCM_FORMAT_U8; 1000 sampleformat = SND_PCM_FORMAT_U8;
1001 filePara.resolution = 8; 1001 filePara.resolution = 8;
1002 } 1002 }
1003#else 1003#else
1004// we want to play 1004// we want to play
1005 if( filePara.resolution == 16 || compressionCheckBox->isChecked() ) { 1005 if( filePara.resolution == 16 || compressionCheckBox->isChecked() ) {
1006 sampleformat = AFMT_S16_LE; 1006 sampleformat = AFMT_S16_LE;
1007 filePara.resolution = 16; 1007 filePara.resolution = 16;
1008 } else { 1008 } else {
1009 sampleformat = AFMT_U8; 1009 sampleformat = AFMT_U8;
1010 filePara.resolution = 8; 1010 filePara.resolution = 8;
1011 } 1011 }
1012#endif 1012#endif
1013 1013
1014 stereo = filePara.channels; 1014 stereo = filePara.channels;
1015 flags = O_WRONLY; 1015 flags = O_WRONLY;
1016 recording = false; 1016 recording = false;
1017 } else { // we want to record 1017 } else { // we want to record
1018 1018
1019#ifdef PDAUDIO //ALSA 1019#ifdef PDAUDIO //ALSA
1020 if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "16") 1020 if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "16")
1021 sampleformat = SND_PCM_FORMAT_S16; 1021 sampleformat = SND_PCM_FORMAT_S16;
1022 else if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "24") 1022 else if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "24")
1023 sampleformat = SND_PCM_FORMAT_S24; 1023 sampleformat = SND_PCM_FORMAT_S24;
1024 else if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "32") 1024 else if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "32")
1025 sampleformat = SND_PCM_FORMAT_S32; 1025 sampleformat = SND_PCM_FORMAT_S32;
1026 else 1026 else
1027 sampleformat = SND_PCM_FORMAT_U8; 1027 sampleformat = SND_PCM_FORMAT_U8;
1028 1028
1029#else 1029#else
1030 if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "16") 1030 if( !bitRateComboBox->isEnabled() || bitRateComboBox->currentText() == "16")
1031 sampleformat = AFMT_S16_LE; 1031 sampleformat = AFMT_S16_LE;
1032 else 1032 else
1033 sampleformat = AFMT_U8; 1033 sampleformat = AFMT_U8;
1034 1034
1035 if( !compressionCheckBox->isChecked()) { 1035 if( !compressionCheckBox->isChecked()) {
1036 filePara.format = WAVE_FORMAT_PCM; 1036 filePara.format = WAVE_FORMAT_PCM;
1037// odebug << "WAVE_FORMAT_PCM" << oendl; 1037// odebug << "WAVE_FORMAT_PCM" << oendl;
1038 } else { 1038 } else {
1039 filePara.format = WAVE_FORMAT_DVI_ADPCM; 1039 filePara.format = WAVE_FORMAT_DVI_ADPCM;
1040 sampleformat = AFMT_S16_LE; 1040 sampleformat = AFMT_S16_LE;
1041// odebug << "WAVE_FORMAT_DVI_ADPCM" << oendl; 1041// odebug << "WAVE_FORMAT_DVI_ADPCM" << oendl;
1042 } 1042 }
1043#endif 1043#endif
1044 1044
1045 stereo = filePara.channels; 1045 stereo = filePara.channels;
1046// filePara.sampleRate = sampleRateComboBox->currentText().toInt( &ok,10);//44100; 1046// filePara.sampleRate = sampleRateComboBox->currentText().toInt( &ok,10);//44100;
1047 flags= O_RDWR; 1047 flags= O_RDWR;
1048// flags= O_RDONLY; 1048// flags= O_RDONLY;
1049 recording = true; 1049 recording = true;
1050 } 1050 }
1051 1051
1052 // if(soundDevice) delete soundDevice;
1053 owarn << "<<<<<<<<<<<<<<<<<<<open dsp " << filePara.sampleRate << " " << filePara.channels << " " << sampleformat << "" << oendl; 1052 owarn << "<<<<<<<<<<<<<<<<<<<open dsp " << filePara.sampleRate << " " << filePara.channels << " " << sampleformat << "" << oendl;
1054 // owarn << "change waveform settings" << oendl; 1053 // owarn << "change waveform settings" << oendl;
1055 waveform->changeSettings( filePara.sampleRate, filePara.channels ); 1054 waveform->changeSettings( filePara.sampleRate, filePara.channels );
1056 1055
1057 soundDevice = new Device( this, b); //open rec 1056 soundDevice = new Device( this, b); //open rec
1058// soundDevice->openDsp(); 1057// soundDevice->openDsp();
1059 soundDevice->reset(); 1058 soundDevice->reset();
1060 1059
1061 odebug << "device has been made " << soundDevice->sd << "" << oendl; 1060 odebug << "device has been made " << soundDevice->sd << "" << oendl;
1062 1061
1063 ////////////////// <<<<<<<<<<<<>>>>>>>>>>>> 1062 ////////////////// <<<<<<<<<<<<>>>>>>>>>>>>
1064 soundDevice->setDeviceFormat( sampleformat); 1063 soundDevice->setDeviceFormat( sampleformat);
1065 soundDevice->setDeviceChannels( filePara.channels); 1064 soundDevice->setDeviceChannels( filePara.channels);
1066 soundDevice->setDeviceRate( filePara.sampleRate); 1065 soundDevice->setDeviceRate( filePara.sampleRate);
1067 soundDevice->getDeviceFragSize(); 1066 soundDevice->getDeviceFragSize();
1068#ifdef QT_QWS_EBX 1067#ifdef QT_QWS_EBX
1069 int frag = FRAGSIZE; 1068 int frag = FRAGSIZE;
1070 soundDevice->setFragSize( frag); 1069 soundDevice->setFragSize( frag);
1071 soundDevice->getDeviceFragSize(); 1070 soundDevice->getDeviceFragSize();
1072#endif 1071#endif
1073 ///////////////// 1072 /////////////////
1074 filePara.sd = soundDevice->sd; 1073 filePara.sd = soundDevice->sd;
1075 1074
1076 if ( filePara.sd == -1) { 1075 if ( filePara.sd == -1) {
1077 1076
1078 monitoring = false; 1077 monitoring = false;
1079 stopped = true; 1078 stopped = true;
1080 update(); 1079 update();
1081 setCaption( tr( "OpieRecord " )+ QString::number(VERSION) ); 1080 setCaption( tr( "OpieRecord " )+ QString::number(VERSION) );
1082 return false; 1081 return false;
1083 } 1082 }
1084 if(autoMute) 1083 if(autoMute)
1085 doMute(false); 1084 doMute(false);
1086 1085
1087 return true; 1086 return true;
1088} 1087}
1089 1088
1090 1089
1091bool QtRec::setUpFile() { //setup file for recording 1090bool QtRec::setUpFile() { //setup file for recording
1092// odebug << "Setting up wavfile" << oendl;
1093// if(wavFile) delete wavFile;
1094 wavFile = new WavFile( this, (const QString &)"", 1091 wavFile = new WavFile( this, (const QString &)"",
1095 true, 1092 true,
1096 filePara.sampleRate, 1093 filePara.sampleRate,
1097 filePara.channels, 1094 filePara.channels,
1098 filePara.resolution, 1095 filePara.resolution,
1099 filePara.format); 1096 filePara.format);
1100 1097
1101 filePara.fd = wavFile->wavHandle(); 1098 filePara.fd = wavFile->wavHandle();
1102 if(filePara.fd == -1) { 1099 if(filePara.fd == -1) {
1103 return false; 1100 return false;
1104 } else { 1101 } else {
1105// filePara.channels=1;
1106 } 1102 }
1107 return true; 1103 return true;
1108} 1104}
1109 1105
1110/// <<<<<<<<<<<<<<<< PLAY >>>>>>>>>>>>>>>>>>> 1106/// <<<<<<<<<<<<<<<< PLAY >>>>>>>>>>>>>>>>>>>
1111bool QtRec::doPlay() { 1107bool QtRec::doPlay() {
1112 1108
1113 if( !paused) { 1109 if( !paused) {
1114 total = 0; 1110 total = 0;
1115 filePara.numberOfRecordedSeconds = 0; 1111 filePara.numberOfRecordedSeconds = 0;
1116 } else { 1112 } else {
1117 paused = false; 1113 paused = false;
1118 secCount = (int)filePara.numberOfRecordedSeconds; 1114 secCount = (int)filePara.numberOfRecordedSeconds;
1119 } 1115 }
1120 playing = true; 1116 playing = true;
1121 stopped = false; 1117 stopped = false;
1122 recording = false; 1118 recording = false;
1123 1119
1124 QString num; 1120 QString num;
1125 odebug << "Play number of samples " << filePara.numberSamples << "" << oendl; 1121 odebug << "Play number of samples " << filePara.numberSamples << "" << oendl;
1126 1122
1127// timeSlider->setRange( 0, filePara.numberSamples); 1123// timeSlider->setRange( 0, filePara.numberSamples);
1128 1124
1129 timeString.sprintf("%f", filePara.numberOfRecordedSeconds); 1125 timeString.sprintf("%f", filePara.numberOfRecordedSeconds);
1130 // timeLabel->setText( timeString+ tr(" seconds")); 1126 // timeLabel->setText( timeString+ tr(" seconds"));
1131 1127
1132 QString msg; 1128 QString msg;
1133 msg.sprintf("%d, %d, %d", 1129 msg.sprintf("%d, %d, %d",
1134 filePara.sampleRate, 1130 filePara.sampleRate,
1135 filePara.channels, 1131 filePara.channels,
1136 filePara.resolution); 1132 filePara.resolution);
1137#ifdef DEV_VERSION 1133#ifdef DEV_VERSION
1138 setCaption( msg); 1134 setCaption( msg);
1139#endif 1135#endif
1140 1136
1141 startTimer( 1000); 1137 startTimer( 1000);
1142#ifdef THREADED 1138#ifdef THREADED
1143 pthread_t thread2; 1139 pthread_t thread2;
1144 pthread_create( &thread2, NULL, (void * (*)(void *))playIt, NULL/* &*/); 1140 pthread_create( &thread2, NULL, (void * (*)(void *))playIt, NULL/* &*/);
1145#endif 1141#endif
1146 1142
1147 toBeginningButton->setEnabled( false); 1143 toBeginningButton->setEnabled( false);
1148 toEndButton->setEnabled( false); 1144 toEndButton->setEnabled( false);
1149#ifndef THREADED 1145#ifndef THREADED
1150 playIt(); 1146 playIt();
1151#endif 1147#endif
1152 return true; 1148 return true;
1153} 1149}
1154 1150
1155 1151
1156void QtRec::changebitrateCombo(int i) { 1152void QtRec::changebitrateCombo(int i) {
1157 Config cfg("OpieRec"); 1153 Config cfg("OpieRec");
1158 cfg.setGroup("Settings"); 1154 cfg.setGroup("Settings");
1159 int bits = 0; 1155 int bits = 0;
1160 if( i == 1) { bits = 16; } 1156 if( i == 1) { bits = 16; }
1161 else if( i == 2) { bits = 24; } 1157 else if( i == 2) { bits = 24; }
1162 else if( i == 3) { bits = 32; } 1158 else if( i == 3) { bits = 32; }
1163 else { bits=8; } 1159 else { bits=8; }
1164 cfg.writeEntry("bitrate", bits); 1160 cfg.writeEntry("bitrate", bits);
1165 filePara.resolution = bits; 1161 filePara.resolution = bits;
1166 cfg.write(); 1162 cfg.write();
1167} 1163}
1168 1164
1169void QtRec::changesamplerateCombo(int i) { 1165void QtRec::changesamplerateCombo(int i) {
1170 Config cfg("OpieRec"); 1166 Config cfg("OpieRec");
1171 cfg.setGroup("Settings"); 1167 cfg.setGroup("Settings");
1172 int rate=0; 1168 int rate=0;
1173 bool ok; 1169 bool ok;
1174 rate = sampleRateComboBox->text(i).toInt(&ok, 10); 1170 rate = sampleRateComboBox->text(i).toInt(&ok, 10);
1175 cfg.writeEntry( "samplerate",rate); 1171 cfg.writeEntry( "samplerate",rate);
1176 filePara.sampleRate=rate; 1172 filePara.sampleRate=rate;
1177 odebug << "Change sample rate " << rate << "" << oendl; 1173 odebug << "Change sample rate " << rate << "" << oendl;
1178 cfg.write(); 1174 cfg.write();
1179} 1175}
1180 1176
1181 1177
1182void QtRec::changeDirCombo(int index) { 1178void QtRec::changeDirCombo(int index) {
1183 Config cfg("OpieRec"); 1179 Config cfg("OpieRec");
1184 cfg.setGroup("Settings"); 1180 cfg.setGroup("Settings");
1185 QString sName = directoryComboBox->text(index); 1181 QString sName = directoryComboBox->text(index);
1186 1182
1187 StorageInfo storageInfo; 1183 StorageInfo storageInfo;
1188 const QList<FileSystem> &fs = storageInfo.fileSystems(); 1184 const QList<FileSystem> &fs = storageInfo.fileSystems();
1189 QListIterator<FileSystem> it ( fs ); 1185 QListIterator<FileSystem> it ( fs );
1190 QString storage; 1186 QString storage;
1191 for( ; it.current(); ++it ){ 1187 for( ; it.current(); ++it ){
1192 if( sName == (*it)->name()+" "+ (*it)->path() || 1188 if( sName == (*it)->name()+" "+ (*it)->path() ||
1193 (*it)->name() == sName ) { 1189 (*it)->name() == sName ) {
1194 const QString path = (*it)->path(); 1190 const QString path = (*it)->path();
1195 recDir = path; 1191 recDir = path;
1196 cfg.writeEntry("directory", recDir); 1192 cfg.writeEntry("directory", recDir);
1197 odebug << "new rec dir "+recDir << oendl; 1193 odebug << "new rec dir "+recDir << oendl;
1198 } 1194 }
1199 } 1195 }
1200 cfg.write(); 1196 cfg.write();
1201} 1197}
1202 1198
1203 1199
1204void QtRec::changeSizeLimitCombo(int) { 1200void QtRec::changeSizeLimitCombo(int) {
1205 Config cfg("OpieRec"); 1201 Config cfg("OpieRec");
1206 cfg.setGroup("Settings"); 1202 cfg.setGroup("Settings");
1207 cfg.writeEntry("sizeLimit", getCurrentSizeLimit() ); 1203 cfg.writeEntry("sizeLimit", getCurrentSizeLimit() );
1208 cfg.write(); 1204 cfg.write();
1209} 1205}
1210 1206
1211void QtRec::newSound() { 1207void QtRec::newSound() {
1212 if( !rec()) { 1208 if( !rec()) {
1213 endRecording(); 1209 endRecording();
1214 deleteSound(); 1210 deleteSound();
1215 } 1211 }
1216} 1212}
1217 1213
1218void QtRec::itClick(QListViewItem *item) { 1214void QtRec::itClick(QListViewItem *item) {
1219 currentFile = item->text(0); 1215 currentFile = item->text(0);
1220 setCaption("OpieRecord "+currentFile); 1216 setCaption("OpieRecord "+currentFile);
1221} 1217}
1222 1218
1223void QtRec::deleteSound() { 1219void QtRec::deleteSound() {
1224 Config cfg("OpieRec"); 1220 Config cfg("OpieRec");
1225 cfg.setGroup("Sounds"); 1221 cfg.setGroup("Sounds");
1226 if( ListView1->currentItem() == NULL) 1222 if( ListView1->currentItem() == NULL)
1227 return; 1223 return;
1228// #ifndef DEV_VERSION
1229 // switch ( QMessageBox::warning(this,tr("Delete"),
1230 // tr("Do you really want to <font size=+2><B>DELETE</B></font>\nthe selected file?"),
1231 // tr("Yes"),tr("No"),0,1,1) ) {
1232 // case 0:
1233// #endif
1234 // {
1235 QString file = ListView1->currentItem()->text(0); 1224 QString file = ListView1->currentItem()->text(0);
1236 QString fileName; 1225 QString fileName;
1237 fileName = cfg.readEntry( file, ""); 1226 fileName = cfg.readEntry( file, "");
1238 QFile f( fileName); 1227 QFile f( fileName);
1239 if( f.exists()) 1228 if( f.exists())
1240 if( !f.remove()) 1229 if( !f.remove())
1241 QMessageBox::message( tr("Error"), tr("Could not remove file.")); 1230 QMessageBox::message( tr("Error"), tr("Could not remove file."));
1242 1231
1243 int nFiles = cfg.readNumEntry( "NumberofFiles",0); 1232 int nFiles = cfg.readNumEntry( "NumberofFiles",0);
1244 bool found = false; 1233 bool found = false;
1245 for(int i=0;i<nFiles+1;i++) { 1234 for(int i=0;i<nFiles+1;i++) {
1246 1235
1247 if( cfg.readEntry( QString::number(i),"").find( file,0,true) != -1) { 1236 if( cfg.readEntry( QString::number(i),"").find( file,0,true) != -1) {
1248 found = true; 1237 found = true;
1249 cfg.writeEntry( QString::number(i), cfg.readEntry( QString::number(i+1),"")); 1238 cfg.writeEntry( QString::number(i), cfg.readEntry( QString::number(i+1),""));
1250 } 1239 }
1251 if(found) 1240 if(found)
1252 cfg.writeEntry( QString::number(i), cfg.readEntry( QString::number(i+1),"")); 1241 cfg.writeEntry( QString::number(i), cfg.readEntry( QString::number(i+1),""));
1253 } 1242 }
1254 1243
1255 cfg.removeEntry( cfg.readEntry( file)); 1244 cfg.removeEntry( cfg.readEntry( file));
1256 cfg.removeEntry( file); 1245 cfg.removeEntry( file);
1257 cfg.writeEntry( "NumberofFiles", nFiles-1); 1246 cfg.writeEntry( "NumberofFiles", nFiles-1);
1258 cfg.write(); 1247 cfg.write();
1259 1248
1260 ListView1->takeItem( ListView1->currentItem() ); 1249 ListView1->takeItem( ListView1->currentItem() );
1261 delete ListView1->currentItem(); 1250 delete ListView1->currentItem();
1262 1251
1263 ListView1->clear(); 1252 ListView1->clear();
1264 ListView1->setSelected( ListView1->firstChild(), true); 1253 ListView1->setSelected( ListView1->firstChild(), true);
1265 initIconView(); 1254 initIconView();
1266 update(); 1255 update();
1267 setCaption( tr( "OpieRecord " )); 1256 setCaption( tr( "OpieRecord " ));
1268} 1257}
1269 1258
1270void QtRec::keyPressEvent( QKeyEvent *e) { 1259void QtRec::keyPressEvent( QKeyEvent *e) {
1271 1260
1272 switch ( e->key() ) { 1261 switch ( e->key() ) {
1273 // case Key_F1: 1262 // case Key_F1:
1274 // if(stopped && !recording) 1263 // if(stopped && !recording)
1275 // newSound(); 1264 // newSound();
1276 // else 1265 // else
1277 // stop(); 1266 // stop();
1278 // break; 1267 // break;
1279 // case Key_F2: { 1268 // case Key_F2: {
1280 // if( !e->isAutoRepeat()) 1269 // if( !e->isAutoRepeat())
1281 // rewindPressed(); 1270 // rewindPressed();
1282 // } 1271 // }
1283 // break; 1272 // break;
1284 // case Key_F3: { 1273 // case Key_F3: {
1285 // if( !e->isAutoRepeat()) 1274 // if( !e->isAutoRepeat())
1286 // FastforwardPressed(); 1275 // FastforwardPressed();
1287 // } 1276 // }
1288 // break; 1277 // break;
1289 1278
1290 ////////////////////////////// Zaurus keys 1279 ////////////////////////////// Zaurus keys
1291 case Key_F9: //activity 1280 case Key_F9: //activity
1292 break; 1281 break;
1293 case Key_F10: //contacts 1282 case Key_F10: //contacts
1294 break; 1283 break;
1295 case Key_F11: //menu 1284 case Key_F11: //menu
1296 break; 1285 break;
1297 case Key_F12: //home 1286 case Key_F12: //home
1298 break; 1287 break;
1299 case Key_F13: //mail 1288 case Key_F13: //mail
1300 break; 1289 break;
1301 case Key_Space: 1290 case Key_Space:
1302 break; 1291 break;
1303 case Key_Delete: 1292 case Key_Delete:
1304 break; 1293 break;
1305 case Key_Up: 1294 case Key_Up:
1306 // stop(); 1295 // stop();
1307 break; 1296 break;
1308 case Key_Down: 1297 case Key_Down:
1309 // newSound(); 1298 // newSound();
1310 break; 1299 break;
1311 case Key_Left: { 1300 case Key_Left: {
1312 odebug << "rewinding" << oendl; 1301 odebug << "rewinding" << oendl;
1313 if( !e->isAutoRepeat()) 1302 if( !e->isAutoRepeat())
1314 rewindPressed(); 1303 rewindPressed();
1315 } 1304 }
1316 break; 1305 break;
1317 case Key_Right: { 1306 case Key_Right: {
1318 if( !e->isAutoRepeat()) 1307 if( !e->isAutoRepeat())
1319 FastforwardPressed(); 1308 FastforwardPressed();
1320 } 1309 }
1321 break; 1310 break;
1322 } 1311 }
1323} 1312}
1324 1313
1325void QtRec::keyReleaseEvent( QKeyEvent *e) { 1314void QtRec::keyReleaseEvent( QKeyEvent *e) {
1326 switch ( e->key() ) { 1315 switch ( e->key() ) {
1327 // case Key_F1: 1316 // case Key_F1:
1328 // if(stopped && !recording) 1317 // if(stopped && !recording)
1329 // newSound(); 1318 // newSound();
1330 // else 1319 // else
1331 // stop(); 1320 // stop();
1332 // break; 1321 // break;
1333 // case Key_F2: 1322 // case Key_F2:
1334 // rewindReleased(); 1323 // rewindReleased();
1335 // break; 1324 // break;
1336 // case Key_F3: 1325 // case Key_F3:
1337 // FastforwardReleased(); 1326 // FastforwardReleased();
1338 // break; 1327 // break;
1339 1328
1340 ////////////////////////////// Zaurus keys 1329 ////////////////////////////// Zaurus keys
1341 case Key_F9: //activity 1330 case Key_F9: //activity
1342 break; 1331 break;
1343 case Key_F10: //contacts 1332 case Key_F10: //contacts
1344 break; 1333 break;
1345 case Key_F11: //menu 1334 case Key_F11: //menu
1346 break; 1335 break;
1347 case Key_F12: //home 1336 case Key_F12: //home
1348 if(stopped) 1337 if(stopped)
1349 doPlayBtn(); 1338 doPlayBtn();
1350 else 1339 else
1351 stop(); 1340 stop();
1352 break; 1341 break;
1353 case Key_F13: //mail 1342 case Key_F13: //mail
1354 break; 1343 break;
1355 case Key_Space: 1344 case Key_Space:
1356 if(stopped && !recording) 1345 if(stopped && !recording)
1357 newSound(); 1346 newSound();
1358 else 1347 else
1359 stop(); 1348 stop();
1360 break; 1349 break;
1361 case Key_Delete: 1350 case Key_Delete:
1362 deleteSound(); 1351 deleteSound();
1363 break; 1352 break;
1364 case Key_Up: 1353 case Key_Up:
1365 // stop(); 1354 // stop();
1366 odebug << "Up" << oendl; 1355 odebug << "Up" << oendl;
1367 break; 1356 break;
1368 case Key_Down: 1357 case Key_Down:
1369 // start(); 1358 // start();
1370 // odebug << "Down" << oendl; 1359 // odebug << "Down" << oendl;
1371 // newSound(); 1360 // newSound();
1372 break; 1361 break;
1373 case Key_Left: 1362 case Key_Left:
1374 odebug << "Left" << oendl; 1363 odebug << "Left" << oendl;
1375 rewindReleased(); 1364 rewindReleased();
1376 break; 1365 break;
1377 case Key_Right: 1366 case Key_Right:
1378 odebug << "Right" << oendl; 1367 odebug << "Right" << oendl;
1379 FastforwardReleased(); 1368 FastforwardReleased();
1380 break; 1369 break;
1381 } 1370 }
1382} 1371}
1383 1372
1384void QtRec::endRecording() { 1373void QtRec::endRecording() {
1385 1374
1386 monitoring = false; 1375 monitoring = false;
1387 recording = false; 1376 recording = false;
1388 stopped = true; 1377 stopped = true;
1389 waveform->reset(); 1378 waveform->reset();
1390 setRecordButton( false); 1379 setRecordButton( false);
1391 1380
1392 toBeginningButton->setEnabled( true); 1381 toBeginningButton->setEnabled( true);
1393 toEndButton->setEnabled( true); 1382 toEndButton->setEnabled( true);
1394 1383
1395 killTimers(); 1384 killTimers();
1396 1385
1397 if(autoMute) 1386 if(autoMute)
1398 doMute( true); 1387 doMute( true);
1399 1388
1400 soundDevice->closeDevice( true); 1389 soundDevice->closeDevice( true);
1401 1390
1402 if( wavFile->track.isOpen()) { 1391 if( wavFile->track.isOpen()) {
1403 wavFile->adjustHeaders( filePara.fd, filePara.numberSamples); 1392 wavFile->adjustHeaders( filePara.fd, filePara.numberSamples);
1404 // soundDevice->sd=-1;
1405 filePara.numberSamples = 0; 1393 filePara.numberSamples = 0;
1406 // filePara.sd=-1;
1407 wavFile->closeFile(); 1394 wavFile->closeFile();
1408 filePara.fd=0; 1395 filePara.fd=0;
1409 1396
1410 if( wavFile->isTempFile()) { 1397 if( wavFile->isTempFile()) {
1411// move tmp file to regular file 1398// move tmp file to regular file
1412 QString cmd; 1399 QString cmd;
1413 cmd.sprintf("mv "+ wavFile->trackName() + " " + wavFile->currentFileName); 1400 cmd.sprintf("mv "+ wavFile->trackName() + " " + wavFile->currentFileName);
1414 odebug << "moving tmp file to "+currentFileName << oendl; 1401 odebug << "moving tmp file to "+currentFileName << oendl;
1415 system( cmd.latin1()); 1402 system( cmd.latin1());
1416 } 1403 }
1417 1404
1418 odebug << "Just moved " + wavFile->currentFileName << oendl; 1405 odebug << "Just moved " + wavFile->currentFileName << oendl;
1419 Config cfg("OpieRec"); 1406 Config cfg("OpieRec");
1420 cfg.setGroup("Sounds"); 1407 cfg.setGroup("Sounds");
1421 1408
1422 int nFiles = cfg.readNumEntry( "NumberofFiles",0); 1409 int nFiles = cfg.readNumEntry( "NumberofFiles",0);
1423 1410
1424 currentFile = QFileInfo( wavFile->currentFileName).fileName(); 1411 currentFile = QFileInfo( wavFile->currentFileName).fileName();
1425 currentFile = currentFile.left( currentFile.length() - 4); 1412 currentFile = currentFile.left( currentFile.length() - 4);
1426 1413
1427 cfg.writeEntry( "NumberofFiles", nFiles + 1); 1414 cfg.writeEntry( "NumberofFiles", nFiles + 1);
1428 cfg.writeEntry( QString::number( nFiles + 1), currentFile); 1415 cfg.writeEntry( QString::number( nFiles + 1), currentFile);
1429 cfg.writeEntry( currentFile, wavFile->currentFileName); 1416 cfg.writeEntry( currentFile, wavFile->currentFileName);
1430 1417
1431 QString time; 1418 QString time;
1432 time.sprintf("%.2f", filePara.numberOfRecordedSeconds); 1419 time.sprintf("%.2f", filePara.numberOfRecordedSeconds);
1433 cfg.writeEntry( wavFile->currentFileName, time ); 1420 cfg.writeEntry( wavFile->currentFileName, time );
1434 odebug << "writing config numberOfRecordedSeconds "+time << oendl; 1421 odebug << "writing config numberOfRecordedSeconds "+time << oendl;
1435 1422
1436 cfg.write(); 1423 cfg.write();
1437 odebug << "finished recording" << oendl; 1424 odebug << "finished recording" << oendl;
1438 // timeLabel->setText(""); 1425 // timeLabel->setText("");
1439 } 1426 }
1440 1427
1441// if(soundDevice) delete soundDevice; 1428// if(soundDevice) delete soundDevice;
1442 1429
1443 timeSlider->setValue(0); 1430 timeSlider->setValue(0);
1444 initIconView(); 1431 initIconView();
1445 selectItemByName( currentFile); 1432 selectItemByName( currentFile);
1446 setCaption( tr( "OpieRecord " )); 1433 setCaption( tr( "OpieRecord " ));
1447 1434
1448} 1435}
1449 1436
1450void QtRec::endPlaying() { 1437void QtRec::endPlaying() {
1451 monitoring = false; 1438 monitoring = false;
1452 recording = false; 1439 recording = false;
1453 playing = false; 1440 playing = false;
1454 stopped = true; 1441 stopped = true;
1455 waveform->reset(); 1442 waveform->reset();
1456// errorStop(); 1443// errorStop();
1457 odebug << "end playing" << oendl; 1444 odebug << "end playing" << oendl;
1458 setRecordButton( false); 1445 setRecordButton( false);
1459 1446
1460 toBeginningButton->setEnabled( true); 1447 toBeginningButton->setEnabled( true);
1461 toEndButton->setEnabled( true); 1448 toEndButton->setEnabled( true);
1462 1449
1463 if(autoMute) 1450 if(autoMute)
1464 doMute( true); 1451 doMute( true);
1465 1452
1466 soundDevice->closeDevice( false); 1453 soundDevice->closeDevice( false);
1467 soundDevice->sd = -1; 1454 soundDevice->sd = -1;
1468 // if(soundDevice) delete soundDevice; 1455 // if(soundDevice) delete soundDevice;
1469 odebug << "file and sound device closed" << oendl; 1456 odebug << "file and sound device closed" << oendl;
1470 // timeLabel->setText(""); 1457 // timeLabel->setText("");
1471 total = 0; 1458 total = 0;
1472 filePara.numberSamples = 0; 1459 filePara.numberSamples = 0;
1473 filePara.sd = -1; 1460 filePara.sd = -1;
1474// wavFile->closeFile(); 1461// wavFile->closeFile();
1475 filePara.fd = 0; 1462 filePara.fd = 0;
1476// if(wavFile) delete wavFile; //this crashes 1463// if(wavFile) delete wavFile; //this crashes
1477 1464
1478 odebug << "track closed" << oendl; 1465 odebug << "track closed" << oendl;
1479 killTimers(); 1466 killTimers();
1480 // owarn << "reset slider" << oendl; 1467 // owarn << "reset slider" << oendl;
1481 timeSlider->setValue(0); 1468 timeSlider->setValue(0);
1482 1469
1483// if(soundDevice) delete soundDevice; 1470// if(soundDevice) delete soundDevice;
1484 1471
1485} 1472}
1486 1473
1487bool QtRec::openPlayFile() { 1474bool QtRec::openPlayFile() {
1488 qWarning("opening file"); 1475 qWarning("opening file");
1489 qApp->processEvents(); 1476 qApp->processEvents();
1490 if( currentFile.isEmpty()) { 1477 if( currentFile.isEmpty()) {
1491 QMessageBox::message(tr("Opierec"),tr("Please select file to play")); 1478 QMessageBox::message(tr("Opierec"),tr("Please select file to play"));
1492 endPlaying(); 1479 endPlaying();
1493 return false; 1480 return false;
1494 } 1481 }
1495 QString currentFileName; 1482 QString currentFileName;
1496 Config cfg("OpieRec"); 1483 Config cfg("OpieRec");
1497 cfg.setGroup("Sounds"); 1484 cfg.setGroup("Sounds");
1498 int nFiles = cfg.readNumEntry( "NumberofFiles", 0); 1485 int nFiles = cfg.readNumEntry( "NumberofFiles", 0);
1499 for(int i=0;i<nFiles+1;i++) { //look for file 1486 for(int i=0;i<nFiles+1;i++) { //look for file
1500 if( cfg.readEntry( QString::number(i),"").find( currentFile,0,true) != -1) { 1487 if( cfg.readEntry( QString::number(i),"").find( currentFile,0,true) != -1) {
1501 currentFileName = cfg.readEntry( currentFile, "" ); 1488 currentFileName = cfg.readEntry( currentFile, "" );
1502 odebug << "opening for play: " + currentFileName << oendl; 1489 odebug << "opening for play: " + currentFileName << oendl;
1503 } 1490 }
1504 } 1491 }
1505 wavFile = new WavFile(this, 1492 wavFile = new WavFile(this,
1506 currentFileName, 1493 currentFileName,
1507 false); 1494 false);
1508 filePara.fd = wavFile->wavHandle(); 1495 filePara.fd = wavFile->wavHandle();
1509 if(filePara.fd == -1) { 1496 if(filePara.fd == -1) {
1510 // if(!track.open(IO_ReadOnly)) { 1497 // if(!track.open(IO_ReadOnly)) {
1511 QString errorMsg = (QString)strerror(errno); 1498 QString errorMsg = (QString)strerror(errno);
1512 monitoring = false; 1499 monitoring = false;
1513 setCaption( tr( "OpieRecord " )); 1500 setCaption( tr( "OpieRecord " ));
1514 QMessageBox::message(tr("Note"), tr("Could not open audio file.\n") 1501 QMessageBox::message(tr("Note"), tr("Could not open audio file.\n")
1515 + errorMsg + "\n" + currentFile); 1502 + errorMsg + "\n" + currentFile);
1516 return false; 1503 return false;
1517 } else { 1504 } else {
1518 1505
1519 filePara.numberSamples = wavFile->getNumberSamples(); 1506 filePara.numberSamples = wavFile->getNumberSamples();
1520 filePara.format = wavFile->getFormat(); 1507 filePara.format = wavFile->getFormat();
1521 filePara.sampleRate = wavFile->getSampleRate(); 1508 filePara.sampleRate = wavFile->getSampleRate();
1522 filePara.resolution = wavFile->getResolution(); 1509 filePara.resolution = wavFile->getResolution();
1523 filePara.channels = wavFile->getChannels(); 1510 filePara.channels = wavFile->getChannels();
1524 timeSlider->setPageStep(1); 1511 timeSlider->setPageStep(1);
1525 monitoring = true; 1512 monitoring = true;
1526 1513
1527 odebug << "file " << filePara.fd << ", samples " << filePara.numberSamples << " " << filePara.sampleRate << "" << oendl; 1514 odebug << "file " << filePara.fd << ", samples " << filePara.numberSamples << " " << filePara.sampleRate << "" << oendl;
1528 int sec = (int) (( filePara.numberSamples / filePara.sampleRate) / filePara.channels) / ( filePara.channels*( filePara.resolution/8)); 1515 int sec = (int) (( filePara.numberSamples / filePara.sampleRate) / filePara.channels) / ( filePara.channels*( filePara.resolution/8));
1529 1516
1530 // owarn << "seconds " << sec << "" << oendl; 1517 // owarn << "seconds " << sec << "" << oendl;
1531 1518
1532 timeSlider->setRange(0, filePara.numberSamples ); 1519 timeSlider->setRange(0, filePara.numberSamples );
1533 } 1520 }
1534 1521
1535 return true; 1522 return true;
1536} 1523}
1537 1524
1538void QtRec::listPressed( int mouse, QListViewItem *item, const QPoint &, int ) { 1525void QtRec::listPressed( int mouse, QListViewItem *item, const QPoint &, int ) {
1539 if(item == NULL ) 1526 if(item == NULL )
1540 return; 1527 return;
1541 switch (mouse) { 1528 switch (mouse) {
1542 case 1: { 1529 case 1: {
1543 if( renameBox != 0 ) //tricky 1530 if( renameBox != 0 ) //tricky
1544 cancelRename(); 1531 cancelRename();
1545 1532
1546 currentFile = item->text(0); 1533 currentFile = item->text(0);
1547 // setCaption( "OpieRecord " + currentFile); 1534 // setCaption( "OpieRecord " + currentFile);
1548 } 1535 }
1549 break; 1536 break;
1550 case 2: 1537 case 2:
1551 showListMenu(item); 1538 showListMenu(item);
1552 ListView1->clearSelection(); 1539 ListView1->clearSelection();
1553 break; 1540 break;
1554 }; 1541 };
1555} 1542}
1556 1543
1557void QtRec::showListMenu(QListViewItem * item) { 1544void QtRec::showListMenu(QListViewItem * item) {
1558 if(item == NULL) 1545 if(item == NULL)
1559 return; 1546 return;
1560 QPopupMenu *m = new QPopupMenu(this); 1547 QPopupMenu *m = new QPopupMenu(this);
1561 m->insertItem( tr("Play"), this, SLOT( doMenuPlay() )); 1548 m->insertItem( tr("Play"), this, SLOT( doMenuPlay() ));
1562 if(Ir::supported()) m->insertItem( tr( "Send with Ir" ), this, SLOT( doBeam() )); 1549 if(Ir::supported()) m->insertItem( tr( "Send with Ir" ), this, SLOT( doBeam() ));
1563 m->insertItem( tr( "Rename" ), this, SLOT( doRename() )); 1550 m->insertItem( tr( "Rename" ), this, SLOT( doRename() ));
1564 // #if defined (QTOPIA_INTERNAL_FSLP) 1551 // #if defined (QTOPIA_INTERNAL_FSLP)
1565 // m->insertItem( tr( "Properties" ), this, SLOT( doProperties() )); 1552 // m->insertItem( tr( "Properties" ), this, SLOT( doProperties() ));
1566 // #endif 1553 // #endif
1567 m->insertSeparator(); 1554 m->insertSeparator();
1568 m->insertItem( tr("Delete"), this, SLOT( deleteSound() ) ); 1555 m->insertItem( tr("Delete"), this, SLOT( deleteSound() ) );
1569 m->exec( QCursor::pos() ); 1556 m->exec( QCursor::pos() );
1570 qApp->processEvents(); 1557 qApp->processEvents();
1571} 1558}
1572 1559
1573void QtRec::fileBeamFinished( Ir *ir) { 1560void QtRec::fileBeamFinished( Ir *ir) {
1574 if(ir) 1561 if(ir)
1575 QMessageBox::message( tr("Ir Beam out"), tr("Ir sent.") ,tr("Ok") ); 1562 QMessageBox::message( tr("Ir Beam out"), tr("Ir sent.") ,tr("Ok") );
1576 1563
1577} 1564}
1578 1565
1579void QtRec::doBeam() { 1566void QtRec::doBeam() {
1580 qApp->processEvents(); 1567 qApp->processEvents();
1581 if( ListView1->currentItem() == NULL) 1568 if( ListView1->currentItem() == NULL)
1582 return; 1569 return;
1583 Ir ir; 1570 Ir ir;
1584 if( ir.supported()) { 1571 if( ir.supported()) {
1585 QString file = ListView1->currentItem()->text(0); 1572 QString file = ListView1->currentItem()->text(0);
1586 Config cfg("OpieRec"); 1573 Config cfg("OpieRec");
1587 cfg.setGroup("Sounds"); 1574 cfg.setGroup("Sounds");
1588 1575
1589 int nFiles = cfg.readNumEntry("NumberofFiles",0); 1576 int nFiles = cfg.readNumEntry("NumberofFiles",0);
1590 1577
1591 for(int i=0;i<nFiles+1;i++) { 1578 for(int i=0;i<nFiles+1;i++) {
1592 if( cfg.readEntry( QString::number( i),"").find( file, 0, true) != -1) { 1579 if( cfg.readEntry( QString::number( i),"").find( file, 0, true) != -1) {
1593 QString filePath = cfg.readEntry(file,""); 1580 QString filePath = cfg.readEntry(file,"");
1594 Ir *file = new Ir(this, "IR"); 1581 Ir *file = new Ir(this, "IR");
1595 connect( file, SIGNAL( done(Ir*)), 1582 connect( file, SIGNAL( done(Ir*)),
1596 this, SLOT( fileBeamFinished(Ir*))); 1583 this, SLOT( fileBeamFinished(Ir*)));
1597 file->send( filePath, "OPieRec audio file\n" + filePath ); 1584 file->send( filePath, "OPieRec audio file\n" + filePath );
1598 } 1585 }
1599 } 1586 }
1600 } 1587 }
1601} 1588}
1602 1589
1603void QtRec::doMenuPlay() { 1590void QtRec::doMenuPlay() {
1604 qApp->processEvents(); 1591 qApp->processEvents();
1605 currentFile = ListView1->currentItem()->text(0); 1592 currentFile = ListView1->currentItem()->text(0);
1606} 1593}
1607 1594
1608void QtRec::doRename() { 1595void QtRec::doRename() {
1609 QRect r = ListView1->itemRect( ListView1->currentItem( )); 1596 QRect r = ListView1->itemRect( ListView1->currentItem( ));
1610 r = QRect( ListView1->viewportToContents( r.topLeft() ), r.size() ); 1597 r = QRect( ListView1->viewportToContents( r.topLeft() ), r.size() );
1611 r.setX( ListView1->contentsX() ); 1598 r.setX( ListView1->contentsX() );
1612 if ( r.width() > ListView1->visibleWidth() ) 1599 if ( r.width() > ListView1->visibleWidth() )
1613 r.setWidth( ListView1->visibleWidth() ); 1600 r.setWidth( ListView1->visibleWidth() );
1614 1601
1615 renameBox = new QLineEdit( ListView1->viewport(), "qt_renamebox" ); 1602 renameBox = new QLineEdit( ListView1->viewport(), "qt_renamebox" );
1616 renameBox->setFrame(true); 1603 renameBox->setFrame(true);
1617 1604
1618 renameBox->setText( ListView1->currentItem()->text(0) ); 1605 renameBox->setText( ListView1->currentItem()->text(0) );
1619 1606
1620 renameBox->selectAll(); 1607 renameBox->selectAll();
1621 renameBox->installEventFilter( this ); 1608 renameBox->installEventFilter( this );
1622 ListView1->addChild( renameBox, r.x(), r.y() ); 1609 ListView1->addChild( renameBox, r.x(), r.y() );
1623 renameBox->resize( r.size() ); 1610 renameBox->resize( r.size() );
1624 ListView1->viewport()->setFocusProxy( renameBox ); 1611 ListView1->viewport()->setFocusProxy( renameBox );
1625 renameBox->setFocus(); 1612 renameBox->setFocus();
1626 renameBox->show(); 1613 renameBox->show();
1627 1614
1628} 1615}
1629 1616
1630void QtRec::okRename() { 1617void QtRec::okRename() {
1631 odebug << renameBox->text() << oendl; 1618 odebug << renameBox->text() << oendl;
1632 QString filename = renameBox->text(); 1619 QString filename = renameBox->text();
1633 cancelRename(); 1620 cancelRename();
1634 1621
1635 if( ListView1->currentItem() == NULL) 1622 if( ListView1->currentItem() == NULL)
1636 return; 1623 return;
1637 1624
1638 Config cfg("OpieRec"); 1625 Config cfg("OpieRec");
1639 cfg.setGroup("Sounds"); 1626 cfg.setGroup("Sounds");
1640 1627
1641 QString file = ListView1->currentItem()->text(0); 1628 QString file = ListView1->currentItem()->text(0);
1642 1629
1643 odebug << "filename is " + filename << oendl; 1630 odebug << "filename is " + filename << oendl;
1644 1631
1645 int nFiles = cfg.readNumEntry("NumberofFiles",0); 1632 int nFiles = cfg.readNumEntry("NumberofFiles",0);
1646 1633
1647 for(int i=0;i<nFiles+1;i++) { //look for file 1634 for(int i=0;i<nFiles+1;i++) { //look for file
1648 if( cfg.readEntry( QString::number(i),"").find(file,0,true) != -1) { 1635 if( cfg.readEntry( QString::number(i),"").find(file,0,true) != -1) {
1649 1636
1650 QString filePath = cfg.readEntry(file,""); 1637 QString filePath = cfg.readEntry(file,"");
1651 1638
1652 cfg.writeEntry( QString::number(i), filename ); 1639 cfg.writeEntry( QString::number(i), filename );
1653 cfg.writeEntry( filename, filePath ); 1640 cfg.writeEntry( filename, filePath );
1654 cfg.removeEntry( file); 1641 cfg.removeEntry( file);
1655 cfg.write(); 1642 cfg.write();
1656 } 1643 }
1657 } 1644 }
1658 1645
1659 ListView1->takeItem( ListView1->currentItem() ); 1646 ListView1->takeItem( ListView1->currentItem() );
1660 delete ListView1->currentItem(); 1647 delete ListView1->currentItem();
1661 ListView1->clear(); 1648 ListView1->clear();
1662 initIconView(); 1649 initIconView();
1663 update(); 1650 update();
1664} 1651}
1665 1652
1666void QtRec::cancelRename() { 1653void QtRec::cancelRename() {
1667 bool resetFocus = ListView1->viewport()->focusProxy() == renameBox; 1654 bool resetFocus = ListView1->viewport()->focusProxy() == renameBox;
1668 delete renameBox; 1655 delete renameBox;
1669 renameBox = 0; 1656 renameBox = 0;
1670 if ( resetFocus ) { 1657 if ( resetFocus ) {
1671 ListView1->viewport()->setFocusProxy( ListView1 ); 1658 ListView1->viewport()->setFocusProxy( ListView1 );
1672 ListView1->setFocus(); 1659 ListView1->setFocus();
1673 } 1660 }
1674} 1661}
1675 1662
1676bool QtRec::eventFilter( QObject * o, QEvent * e ) { 1663bool QtRec::eventFilter( QObject * o, QEvent * e ) {
1677 if ( o->inherits( "QLineEdit" ) ) { 1664 if ( o->inherits( "QLineEdit" ) ) {
1678 if ( e->type() == QEvent::KeyPress ) { 1665 if ( e->type() == QEvent::KeyPress ) {
1679 QKeyEvent *ke = (QKeyEvent*)e; 1666 QKeyEvent *ke = (QKeyEvent*)e;
1680 if ( ke->key() == Key_Return || 1667 if ( ke->key() == Key_Return ||
1681 ke->key() == Key_Enter ) { 1668 ke->key() == Key_Enter ) {
1682 okRename(); 1669 okRename();
1683 return true; 1670 return true;
1684 } else if ( ke->key() == Key_Escape ) { 1671 } else if ( ke->key() == Key_Escape ) {
1685 cancelRename(); 1672 cancelRename();
1686 return true; 1673 return true;
1687 } 1674 }
1688 } else if ( e->type() == QEvent::FocusOut ) { 1675 } else if ( e->type() == QEvent::FocusOut ) {
1689 cancelRename(); 1676 cancelRename();
1690 return true; 1677 return true;
1691 } 1678 }
1692 } 1679 }
1693 return QWidget::eventFilter( o, e ); 1680 return QWidget::eventFilter( o, e );
1694} 1681}
1695 1682
1696 1683
1697int QtRec::getCurrentSizeLimit() { 1684int QtRec::getCurrentSizeLimit() {
1698 return sizeLimitCombo->currentItem() * 5; 1685 return sizeLimitCombo->currentItem() * 5;
1699} 1686}
1700 1687
1701void QtRec::timerBreak() { 1688void QtRec::timerBreak() {
1702 endPlaying(); 1689 endPlaying();
1703} 1690}
1704 1691
1705void QtRec::doVolMuting(bool b) { 1692void QtRec::doVolMuting(bool b) {
1706 Config cfg( "qpe" ); 1693 Config cfg( "qpe" );
1707 cfg. setGroup( "Volume" ); 1694 cfg. setGroup( "Volume" );
1708 cfg.writeEntry( "Mute",b); 1695 cfg.writeEntry( "Mute",b);
1709 cfg.write(); 1696 cfg.write();
1710 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << b; 1697 QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << b;
1711} 1698}
1712 1699
1713void QtRec::doMicMuting(bool b) { 1700void QtRec::doMicMuting(bool b) {
1714 // odebug << "mic mute" << oendl; 1701 // odebug << "mic mute" << oendl;
1715 Config cfg( "qpe" ); 1702 Config cfg( "qpe" );
1716 cfg. setGroup( "Volume" ); 1703 cfg. setGroup( "Volume" );
1717 cfg.writeEntry( "MicMute",b); 1704 cfg.writeEntry( "MicMute",b);
1718 cfg.write(); 1705 cfg.write();
1719 QCopEnvelope( "QPE/System", "micChange(bool)" ) << b; 1706 QCopEnvelope( "QPE/System", "micChange(bool)" ) << b;
1720} 1707}
1721 1708
1722void QtRec::compressionSelected(bool b) { 1709void QtRec::compressionSelected(bool b) {
1723 Config cfg("OpieRec"); 1710 Config cfg("OpieRec");
1724 cfg.setGroup("Settings"); 1711 cfg.setGroup("Settings");
1725 cfg.writeEntry("wavCompression", b); 1712 cfg.writeEntry("wavCompression", b);
1726 cfg.writeEntry("bitrate", 16); 1713 cfg.writeEntry("bitrate", 16);
1727 filePara.resolution = 16; 1714 filePara.resolution = 16;
1728 cfg.write(); 1715 cfg.write();
1729 1716
1730 if(b) { 1717 if(b) {
1731 qWarning("set adpcm"); 1718 qWarning("set adpcm");
1732 bitRateComboBox->setCurrentItem( 1); 1719 bitRateComboBox->setCurrentItem( 1);
1733 bitRateComboBox->setEnabled( false); 1720 bitRateComboBox->setEnabled( false);
1734 filePara.resolution = 16; 1721 filePara.resolution = 16;
1735 } else{ 1722 } else{
1736 bitRateComboBox->setEnabled( true); 1723 bitRateComboBox->setEnabled( true);
1737 } 1724 }
1738} 1725}
1739 1726
1740long QtRec::checkDiskSpace(const QString &path) { 1727long QtRec::checkDiskSpace(const QString &path) {
1741 1728
1742 struct statfs fs; 1729 struct statfs fs;
1743 1730
1744 if ( !statfs( path.latin1(), &fs ) ) { 1731 if ( !statfs( path.latin1(), &fs ) ) {
1745 1732
1746 int blkSize = fs.f_bsize; 1733 int blkSize = fs.f_bsize;
1747 int availBlks = fs.f_bavail; 1734 int availBlks = fs.f_bavail;
1748 1735
1749 long mult = blkSize / 1024; 1736 long mult = blkSize / 1024;
1750 long div = 1024 / blkSize; 1737 long div = 1024 / blkSize;
1751 1738
1752 if ( !mult ) mult = 1; 1739 if ( !mult ) mult = 1;
1753 if ( !div ) div = 1; 1740 if ( !div ) div = 1;
1754 1741
1755 return availBlks * mult / div; 1742 return availBlks * mult / div;
1756 } 1743 }
1757 return -1; 1744 return -1;
1758} 1745}
1759 1746
1760// short f_fstyp; /* File system type */ 1747// short f_fstyp; /* File system type */
1761// long f_bsize; /* Block size */ 1748// long f_bsize; /* Block size */
1762// long f_frsize; /* Fragment size */ 1749// long f_frsize; /* Fragment size */
1763// long f_blocks; /* Total number of blocks*/ 1750// long f_blocks; /* Total number of blocks*/
1764// long f_bfree; /* Count of free blocks */ 1751// long f_bfree; /* Count of free blocks */
1765// long f_files; /* Total number of file nodes */ 1752// long f_files; /* Total number of file nodes */
1766// long f_ffree; /* Count of free file nodes */ 1753// long f_ffree; /* Count of free file nodes */
1767// char f_fname[6]; /* Volumename */ 1754// char f_fname[6]; /* Volumename */
1768// char f_fpack[6]; /* Pack name */ 1755// char f_fpack[6]; /* Pack name */
1769 1756
1770void QtRec::receive( const QCString &msg, const QByteArray & ) { 1757void QtRec::receive( const QCString &msg, const QByteArray & ) {
1771 odebug << "Voicerecord received message "+msg << oendl; 1758 odebug << "Voicerecord received message "+msg << oendl;
1772 1759
1773} 1760}
1774 1761
1775 1762
1776///////////////////////////// timerEvent 1763///////////////////////////// timerEvent
1777void QtRec::timerEvent( QTimerEvent * ) { 1764void QtRec::timerEvent( QTimerEvent * ) {
1778 1765
1779// if(!recording) 1766// if(!recording)
1780// timeSlider->setValue( secCount); 1767// timeSlider->setValue( secCount);
1781// else 1768// else
1782// timeSlider->setValue( filePara.numberOfRecordedSeconds); 1769// timeSlider->setValue( filePara.numberOfRecordedSeconds);
1783 1770
1784 if( stopped && playing) { 1771 if( stopped && playing) {
1785 stop(); 1772 stop();
1786 } 1773 }
1787 1774
1788 if( stopped && recording ){ 1775 if( stopped && recording ){
1789 stop(); 1776 stop();
1790 } 1777 }
1791 1778
1792 if( recording && filePara.SecondsToRecord < secCount && filePara.SecondsToRecord != 0) { 1779 if( recording && filePara.SecondsToRecord < secCount && filePara.SecondsToRecord != 0) {
1793 stop(); 1780 stop();
1794 } 1781 }
1795 1782
1796 odebug << "" << secCount << "" << oendl; 1783 odebug << "" << secCount << "" << oendl;
1797 QString timeString; 1784 QString timeString;
1798 1785
1799 timeString.sprintf("%d", secCount); 1786 timeString.sprintf("%d", secCount);
1800 // timeLabel->setText( timeString + " seconds"); 1787 // timeLabel->setText( timeString + " seconds");
1801 1788
1802 secCount++; 1789 secCount++;
1803} 1790}
1804 1791
1805void QtRec::changeTimeSlider(int index) { 1792void QtRec::changeTimeSlider(int index) {
1806 if( ListView1->currentItem() == 0 || !wavFile->track.isOpen()) return; 1793 if( ListView1->currentItem() == 0 || !wavFile->track.isOpen()) return;
1807 odebug << "Slider moved to " << index << "" << oendl; 1794 odebug << "Slider moved to " << index << "" << oendl;
1808 paused = true; 1795 paused = true;
1809 stopped = true; 1796 stopped = true;
1810 1797
1811 sliderPos=index; 1798 sliderPos=index;
1812 1799
1813 QString timeString; 1800 QString timeString;
1814 filePara.numberOfRecordedSeconds = (float)sliderPos / (float)filePara.sampleRate * (float)2; 1801 filePara.numberOfRecordedSeconds = (float)sliderPos / (float)filePara.sampleRate * (float)2;
1815 timeString.sprintf( "%.2f", filePara.numberOfRecordedSeconds); 1802 timeString.sprintf( "%.2f", filePara.numberOfRecordedSeconds);
1816 secCount = (int)filePara.numberOfRecordedSeconds; 1803 secCount = (int)filePara.numberOfRecordedSeconds;
1817 // timeLabel->setText( timeString + tr(" seconds")); 1804 // timeLabel->setText( timeString + tr(" seconds"));
1818} 1805}
1819 1806
1820void QtRec::timeSliderPressed() { 1807void QtRec::timeSliderPressed() {
1821 if( ListView1->currentItem() == 0) return; 1808 if( ListView1->currentItem() == 0) return;
1822 odebug << "slider pressed" << oendl; 1809 odebug << "slider pressed" << oendl;
1823 paused = true; 1810 paused = true;
1824 stopped = true; 1811 stopped = true;
1825} 1812}
1826 1813
1827void QtRec::timeSliderReleased() { 1814void QtRec::timeSliderReleased() {
1828 if( ListView1->currentItem() == 0) return; 1815 if( ListView1->currentItem() == 0) return;
1829 sliderPos = timeSlider->value(); 1816 sliderPos = timeSlider->value();
1830 1817
1831 odebug << "slider released " << sliderPos << "" << oendl; 1818 odebug << "slider released " << sliderPos << "" << oendl;
1832 stopped = false; 1819 stopped = false;
1833 int newPos = lseek( filePara.fd, sliderPos, SEEK_SET); 1820 int newPos = lseek( filePara.fd, sliderPos, SEEK_SET);
1834 total = newPos*4; 1821 total = newPos*4;
1835 filePara.numberOfRecordedSeconds = (float)sliderPos / (float)filePara.sampleRate * (float)2; 1822 filePara.numberOfRecordedSeconds = (float)sliderPos / (float)filePara.sampleRate * (float)2;
1836 1823
1837 doPlay(); 1824 doPlay();
1838} 1825}
1839 1826
1840void QtRec::rewindPressed() { 1827void QtRec::rewindPressed() {
1841 if( ListView1->currentItem() == 0) return; 1828 if( ListView1->currentItem() == 0) return;
1842 if( !wavFile->track.isOpen()) { 1829 if( !wavFile->track.isOpen()) {
1843 if( !openPlayFile() ) 1830 if( !openPlayFile() )
1844 return; 1831 return;
1845 else 1832 else
1846 if( !setupAudio( false)) 1833 if( !setupAudio( false))
1847 return; 1834 return;
1848 } else { 1835 } else {
1849 killTimers(); 1836 killTimers();
1850 paused = true; 1837 paused = true;
1851 stopped = true; 1838 stopped = true;
1852 rewindTimer->start( 50, false); 1839 rewindTimer->start( 50, false);
1853 } 1840 }
1854} 1841}
1855 1842
1856void QtRec::rewindTimerTimeout() { 1843void QtRec::rewindTimerTimeout() {
1857 int sliderValue = timeSlider->value(); 1844 int sliderValue = timeSlider->value();
1858 sliderValue = sliderValue - ( filePara.numberSamples / 100); 1845 sliderValue = sliderValue - ( filePara.numberSamples / 100);
1859 // if(toBeginningButton->isDown()) 1846 // if(toBeginningButton->isDown())
1860 timeSlider->setValue( sliderValue ) ; 1847 timeSlider->setValue( sliderValue ) ;
1861 odebug << "" << sliderValue << "" << oendl; 1848 odebug << "" << sliderValue << "" << oendl;
1862 QString timeString; 1849 QString timeString;
1863 filePara.numberOfRecordedSeconds = (float)sliderValue / (float)filePara.sampleRate * (float)2; 1850 filePara.numberOfRecordedSeconds = (float)sliderValue / (float)filePara.sampleRate * (float)2;
1864 timeString.sprintf( "%.2f", filePara.numberOfRecordedSeconds); 1851 timeString.sprintf( "%.2f", filePara.numberOfRecordedSeconds);
1865 // timeLabel->setText( timeString+ tr(" seconds")); 1852 // timeLabel->setText( timeString+ tr(" seconds"));
1866} 1853}
1867 1854
1868void QtRec::rewindReleased() { 1855void QtRec::rewindReleased() {
1869 rewindTimer->stop(); 1856 rewindTimer->stop();
1870 if( wavFile->track.isOpen()) { 1857 if( wavFile->track.isOpen()) {
1871 sliderPos=timeSlider->value(); 1858 sliderPos=timeSlider->value();
1872 stopped = false; 1859 stopped = false;
1873 int newPos = lseek( filePara.fd, sliderPos, SEEK_SET); 1860 int newPos = lseek( filePara.fd, sliderPos, SEEK_SET);
1874 total = newPos * 4; 1861 total = newPos * 4;
1875 odebug << "rewind released " << total << "" << oendl; 1862 odebug << "rewind released " << total << "" << oendl;
1876 startTimer( 1000); 1863 startTimer( 1000);
1877 doPlay(); 1864 doPlay();
1878 } 1865 }
1879} 1866}
1880 1867
1881void QtRec::FastforwardPressed() { 1868void QtRec::FastforwardPressed() {
1882 if( ListView1->currentItem() == 0) return; 1869 if( ListView1->currentItem() == 0) return;
1883 if( !wavFile->track.isOpen()) 1870 if( !wavFile->track.isOpen())
1884 if( !openPlayFile() ) 1871 if( !openPlayFile() )
1885 return; 1872 return;
1886 else 1873 else
1887 if( !setupAudio( false)) 1874 if( !setupAudio( false))
1888 return; 1875 return;
1889 killTimers(); 1876 killTimers();
1890 1877
1891 paused = true; 1878 paused = true;
1892 stopped = true; 1879 stopped = true;
1893 forwardTimer->start(50, false); 1880 forwardTimer->start(50, false);
1894} 1881}
1895 1882
1896 1883
1897void QtRec::forwardTimerTimeout() { 1884void QtRec::forwardTimerTimeout() {
1898 int sliderValue = timeSlider->value(); 1885 int sliderValue = timeSlider->value();
1899 sliderValue = sliderValue + ( filePara.numberSamples / 100); 1886 sliderValue = sliderValue + ( filePara.numberSamples / 100);
1900 1887
1901 // if(toEndButton->isDown()) 1888 // if(toEndButton->isDown())
1902 timeSlider->setValue( sliderValue); 1889 timeSlider->setValue( sliderValue);
1903 1890
1904 QString timeString; 1891 QString timeString;
1905 filePara.numberOfRecordedSeconds = (float)sliderValue / (float)filePara.sampleRate * (float)2; 1892 filePara.numberOfRecordedSeconds = (float)sliderValue / (float)filePara.sampleRate * (float)2;
1906 timeString.sprintf( "%.2f", filePara.numberOfRecordedSeconds); 1893 timeString.sprintf( "%.2f", filePara.numberOfRecordedSeconds);
1907 // timeLabel->setText( timeString+ tr(" seconds")); 1894 // timeLabel->setText( timeString+ tr(" seconds"));
1908} 1895}
1909 1896
1910void QtRec::FastforwardReleased() { 1897void QtRec::FastforwardReleased() {
1911 forwardTimer->stop(); 1898 forwardTimer->stop();
1912 if( wavFile->track.isOpen()) { 1899 if( wavFile->track.isOpen()) {
1913 sliderPos=timeSlider->value(); 1900 sliderPos=timeSlider->value();
1914 stopped = false; 1901 stopped = false;
1915 int newPos = lseek( filePara.fd, sliderPos, SEEK_SET); 1902 int newPos = lseek( filePara.fd, sliderPos, SEEK_SET);
1916 total = newPos * 4; 1903 total = newPos * 4;
1917 filePara.numberOfRecordedSeconds = (float)sliderPos / (float)filePara.sampleRate * (float)2; 1904 filePara.numberOfRecordedSeconds = (float)sliderPos / (float)filePara.sampleRate * (float)2;
1918 startTimer( 1000); 1905 startTimer( 1000);
1919 doPlay(); 1906 doPlay();
1920 } 1907 }
1921} 1908}
1922 1909
1923 1910
1924QString QtRec::getStorage(const QString &fileName) { 1911QString QtRec::getStorage(const QString &fileName) {
1925 1912
1926 StorageInfo storageInfo; 1913 StorageInfo storageInfo;
1927 const QList<FileSystem> &fs = storageInfo.fileSystems(); 1914 const QList<FileSystem> &fs = storageInfo.fileSystems();
1928 QListIterator<FileSystem> it ( fs ); 1915 QListIterator<FileSystem> it ( fs );
1929 QString storage; 1916 QString storage;
1930 for( ; it.current(); ++it ){ 1917 for( ; it.current(); ++it ){
1931 const QString name = ( *it)->name(); 1918 const QString name = ( *it)->name();
1932 const QString path = ( *it)->path(); 1919 const QString path = ( *it)->path();
1933 const QString disk = ( *it)->disk(); 1920 const QString disk = ( *it)->disk();
1934 if( fileName.find( path,0,true) != -1) 1921 if( fileName.find( path,0,true) != -1)
1935 storage = name; 1922 storage = name;
1936 // const QString options = (*it)->options(); 1923 // const QString options = (*it)->options();
1937 // if( name.find( tr("Internal"),0,true) == -1) { 1924 // if( name.find( tr("Internal"),0,true) == -1) {
1938 // storageComboBox->insertItem( name +" -> "+disk); 1925 // storageComboBox->insertItem( name +" -> "+disk);
1939 // odebug << name << oendl; 1926 // odebug << name << oendl;
1940 } 1927 }
1941 return storage; 1928 return storage;
1942 // struct mntent *me; 1929 // struct mntent *me;
1943 // // if(fileName == "/etc/mtab") { 1930 // // if(fileName == "/etc/mtab") {
1944 // FILE *mntfp = setmntent( fileName.latin1(), "r" ); 1931 // FILE *mntfp = setmntent( fileName.latin1(), "r" );
1945 // if ( mntfp ) { 1932 // if ( mntfp ) {
1946 // while ( (me = getmntent( mntfp )) != 0 ) { 1933 // while ( (me = getmntent( mntfp )) != 0 ) {
1947 // QString filesystemType = me->mnt_type; 1934 // QString filesystemType = me->mnt_type;
1948 1935
1949 // } 1936 // }
1950 // } 1937 // }
1951 // endmntent( mntfp ); 1938 // endmntent( mntfp );
1952} 1939}
1953 1940
1954void QtRec::setRecordButton(bool b) { 1941void QtRec::setRecordButton(bool b) {
1955 1942
1956 if(b) { //about to record or play 1943 if(b) { //about to record or play
1957 1944
1958 Rec_PushButton->setDown( true); 1945 Rec_PushButton->setDown( true);
1959 QPixmap image3( ( const char** ) image3_data ); 1946 QPixmap image3( ( const char** ) image3_data );
1960 Stop_PushButton->setPixmap( image3 ); 1947 Stop_PushButton->setPixmap( image3 );
1961 if(Stop_PushButton->isDown()) 1948 if(Stop_PushButton->isDown())
1962 Stop_PushButton->setDown( true); 1949 Stop_PushButton->setDown( true);
1963 // playLabel2->setText( tr("Stop") ); 1950 // playLabel2->setText( tr("Stop") );
1964 1951
1965 } else { //about to stop 1952 } else { //about to stop
1966 1953
1967 QPixmap image4( ( const char** ) image4_data ); 1954 QPixmap image4( ( const char** ) image4_data );
1968 Stop_PushButton->setPixmap( image4); 1955 Stop_PushButton->setPixmap( image4);
1969 if(Stop_PushButton->isDown()) 1956 if(Stop_PushButton->isDown())
1970 Stop_PushButton->setDown( false); 1957 Stop_PushButton->setDown( false);
1971 // playLabel2->setText( tr("Play") ); 1958 // playLabel2->setText( tr("Play") );
1972 if(Rec_PushButton->isDown()) 1959 if(Rec_PushButton->isDown())
1973 Rec_PushButton->setDown( false); 1960 Rec_PushButton->setDown( false);
1974 } 1961 }
1975} 1962}
1976 1963
1977void QtRec::fillDirectoryCombo() { 1964void QtRec::fillDirectoryCombo() {
1978 if( directoryComboBox->count() > 0) 1965 if( directoryComboBox->count() > 0)
1979 directoryComboBox->clear(); 1966 directoryComboBox->clear();
1980 int index = 0; 1967 int index = 0;
1981 Config cfg("OpieRec"); 1968 Config cfg("OpieRec");
1982 cfg.setGroup("Settings"); 1969 cfg.setGroup("Settings");
1983 QString dir = cfg.readEntry("directory", "/"); 1970 QString dir = cfg.readEntry("directory", "/");
1984 StorageInfo storageInfo; 1971 StorageInfo storageInfo;
1985 const QList<FileSystem> &fs = storageInfo.fileSystems(); 1972 const QList<FileSystem> &fs = storageInfo.fileSystems();
1986 QListIterator<FileSystem> it ( fs ); 1973 QListIterator<FileSystem> it ( fs );
1987 QString storage; 1974 QString storage;
1988 for( ; it.current(); ++it ){ 1975 for( ; it.current(); ++it ){
1989 const QString name = ( *it)->name(); 1976 const QString name = ( *it)->name();
1990 const QString path = ( *it)->path(); 1977 const QString path = ( *it)->path();
1991 // directoryComboBox->insertItem(name+" "+path); 1978 // directoryComboBox->insertItem(name+" "+path);
1992 directoryComboBox->insertItem(name); 1979 directoryComboBox->insertItem(name);
1993 if( path == dir) 1980 if( path == dir)
1994 directoryComboBox->setCurrentItem( index); 1981 directoryComboBox->setCurrentItem( index);
1995 index++; 1982 index++;
1996 } 1983 }
1997} 1984}
1998 1985
1999void QtRec::errorStop() { 1986void QtRec::errorStop() {
2000 stopped = true; 1987 stopped = true;
2001 wavFile->closeFile(); 1988 wavFile->closeFile();
2002 killTimers(); 1989 killTimers();
2003} 1990}
2004 1991
2005void QtRec::doMute(bool b) { 1992void QtRec::doMute(bool b) {
2006 doVolMuting( b); 1993 doVolMuting( b);
2007 doMicMuting( b); 1994 doMicMuting( b);
2008} 1995}
2009 1996
2010void QtRec::slotAutoMute(bool b) { 1997void QtRec::slotAutoMute(bool b) {
2011 autoMute = b; 1998 autoMute = b;
2012 Config cfg("OpieRec"); 1999 Config cfg("OpieRec");
2013 cfg.setGroup("Settings"); 2000 cfg.setGroup("Settings");
2014 cfg.writeEntry("useAutoMute",b); 2001 cfg.writeEntry("useAutoMute",b);
2015 doMute( b); 2002 doMute( b);
2016 outMuteCheckBox->setChecked( b); 2003 outMuteCheckBox->setChecked( b);
2017 inMuteCheckBox->setChecked( b); 2004 inMuteCheckBox->setChecked( b);
2018} 2005}
2019 2006
2020void QtRec::selectItemByName(const QString & name) { 2007void QtRec::selectItemByName(const QString & name) {
2021 QListViewItemIterator it( ListView1 ); 2008 QListViewItemIterator it( ListView1 );
2022 for ( ; it.current(); ++it ) 2009 for ( ; it.current(); ++it )
2023 if( name == it.current()->text(0)) 2010 if( name == it.current()->text(0))
2024 ListView1->setCurrentItem(it.current()); 2011 ListView1->setCurrentItem(it.current());
2025} 2012}
2026 2013
2027 2014
2028// long findPeak(long input ) { 2015// long findPeak(long input ) {
2029 2016
2030// // halfLife = time in seconds for output to decay to half value after an impulse 2017// // halfLife = time in seconds for output to decay to half value after an impulse
2031// static float output = 0.0; 2018// static float output = 0.0;
2032// float halfLife = .0025; 2019// float halfLife = .0025;
2033// float vsf = .0025; 2020// float vsf = .0025;
2034// float scalar = pow( 0.5, 1.0/(halfLife * filePara.sampleRate )); 2021// float scalar = pow( 0.5, 1.0/(halfLife * filePara.sampleRate ));
2035// if( input < 0.0 ) 2022// if( input < 0.0 )
2036// input = -input; // Absolute value. 2023// input = -input; // Absolute value.
2037// if ( input >= output ) { 2024// if ( input >= output ) {
2038// // When we hit a peak, ride the peak to the top. 2025// // When we hit a peak, ride the peak to the top.
2039// output = input; 2026// output = input;
2040// } else { 2027// } else {
2041// // Exponential decay of output when signal is low. 2028// // Exponential decay of output when signal is low.
2042// output = output * scalar; 2029// output = output * scalar;
2043// // 2030// //
2044// // When current gets close to 0.0, set current to 0.0 to prevent FP underflow 2031// // When current gets close to 0.0, set current to 0.0 to prevent FP underflow
2045// // which can cause a severe performance degradation due to a flood 2032// // which can cause a severe performance degradation due to a flood
2046// // of interrupts. 2033// // of interrupts.
2047// // 2034// //
2048// if( output < vsf ) output = 0.0; 2035// if( output < vsf ) output = 0.0;
2049// } 2036// }
2050 2037
2051// return (long) output; 2038// return (long) output;
2052// } 2039// }
2053 2040
2054void QtRec::changeStereoCheck(bool b) { 2041void QtRec::changeStereoCheck(bool b) {
2055 Config cfg("OpieRec"); 2042 Config cfg("OpieRec");
2056 cfg.setGroup("Settings"); 2043 cfg.setGroup("Settings");
2057 int ch = 0; 2044 int ch = 0;
2058 if ( !b) { ch = 1;} 2045 if ( !b) { ch = 1;}
2059 else { ch = 2;} 2046 else { ch = 2;}
2060 cfg.writeEntry("stereo", b); 2047 cfg.writeEntry("stereo", b);
2061 filePara.channels = ch; 2048 filePara.channels = ch;
2062 2049
2063 cfg.write(); 2050 cfg.write();
2064} 2051}
2065 2052
2066 2053
diff --git a/noncore/multimedia/opierec/qtrec.h b/noncore/multimedia/opierec/qtrec.h
index 642048a..6e81af6 100644
--- a/noncore/multimedia/opierec/qtrec.h
+++ b/noncore/multimedia/opierec/qtrec.h
@@ -1,187 +1,196 @@
1/**************************************************************************** 1/****************************************************************************
2 ** Created: Thu Jan 17 11:19:45 2002 2 ** Created: Thu Jan 17 11:19:45 2002
3copyright 2002 by L.J. Potter ljp@llornkcor.com 3copyright 2002 by L.J. Potter ljp@llornkcor.com
4****************************************************************************/ 4****************************************************************************/
5#ifndef QTREC_H 5#ifndef QTREC_H
6#define QTREC_H 6#define QTREC_H
7#define VERSION 20040628 7#define VERSION 20040628
8 8
9#include <qpe/ir.h> 9#include <qpe/ir.h>
10 10
11#include <qfile.h> 11#include <qfile.h>
12#include <qimage.h> 12#include <qimage.h>
13#include <qlineedit.h> 13#include <qlineedit.h>
14#include <qpixmap.h> 14#include <qpixmap.h>
15#include <qvariant.h> 15#include <qvariant.h>
16#include <qwidget.h> 16#include <qwidget.h>
17#include <stdio.h> 17#include <stdio.h>
18#include <stdlib.h> 18#include <stdlib.h>
19 19
20#include "device.h" 20#include "device.h"
21#include "wavFile.h" 21#include "wavFile.h"
22 22
23class QButtonGroup; 23class QButtonGroup;
24class QCheckBox; 24class QCheckBox;
25class QComboBox; 25class QComboBox;
26class QGridLayout; 26class QGridLayout;
27class QGroupBox; 27class QGroupBox;
28class QHBoxLayout; 28class QHBoxLayout;
29class QIconView; 29class QIconView;
30class QIconViewItem; 30class QIconViewItem;
31class QLabel; 31class QLabel;
32class QLabel; 32class QLabel;
33class QListView; 33class QListView;
34class QListViewItem; 34class QListViewItem;
35class QPushButton; 35class QPushButton;
36class QSlider; 36class QSlider;
37class QTabWidget; 37class QTabWidget;
38class QTimer; 38class QTimer;
39class QVBoxLayout; 39class QVBoxLayout;
40class QLineEdit; 40class QLineEdit;
41 41
42#define MAX_TRACKS 2 42#define MAX_TRACKS 2
43//#define BUFSIZE 4096 43//#define BUFSIZE 4096
44// #define BUFSIZE 8182 //Z default buffer size 44// #define BUFSIZE 8182 //Z default buffer size
45#define BUFSIZE 1024 45#define BUFSIZE 1024
46//#define BUFSIZE 2048 46//#define BUFSIZE 2048
47#define FRAGSIZE 0x7fff000A; 47#define FRAGSIZE 0x7fff000A;
48 48
49#define WAVE_FORMAT_DVI_ADPCM (0x0011) 49#define WAVE_FORMAT_DVI_ADPCM (0x0011)
50#define WAVE_FORMAT_PCM (0x0001) 50#define WAVE_FORMAT_PCM (0x0001)
51//AFMT_IMA_ADPCM 51//AFMT_IMA_ADPCM
52 52
53class QtRec : public QWidget 53class QtRec : public QWidget
54{ 54{
55 Q_OBJECT 55 Q_OBJECT
56 56
57public: 57public:
58 static QString appName() { return QString::fromLatin1("opierec"); } 58 static QString appName() { return QString::fromLatin1("opierec"); }
59 QtRec( QWidget* parent=0, const char* name=0, WFlags fl=0 ); 59 QtRec( QWidget* parent=0, const char* name=0, WFlags fl=0 );
60 ~QtRec(); 60 ~QtRec();
61 QSlider *OutputSlider,*InputSlider; 61 QSlider *OutputSlider,*InputSlider;
62 62
63signals:
64 void stopRecording();
65 void startRecording();
66 void stopPlaying();
67 void startPlaying();
68
63public slots: 69public slots:
70
64private: 71private:
65// int fragment; 72// int fragment;
66 int fd1; 73 int fd1;
67 int secCount; 74 int secCount;
68 QString timeString; 75 QString timeString;
69 76
70 QLineEdit *renameBox; 77 QLineEdit *renameBox;
71 QGroupBox* GroupBox1; 78 QGroupBox* GroupBox1;
72 QString currentFile; 79 QString currentFile;
73 QString date, currentFileName, tmpFileName; 80 QString date, currentFileName, tmpFileName;
74 QTimer *t_timer; 81 QTimer *t_timer;
75 bool needsStereoOut, paused; 82 bool needsStereoOut, paused;
76 bool useTmpFile, autoMute; 83 bool useTmpFile, autoMute;
77 84
78 bool eventFilter( QObject * , QEvent * ); 85 bool eventFilter( QObject * , QEvent * );
79 void okRename(); 86 void okRename();
80 void cancelRename(); 87 void cancelRename();
81 QString getStorage(const QString &); 88 QString getStorage(const QString &);
82 bool rec(); 89 bool rec();
83 int getCurrentSizeLimit(); 90 int getCurrentSizeLimit();
84 long checkDiskSpace(const QString &); 91 long checkDiskSpace(const QString &);
85 void doMute(bool); 92 void doMute(bool);
86 void errorStop(); 93 void errorStop();
87 void fillDirectoryCombo(); 94 void fillDirectoryCombo();
88 void getInVol(); 95 void getInVol();
89 void getOutVol(); 96 void getOutVol();
90 void init(); 97 void init();
91 void initConfig(); 98 void initConfig();
92 void initConnections(); 99 void initConnections();
93 void selectItemByName(const QString &); 100 void selectItemByName(const QString &);
94 void setRecordButton(bool); 101 void setRecordButton(bool);
95 void start(); 102 void start();
96 void stop(); 103 void stop();
97 void timerEvent( QTimerEvent *e ); 104 void timerEvent( QTimerEvent *e );
98 105
99private slots: 106private slots:
107 void endPlaying();
108 void endRecording();
100 109
101 void FastforwardPressed(); 110 void FastforwardPressed();
102 void FastforwardReleased(); 111 void FastforwardReleased();
112
103 void changeDirCombo(int); 113 void changeDirCombo(int);
104 void changeSizeLimitCombo(int); 114 void changeSizeLimitCombo(int);
105 void changeTimeSlider(int); 115 void changeTimeSlider(int);
106 void changebitrateCombo(int); 116 void changebitrateCombo(int);
107 void changeStereoCheck( bool); 117 void changeStereoCheck( bool);
108 118
109 void changedInVolume(); 119 void changedInVolume();
110 void changedOutVolume(); 120 void changedOutVolume();
111 void changesamplerateCombo(int); 121 void changesamplerateCombo(int);
122
112 void cleanUp(); 123 void cleanUp();
113 void compressionSelected(bool); 124 void compressionSelected(bool);
114 void deleteSound(); 125 void deleteSound();
115 void doBeam(); 126 void doBeam();
116 void doMenuPlay(); 127 void doMenuPlay();
117 void doMicMuting(bool); 128 void doMicMuting(bool);
118 void doPlayBtn(); 129 void doPlayBtn();
119 void doRename(); 130 void doRename();
120 void doVolMuting(bool); 131 void doVolMuting(bool);
121 void forwardTimerTimeout(); 132 void forwardTimerTimeout();
122 void itClick(QListViewItem *item); 133 void itClick(QListViewItem *item);
123 void listPressed(int, QListViewItem *, const QPoint&, int); 134 void listPressed(int, QListViewItem *, const QPoint&, int);
124 void newSound(); 135 void newSound();
125 void rewindPressed(); 136 void rewindPressed();
126 void rewindReleased(); 137 void rewindReleased();
127 void rewindTimerTimeout(); 138 void rewindTimerTimeout();
128 void slotAutoMute(bool); 139 void slotAutoMute(bool);
129 void thisTab(QWidget*); 140 void thisTab(QWidget*);
130 void timeSliderPressed(); 141 void timeSliderPressed();
131 void timeSliderReleased(); 142 void timeSliderReleased();
132 void timerBreak(); 143 void timerBreak();
133 void initIconView(); 144 void initIconView();
134/* void changedOutVolume(int); */ 145/* void changedOutVolume(int); */
135/* void changedInVolume(int); */ 146/* void changedInVolume(int); */
136 147
137protected: 148protected:
138 149
139 WavFile *wavFile; 150 WavFile *wavFile;
140 QButtonGroup *ButtonGroup1; 151 QButtonGroup *ButtonGroup1;
141 QCheckBox *outMuteCheckBox, *inMuteCheckBox, *compressionCheckBox, *autoMuteCheckBox, *stereoCheckBox; 152 QCheckBox *outMuteCheckBox, *inMuteCheckBox, *compressionCheckBox, *autoMuteCheckBox, *stereoCheckBox;
142 QComboBox* sampleRateComboBox, * bitRateComboBox, *directoryComboBox, *sizeLimitCombo; 153 QComboBox* sampleRateComboBox, * bitRateComboBox, *directoryComboBox, *sizeLimitCombo;
143 QHBoxLayout* Layout12; 154 QHBoxLayout* Layout12;
144 QHBoxLayout* Layout13; 155 QHBoxLayout* Layout13;
145 QHBoxLayout* Layout14; 156 QHBoxLayout* Layout14;
146 QHBoxLayout* Layout16; 157 QHBoxLayout* Layout16;
147 QHBoxLayout* Layout17; 158 QHBoxLayout* Layout17;
148 QHBoxLayout* Layout19; 159 QHBoxLayout* Layout19;
149 QIconView *IconView1; 160 QIconView *IconView1;
150 QLabel *NewSoundLabel,*playLabel2; 161 QLabel *NewSoundLabel,*playLabel2;
151 QLabel *TextLabel3, *TextLabel1, *TextLabel2; 162 QLabel *TextLabel3, *TextLabel1, *TextLabel2;
152 QListView *ListView1; 163 QListView *ListView1;
153 QPushButton *Stop_PushButton, *Play_PushButton, *Rec_PushButton, *NewSoundButton, *deleteSoundButton, *toBeginningButton, *toEndButton; 164 QPushButton *Stop_PushButton, *Play_PushButton, *Rec_PushButton, *NewSoundButton, *deleteSoundButton, *toBeginningButton, *toEndButton;
154 QString recDir; 165 QString recDir;
155 QTabWidget *TabWidget; 166 QTabWidget *TabWidget;
156 QTimer *t, *rewindTimer, *forwardTimer; 167 QTimer *t, *rewindTimer, *forwardTimer;
157 QVBoxLayout* Layout15; 168 QVBoxLayout* Layout15;
158 QVBoxLayout* Layout15b; 169 QVBoxLayout* Layout15b;
159 QVBoxLayout* Layout18; 170 QVBoxLayout* Layout18;
160 QWidget *tab, *tab_2, *tab_3, *tab_4, *tab_5; 171 QWidget *tab, *tab_2, *tab_3, *tab_4, *tab_5;
161 int sliderPos, total; 172 int sliderPos, total;
162// short inbuffer[BUFSIZE], outbuffer[BUFSIZE]; 173// short inbuffer[BUFSIZE], outbuffer[BUFSIZE];
163// unsigned short unsigned_inbuffer[BUFSIZE], unsigned_outbuffer[BUFSIZE]; 174// unsigned short unsigned_inbuffer[BUFSIZE], unsigned_outbuffer[BUFSIZE];
164 QGroupBox *sampleGroup, *bitGroup, *dirGroup, *sizeGroup; 175 QGroupBox *sampleGroup, *bitGroup, *dirGroup, *sizeGroup;
165/* short inbuffer[65536], outbuffer[65536]; */ 176/* short inbuffer[65536], outbuffer[65536]; */
166/* unsigned short unsigned_inbuffer[65536], unsigned_outbuffer[65536]; */ 177/* unsigned short unsigned_inbuffer[65536], unsigned_outbuffer[65536]; */
167 178
168 179
169 bool doPlay(); 180 bool doPlay();
170 bool openPlayFile(); 181 bool openPlayFile();
171 bool setUpFile(); 182 bool setUpFile();
172 bool setupAudio( bool b); 183 bool setupAudio( bool b);
173 void endPlaying();
174 void endRecording();
175 void fileBeamFinished( Ir *ir); 184 void fileBeamFinished( Ir *ir);
176 void keyPressEvent( QKeyEvent *e); 185 void keyPressEvent( QKeyEvent *e);
177 void keyReleaseEvent( QKeyEvent *e); 186 void keyReleaseEvent( QKeyEvent *e);
178 void receive( const QCString &, const QByteArray & ); 187 void receive( const QCString &, const QByteArray & );
179 void showListMenu(QListViewItem * ); 188 void showListMenu(QListViewItem * );
180#ifndef THREADED 189#ifndef THREADED
181 void quickRec(); 190 void quickRec();
182 void playIt(); 191 void playIt();
183#endif 192#endif
184 193
185}; 194};
186 195
187#endif // QTREC_H 196#endif // QTREC_H
diff --git a/noncore/multimedia/opierec/wavFile.cpp b/noncore/multimedia/opierec/wavFile.cpp
index b53c416..a0423f0 100644
--- a/noncore/multimedia/opierec/wavFile.cpp
+++ b/noncore/multimedia/opierec/wavFile.cpp
@@ -1,314 +1,314 @@
1//wavFile.cpp 1//wavFile.cpp
2#include "wavFile.h" 2#include "wavFile.h"
3#include "qtrec.h" 3#include "qtrec.h"
4 4
5/* OPIE */ 5/* OPIE */
6#include <opie2/odebug.h> 6#include <opie2/odebug.h>
7#include <qpe/config.h> 7#include <qpe/config.h>
8using namespace Opie::Core; 8using namespace Opie::Core;
9 9
10/* QT */ 10/* QT */
11#include <qmessagebox.h> 11#include <qmessagebox.h>
12#include <qdir.h> 12#include <qdir.h>
13 13
14/* STD */ 14/* STD */
15#include <errno.h> 15#include <errno.h>
16#include <sys/time.h> 16#include <sys/time.h>
17#include <sys/types.h> 17#include <sys/types.h>
18#include <sys/vfs.h> 18#include <sys/vfs.h>
19#include <fcntl.h> 19#include <fcntl.h>
20#include <math.h> 20#include <math.h>
21#include <mntent.h> 21#include <mntent.h>
22#include <stdio.h> 22#include <stdio.h>
23#include <stdlib.h> 23#include <stdlib.h>
24#include <unistd.h> 24#include <unistd.h>
25 25
26WavFile::WavFile( QObject * parent,const QString &fileName, bool makeNwFile, int sampleRate, 26WavFile::WavFile( QObject * parent,const QString &fileName, bool makeNwFile, int sampleRate,
27 int channels, int resolution, int format ) 27 int channels, int resolution, int format )
28 : QObject( parent) 28 : QObject( parent)
29{ 29{
30 owarn << "new wave file: " << fileName << oendl; 30 owarn << "new wave file: " << fileName << oendl;
31 bool b = makeNwFile; 31 bool b = makeNwFile;
32 wavSampleRate=sampleRate; 32 wavSampleRate=sampleRate;
33 wavFormat=format; 33 wavFormat=format;
34 wavChannels=channels; 34 wavChannels=channels;
35 wavResolution=resolution; 35 wavResolution=resolution;
36 useTmpFile=false; 36 useTmpFile=false;
37 if( b) { 37 if( b) {
38 newFile(); 38 newFile();
39 } else { 39 } else {
40 openFile(fileName); 40 openFile(fileName);
41 } 41 }
42} 42}
43 43
44bool WavFile::newFile() { 44bool WavFile::newFile() {
45 45
46// odebug << "Set up new file" << oendl; 46// odebug << "Set up new file" << oendl;
47 Config cfg("OpieRec"); 47 Config cfg("OpieRec");
48 cfg.setGroup("Settings"); 48 cfg.setGroup("Settings");
49 49
50 currentFileName=cfg.readEntry("directory",QDir::homeDirPath()); 50 currentFileName=cfg.readEntry("directory",QDir::homeDirPath());
51 QString date; 51 QString date;
52 QDateTime dt = QDateTime::currentDateTime(); 52 QDateTime dt = QDateTime::currentDateTime();
53 date = dt.toString();//TimeString::dateString( QDateTime::currentDateTime(),false,true); 53 date = dt.toString();//TimeString::dateString( QDateTime::currentDateTime(),false,true);
54 date.replace(QRegExp("'"),""); 54 date.replace(QRegExp("'"),"");
55 date.replace(QRegExp(" "),"_"); 55 date.replace(QRegExp(" "),"_");
56 date.replace(QRegExp(":"),"-"); 56 date.replace(QRegExp(":"),"-");
57 date.replace(QRegExp(","),""); 57 date.replace(QRegExp(","),"");
58 58
59 QString currentFile=date; 59 QString currentFile=date;
60 if(currentFileName.right(1).find("/",0,true) == -1) 60 if(currentFileName.right(1).find("/",0,true) == -1)
61 currentFileName += "/" + date; 61 currentFileName += "/" + date;
62 else 62 else
63 currentFileName += date; 63 currentFileName += date;
64 currentFileName+=".wav"; 64 currentFileName+=".wav";
65 65
66// odebug << "set up file for recording: "+currentFileName << oendl; 66// odebug << "set up file for recording: "+currentFileName << oendl;
67 char pointer[] = "/tmp/opierec-XXXXXX"; 67 char pointer[] = "/tmp/opierec-XXXXXX";
68 int fd = 0; 68 int fd = 0;
69 69
70 if( currentFileName.find("/mnt",0,true) == -1 70 if( currentFileName.find("/mnt",0,true) == -1
71 && currentFileName.find("/tmp",0,true) == -1 ) { 71 && currentFileName.find("/tmp",0,true) == -1 ) {
72 // if destination file is most likely in flash (assuming jffs2) 72 // if destination file is most likely in flash (assuming jffs2)
73 // we have to write to a different filesystem first 73 // we have to write to a different filesystem first
74 74
75 useTmpFile = true; 75 useTmpFile = true;
76 if(( fd = mkstemp( pointer)) < 0 ) { 76 if(( fd = mkstemp( pointer)) < 0 ) {
77 perror("mkstemp failed"); 77 perror("mkstemp failed");
78 return false; 78 return false;
79 } 79 }
80 80
81// odebug << "Opening tmp file " << pointer << "" << oendl; 81// odebug << "Opening tmp file " << pointer << "" << oendl;
82 track.setName( pointer); 82 track.setName( pointer);
83 83
84 } else { //just use regular file.. no moving 84 } else { //just use regular file.. no moving
85 85
86 useTmpFile = false; 86 useTmpFile = false;
87 track.setName( currentFileName); 87 track.setName( currentFileName);
88 } 88 }
89 if(!track.open( IO_ReadWrite | IO_Truncate)) { 89 if(!track.open( IO_ReadWrite | IO_Truncate)) {
90 QString errorMsg=(QString)strerror(errno); 90 QString errorMsg=(QString)strerror(errno);
91 odebug << errorMsg << oendl; 91 odebug << errorMsg << oendl;
92 QMessageBox::message("Note", "Error opening file.\n" +errorMsg); 92 QMessageBox::message("Note", "Error opening file.\n" +errorMsg);
93 93
94 return false; 94 return false;
95 } else { 95 } else {
96 setWavHeader( track.handle() , &hdr); 96 setWavHeader( track.handle() , &hdr);
97 } 97 }
98return true; 98return true;
99} 99}
100 100
101WavFile::~WavFile() { 101WavFile::~WavFile() {
102 102
103 closeFile(); 103 closeFile();
104} 104}
105 105
106void WavFile::closeFile() { 106void WavFile::closeFile() {
107 if(track.isOpen()) 107 if(track.isOpen())
108 track.close(); 108 track.close();
109} 109}
110 110
111int WavFile::openFile(const QString &currentFileName) { 111int WavFile::openFile(const QString &currentFileName) {
112 qWarning("open play file "+currentFileName);; 112 qWarning("open play file "+currentFileName);;
113 closeFile(); 113 closeFile();
114 114
115 track.setName(currentFileName); 115 track.setName(currentFileName);
116 116
117 if(!track.open(IO_ReadOnly)) { 117 if(!track.open(IO_ReadOnly)) {
118 QString errorMsg=(QString)strerror(errno); 118 QString errorMsg=(QString)strerror(errno);
119 odebug << "<<<<<<<<<<< "+errorMsg+currentFileName << oendl; 119 odebug << "<<<<<<<<<<< "+errorMsg+currentFileName << oendl;
120 QMessageBox::message("Note", "Error opening file.\n" +errorMsg); 120 QMessageBox::message("Note", "Error opening file.\n" +errorMsg);
121 return -1; 121 return -1;
122 } else { 122 } else {
123 parseWavHeader( track.handle()); 123 parseWavHeader( track.handle());
124 } 124 }
125 return track.handle(); 125 return track.handle();
126} 126}
127 127
128bool WavFile::setWavHeader(int fd, wavhdr *hdr) { 128bool WavFile::setWavHeader(int fd, wavhdr *hdr) {
129 129
130 strncpy((*hdr).riffID, "RIFF", 4); // RIFF 130 strncpy((*hdr).riffID, "RIFF", 4); // RIFF
131 strncpy((*hdr).wavID, "WAVE", 4); //WAVE 131 strncpy((*hdr).wavID, "WAVE", 4); //WAVE
132 strncpy((*hdr).fmtID, "fmt ", 4); // fmt 132 strncpy((*hdr).fmtID, "fmt ", 4); // fmt
133 (*hdr).fmtLen = 16; // format length = 16 133 (*hdr).fmtLen = 16; // format length = 16
134 134
135 if( wavFormat == WAVE_FORMAT_PCM) { 135 if( wavFormat == WAVE_FORMAT_PCM) {
136 (*hdr).fmtTag = 1; // PCM 136 (*hdr).fmtTag = 1; // PCM
137// odebug << "set header WAVE_FORMAT_PCM" << oendl; 137// odebug << "set header WAVE_FORMAT_PCM" << oendl;
138 } 138 }
139 else { 139 else {
140 (*hdr).fmtTag = WAVE_FORMAT_DVI_ADPCM; //intel ADPCM 140 (*hdr).fmtTag = WAVE_FORMAT_DVI_ADPCM; //intel ADPCM
141 // odebug << "set header WAVE_FORMAT_DVI_ADPCM" << oendl; 141 // odebug << "set header WAVE_FORMAT_DVI_ADPCM" << oendl;
142 } 142 }
143 143
144 // (*hdr).nChannels = 1;//filePara.channels;// ? 2 : 1*/; // channels 144 // (*hdr).nChannels = 1;//filePara.channels;// ? 2 : 1*/; // channels
145 (*hdr).nChannels = wavChannels;// ? 2 : 1*/; // channels 145 (*hdr).nChannels = wavChannels;// ? 2 : 1*/; // channels
146 146
147 (*hdr).sampleRate = wavSampleRate; //samples per second 147 (*hdr).sampleRate = wavSampleRate; //samples per second
148 (*hdr).avgBytesPerSec = (wavSampleRate)*( wavChannels*(wavResolution/8)); // bytes per second 148 (*hdr).avgBytesPerSec = (wavSampleRate)*( wavChannels*(wavResolution/8)); // bytes per second
149 (*hdr).nBlockAlign = wavChannels*( wavResolution/8); //block align 149 (*hdr).nBlockAlign = wavChannels*( wavResolution/8); //block align
150 (*hdr).bitsPerSample = wavResolution; //bits per sample 8, or 16 150 (*hdr).bitsPerSample = wavResolution; //bits per sample 8, or 16
151 151
152 strncpy((*hdr).dataID, "data", 4); 152 strncpy((*hdr).dataID, "data", 4);
153 153
154 write( fd,hdr, sizeof(*hdr)); 154 write( fd,hdr, sizeof(*hdr));
155 owarn << "writing header: bitrate " << wavResolution << ", samplerate " << wavSampleRate << ", channels " << wavChannels << oendl; 155// owarn << "writing header: bitrate " << wavResolution << ", samplerate " << wavSampleRate << ", channels " << wavChannels << oendl;
156 return true; 156 return true;
157} 157}
158 158
159bool WavFile::adjustHeaders(int fd, int total) { 159bool WavFile::adjustHeaders(int fd, int total) {
160 lseek(fd, 4, SEEK_SET); 160 lseek(fd, 4, SEEK_SET);
161 int i = total + 36; 161 int i = total + 36;
162 write( fd, &i, sizeof(i)); 162 write( fd, &i, sizeof(i));
163 lseek( fd, 40, SEEK_SET); 163 lseek( fd, 40, SEEK_SET);
164 write( fd, &total, sizeof(total)); 164 write( fd, &total, sizeof(total));
165 owarn << "adjusting header " << total << "" << oendl; 165// owarn << "adjusting header " << total << "" << oendl;
166 return true; 166 return true;
167} 167}
168 168
169int WavFile::parseWavHeader(int fd) { 169int WavFile::parseWavHeader(int fd) {
170 owarn << "Parsing wav header" << oendl; 170// owarn << "Parsing wav header" << oendl;
171 char string[4]; 171 char string[4];
172 int found; 172 int found;
173 short fmt; 173 short fmt;
174 unsigned short ch, bitrate; 174 unsigned short ch, bitrate;
175 unsigned long samplerrate, longdata; 175 unsigned long samplerrate, longdata;
176 176
177 if (read(fd, string, 4) < 4) { 177 if (read(fd, string, 4) < 4) {
178 owarn << " Could not read from sound file." << oendl; 178// owarn << " Could not read from sound file." << oendl;
179 return -1; 179 return -1;
180 } 180 }
181 if (strncmp(string, "RIFF", 4)) { 181 if (strncmp(string, "RIFF", 4)) {
182 owarn << " not a valid WAV file." << oendl; 182// owarn << " not a valid WAV file." << oendl;
183 return -1; 183 return -1;
184 } 184 }
185 lseek(fd, 4, SEEK_CUR); 185 lseek(fd, 4, SEEK_CUR);
186 if (read(fd, string, 4) < 4) { 186 if (read(fd, string, 4) < 4) {
187 owarn << "Could not read from sound file." << oendl; 187// owarn << "Could not read from sound file." << oendl;
188 return -1; 188 return -1;
189 } 189 }
190 if (strncmp(string, "WAVE", 4)) { 190 if (strncmp(string, "WAVE", 4)) {
191 owarn << "not a valid WAV file." << oendl; 191// owarn << "not a valid WAV file." << oendl;
192 return -1; 192 return -1;
193 } 193 }
194 found = 0; 194 found = 0;
195 195
196 while (!found) { 196 while (!found) {
197 if (read(fd, string, 4) < 4) { 197 if (read(fd, string, 4) < 4) {
198 owarn << "Could not read from sound file." << oendl; 198// owarn << "Could not read from sound file." << oendl;
199 return -1; 199 return -1;
200 } 200 }
201 if (strncmp(string, "fmt ", 4)) { 201 if (strncmp(string, "fmt ", 4)) {
202 if (read(fd, &longdata, 4) < 4) { 202 if (read(fd, &longdata, 4) < 4) {
203 owarn << "Could not read from sound file." << oendl; 203// owarn << "Could not read from sound file." << oendl;
204 return -1; 204 return -1;
205 } 205 }
206 lseek(fd, longdata, SEEK_CUR); 206 lseek(fd, longdata, SEEK_CUR);
207 } else { 207 } else {
208 lseek(fd, 4, SEEK_CUR); 208 lseek(fd, 4, SEEK_CUR);
209 if (read(fd, &fmt, 2) < 2) { 209 if (read(fd, &fmt, 2) < 2) {
210 owarn << "Could not read format chunk." << oendl; 210// owarn << "Could not read format chunk." << oendl;
211 return -1; 211 return -1;
212 } 212 }
213 if (fmt != WAVE_FORMAT_PCM && fmt != WAVE_FORMAT_DVI_ADPCM) { 213 if (fmt != WAVE_FORMAT_PCM && fmt != WAVE_FORMAT_DVI_ADPCM) {
214 owarn << "Wave file contains unknown format. Unable to continue." << oendl; 214// owarn << "Wave file contains unknown format. Unable to continue." << oendl;
215 return -1; 215 return -1;
216 } 216 }
217 wavFormat = fmt; 217 wavFormat = fmt;
218 // compressionFormat=fmt; 218 // compressionFormat=fmt;
219 owarn << "compressionFormat is " << fmt << "" << oendl; 219// owarn << "compressionFormat is " << fmt << "" << oendl;
220 if (read(fd, &ch, 2) < 2) { 220 if (read(fd, &ch, 2) < 2) {
221 owarn << "Could not read format chunk." << oendl; 221// owarn << "Could not read format chunk." << oendl;
222 return -1; 222 return -1;
223 } else { 223 } else {
224 wavChannels = ch; 224 wavChannels = ch;
225 owarn << "File has " << ch << " channels" << oendl; 225// owarn << "File has " << ch << " channels" << oendl;
226 } 226 }
227 if (read(fd, &samplerrate, 4) < 4) { 227 if (read(fd, &samplerrate, 4) < 4) {
228 owarn << "Could not read from format chunk." << oendl; 228// owarn << "Could not read from format chunk." << oendl;
229 return -1; 229 return -1;
230 } else { 230 } else {
231 wavSampleRate = samplerrate; 231 wavSampleRate = samplerrate;
232 // sampleRate = samplerrate; 232 // sampleRate = samplerrate;
233 owarn << "File has samplerate of " << (int) samplerrate << "" << oendl; 233// owarn << "File has samplerate of " << (int) samplerrate << "" << oendl;
234 } 234 }
235 lseek(fd, 6, SEEK_CUR); 235 lseek(fd, 6, SEEK_CUR);
236 if (read(fd, &bitrate, 2) < 2) { 236 if (read(fd, &bitrate, 2) < 2) {
237 owarn << "Could not read format chunk." << oendl; 237// owarn << "Could not read format chunk." << oendl;
238 return -1; 238 return -1;
239 } else { 239 } else {
240 wavResolution=bitrate; 240 wavResolution=bitrate;
241 // resolution = bitrate; 241 // resolution = bitrate;
242 owarn << "File has bitrate of " << bitrate << "" << oendl; 242// owarn << "File has bitrate of " << bitrate << "" << oendl;
243 } 243 }
244 found++; 244 found++;
245 } 245 }
246 } 246 }
247 found = 0; 247 found = 0;
248 while (!found) { 248 while (!found) {
249 if (read(fd, string, 4) < 4) { 249 if (read(fd, string, 4) < 4) {
250 odebug << "Could not read from sound file." << oendl; 250 odebug << "Could not read from sound file." << oendl;
251 return -1; 251 return -1;
252 } 252 }
253 253
254 if (strncmp(string, "data", 4)) { 254 if (strncmp(string, "data", 4)) {
255 if (read(fd, &longdata, 4)<4) { 255 if (read(fd, &longdata, 4)<4) {
256 odebug << "Could not read from sound file." << oendl; 256 odebug << "Could not read from sound file." << oendl;
257 return -1; 257 return -1;
258 } 258 }
259 259
260 lseek(fd, longdata, SEEK_CUR); 260 lseek(fd, longdata, SEEK_CUR);
261 } else { 261 } else {
262 if (read(fd, &longdata, 4) < 4) { 262 if (read(fd, &longdata, 4) < 4) {
263 odebug << "Could not read from sound file." << oendl; 263 odebug << "Could not read from sound file." << oendl;
264 return -1; 264 return -1;
265 } else { 265 } else {
266 wavNumberSamples = longdata; 266 wavNumberSamples = longdata;
267 odebug << "file hase length of " << (int)longdata << "" 267 odebug << "file hase length of " << (int)longdata << ""
268 << "lasting " 268 << "lasting "
269 << (int)(( longdata / wavSampleRate) / wavChannels) / ( wavChannels*( wavResolution/8)) 269 << (int)(( longdata / wavSampleRate) / wavChannels) / ( wavChannels*( wavResolution/8))
270 << " seconds" << oendl; 270 << " seconds" << oendl;
271// wavSeconds = (( longdata / wavSampleRate) / wavChannels) / ( wavChannels*( wavResolution/8)); 271// wavSeconds = (( longdata / wavSampleRate) / wavChannels) / ( wavChannels*( wavResolution/8));
272 272
273 return longdata; 273 return longdata;
274 } 274 }
275 } 275 }
276 } 276 }
277 277
278 lseek(fd, 0, SEEK_SET); 278 lseek(fd, 0, SEEK_SET);
279 279
280 return 0; 280 return 0;
281} 281}
282 282
283QString WavFile::trackName() { 283QString WavFile::trackName() {
284 return track.name(); 284 return track.name();
285} 285}
286 286
287int WavFile::wavHandle(){ 287int WavFile::wavHandle(){
288 return track.handle(); 288 return track.handle();
289} 289}
290 290
291int WavFile::getFormat() { 291int WavFile::getFormat() {
292return wavFormat; 292return wavFormat;
293} 293}
294 294
295int WavFile::getResolution() { 295int WavFile::getResolution() {
296return wavResolution; 296return wavResolution;
297} 297}
298 298
299int WavFile::getSampleRate() { 299int WavFile::getSampleRate() {
300 return wavSampleRate; 300 return wavSampleRate;
301} 301}
302 302
303int WavFile::getNumberSamples() { 303int WavFile::getNumberSamples() {
304 return wavNumberSamples; 304 return wavNumberSamples;
305} 305}
306 306
307bool WavFile::isTempFile() { 307bool WavFile::isTempFile() {
308return useTmpFile; 308return useTmpFile;
309} 309}
310 310
311int WavFile::getChannels() { 311int WavFile::getChannels() {
312 312
313 return wavChannels; 313 return wavChannels;
314} 314}