summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/applets/vmemo/vmemo.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/core/applets/vmemo/vmemo.cpp b/core/applets/vmemo/vmemo.cpp
index e6c4ff9..4d4d598 100644
--- a/core/applets/vmemo/vmemo.cpp
+++ b/core/applets/vmemo/vmemo.cpp
@@ -127,258 +127,258 @@ static char * vmemo_xpm[] = {
127"o c #66666A", 127"o c #66666A",
128"p c #505054", 128"p c #505054",
129"q c #838388", 129"q c #838388",
130"r c #A1A1A7", 130"r c #A1A1A7",
131"s c #A9A9AE", 131"s c #A9A9AE",
132"t c #A8A8B0", 132"t c #A8A8B0",
133"u c #5E5E63", 133"u c #5E5E63",
134"v c #3A3A3E", 134"v c #3A3A3E",
135"w c #BDBDC6", 135"w c #BDBDC6",
136"x c #59595E", 136"x c #59595E",
137"y c #76767C", 137"y c #76767C",
138"z c #373738", 138"z c #373738",
139"A c #717174", 139"A c #717174",
140"B c #727278", 140"B c #727278",
141"C c #1C1C1E", 141"C c #1C1C1E",
142"D c #3C3C3F", 142"D c #3C3C3F",
143"E c #ADADB6", 143"E c #ADADB6",
144"F c #54555A", 144"F c #54555A",
145"G c #8B8C94", 145"G c #8B8C94",
146"H c #5A5A5F", 146"H c #5A5A5F",
147"I c #BBBBC3", 147"I c #BBBBC3",
148"J c #C4C4CB", 148"J c #C4C4CB",
149"K c #909098", 149"K c #909098",
150"L c #737379", 150"L c #737379",
151"M c #343437", 151"M c #343437",
152"N c #8F8F98", 152"N c #8F8F98",
153"O c #000407", 153"O c #000407",
154"P c #2D3137", 154"P c #2D3137",
155"Q c #B0B1BC", 155"Q c #B0B1BC",
156"R c #3B3C40", 156"R c #3B3C40",
157"S c #6E6E74", 157"S c #6E6E74",
158"T c #95959C", 158"T c #95959C",
159"U c #74747A", 159"U c #74747A",
160"V c #1D1D1E", 160"V c #1D1D1E",
161"W c #91929A", 161"W c #91929A",
162"X c #42444A", 162"X c #42444A",
163"Y c #22282E", 163"Y c #22282E",
164"Z c #B0B2BC", 164"Z c #B0B2BC",
165"` c #898A90", 165"` c #898A90",
166" . c #65656A", 166" . c #65656A",
167".. c #999AA2", 167".. c #999AA2",
168"+. c #52535A", 168"+. c #52535A",
169"@. c #151B21", 169"@. c #151B21",
170"#. c #515257", 170"#. c #515257",
171"$. c #B5B5BE", 171"$. c #B5B5BE",
172"%. c #616167", 172"%. c #616167",
173"&. c #1A1D22", 173"&. c #1A1D22",
174"*. c #000713", 174"*. c #000713",
175"=. c #1F1F21", 175"=. c #1F1F21",
176" ", 176" ",
177" . + @ # ", 177" . + @ # ",
178" $ % & * = - ", 178" $ % & * = - ",
179" ; > , ' ) ! ~ ", 179" ; > , ' ) ! ~ ",
180" { ] ^ / ( _ : ", 180" { ] ^ / ( _ : ",
181" < [ } | 1 2 3 ", 181" < [ } | 1 2 3 ",
182" 4 5 6 7 8 9 0 a b c ", 182" 4 5 6 7 8 9 0 a b c ",
183" d e f g h i j 3 k l m n ", 183" d e f g h i j 3 k l m n ",
184" o p q r s t u v w n ", 184" o p q r s t u v w n ",
185" o x y z A B C D E n ", 185" o x y z A B C D E n ",
186" F G H I J K L M N O ", 186" F G H I J K L M N O ",
187" P Q R S T U V W X ", 187" P Q R S T U V W X ",
188" Y Z ` b ...+. ", 188" Y Z ` b ...+. ",
189" @.#.$.%.&. ", 189" @.#.$.%.&. ",
190" *.B =. ", 190" *.B =. ",
191" n n n n n n n n n "}; 191" n n n n n n n n n "};
192 192
193 193
194VMemo::VMemo( QWidget *parent, const char *_name ) 194VMemo::VMemo( QWidget *parent, const char *_name )
195 : QWidget( parent, _name ) 195 : QWidget( parent, _name )
196{ 196{
197 setFixedHeight( 18 ); 197 setFixedHeight( 18 );
198 setFixedWidth( 14 ); 198 setFixedWidth( 14 );
199 199
200 recording = FALSE; 200 recording = FALSE;
201 201
202 struct utsname name; /* check for embedix kernel running on the zaurus*/ 202 struct utsname name; /* check for embedix kernel running on the zaurus*/
203 if (uname(&name) != -1) { 203 if (uname(&name) != -1) {
204 QString release=name.release; 204 QString release=name.release;
205 if(release.find("embedix",0,TRUE) !=-1) 205 if(release.find("embedix",0,TRUE) !=-1)
206 systemZaurus=TRUE; 206 systemZaurus=TRUE;
207 else { 207 else {
208 systemZaurus=FALSE; 208 systemZaurus=FALSE;
209 myChannel = new QCopChannel( "QPE/VMemo", this ); 209 myChannel = new QCopChannel( "QPE/VMemo", this );
210 connect( myChannel, SIGNAL(received(const QCString&, const QByteArray&)), 210 connect( myChannel, SIGNAL(received(const QCString&, const QByteArray&)),
211 this, SLOT(receive(const QCString&, const QByteArray&)) ); 211 this, SLOT(receive(const QCString&, const QByteArray&)) );
212 212
213// // Register the REC key press, for ipaq only 213// // Register the REC key press, for ipaq only
214 QCopEnvelope e("QPE/Desktop", "keyRegister(int key, QString channel, QString message)"); 214 QCopEnvelope e("QPE/Desktop", "keyRegister(int key, QString channel, QString message)");
215 e << 4096; 215 e << 4096;
216 e << QString("QPE/VMemo"); 216 e << QString("QPE/VMemo");
217 e << QString("toggleRecord()"); 217 e << QString("toggleRecord()");
218 } 218 }
219 } 219 }
220} 220}
221 221
222VMemo::~VMemo() 222VMemo::~VMemo()
223{ 223{
224} 224}
225 225
226void VMemo::receive( const QCString &msg, const QByteArray &data ) 226void VMemo::receive( const QCString &msg, const QByteArray &data )
227{ 227{
228 QDataStream stream( data, IO_ReadOnly ); 228 QDataStream stream( data, IO_ReadOnly );
229 if (msg == "toggleRecord()") { 229 if (msg == "toggleRecord()") {
230 if (recording) 230 if (recording)
231 mouseReleaseEvent(NULL); 231 mouseReleaseEvent(NULL);
232 else 232 else
233 mousePressEvent(NULL); 233 mousePressEvent(NULL);
234 } 234 }
235} 235}
236 236
237void VMemo::paintEvent( QPaintEvent* ) 237void VMemo::paintEvent( QPaintEvent* )
238{ 238{
239 QPainter p(this); 239 QPainter p(this);
240 p.drawPixmap( 0, 1,( const char** ) vmemo_xpm ); 240 p.drawPixmap( 0, 1,( const char** ) vmemo_xpm );
241} 241}
242 242
243void VMemo::mousePressEvent( QMouseEvent *me ) 243void VMemo::mousePressEvent( QMouseEvent *me )
244{ 244{
245 // just to be safe 245 // just to be safe
246 if (recording) { 246 if (recording) {
247 recording = FALSE; 247 recording = FALSE;
248 return; 248 return;
249 } 249 }
250 250
251 /* 251 /*
252 No mousePress/mouseRelease recording on the iPAQ. The REC button on the iPAQ calls these functions 252 No mousePress/mouseRelease recording on the iPAQ. The REC button on the iPAQ calls these functions
253 mousePressEvent and mouseReleaseEvent with a NULL parameter. 253 mousePressEvent and mouseReleaseEvent with a NULL parameter.
254 */ 254 */
255// if (!systemZaurus && me != NULL) 255 if (!systemZaurus && me != NULL)
256// return; 256 return;
257 257
258// Config config( "Sound" ); 258// Config config( "Sound" );
259// config.setGroup( "System" ); 259// config.setGroup( "System" );
260// useAlerts = config.readBoolEntry("Alert"); 260// useAlerts = config.readBoolEntry("Alert");
261 261
262// if(useAlerts) { 262// if(useAlerts) {
263// if( QMessageBox::warning(this,"VMemo","Really Record?","Yes","No",0,0,1) ==1) 263// if( QMessageBox::warning(this,"VMemo","Really Record?","Yes","No",0,0,1) ==1)
264// return; 264// return;
265// } else { 265// } else {
266 QSound::play(Resource::findSound("vmemob")); 266 QSound::play(Resource::findSound("vmemob"));
267// } 267// }
268 qDebug("Start recording"); 268 qDebug("Start recording");
269 recording = TRUE; 269 recording = TRUE;
270 if (openDSP() == -1) { 270 if (openDSP() == -1) {
271 QMessageBox::critical(0, "VMemo", "Could not open dsp device.", "Abort"); 271 QMessageBox::critical(0, "VMemo", "Could not open dsp device.", "Abort");
272 recording = FALSE; 272 recording = FALSE;
273 return; 273 return;
274 } 274 }
275 275
276 Config vmCfg("VMemo"); 276 Config vmCfg("VMemo");
277 vmCfg.setGroup("Defaults"); 277 vmCfg.setGroup("Defaults");
278 278
279 QDateTime dt = QDateTime::currentDateTime(); 279 QDateTime dt = QDateTime::currentDateTime();
280 QString fileName; 280 QString fileName;
281 281
282 if(systemZaurus) 282 if(systemZaurus)
283 fileName=vmCfg.readEntry("Dir", "/mnt/cf/"); // zaurus does not have /mnt/ramfs 283 fileName=vmCfg.readEntry("Dir", "/mnt/cf/"); // zaurus does not have /mnt/ramfs
284 else 284 else
285 fileName=vmCfg.readEntry("Dir", "/mnt/ramfs/"); 285 fileName=vmCfg.readEntry("Dir", "/mnt/ramfs/");
286 286
287 fileName += "vm_"; 287 fileName += "vm_";
288 fileName += dt.toString(); 288 fileName += dt.toString();
289 fileName += ".wav"; 289 fileName += ".wav";
290 290
291 // No spaces in the filename 291 // No spaces in the filename
292 fileName.replace(QRegExp("'"),""); 292 fileName.replace(QRegExp("'"),"");
293 fileName.replace(QRegExp(" "),"_"); 293 fileName.replace(QRegExp(" "),"_");
294 fileName.replace(QRegExp(":"),"."); 294 fileName.replace(QRegExp(":"),".");
295 fileName.replace(QRegExp(","),""); 295 fileName.replace(QRegExp(","),"");
296 296
297 if(openWAV(fileName.latin1()) == -1) { 297 if(openWAV(fileName.latin1()) == -1) {
298 QString err("Could not open the output file: "); 298 QString err("Could not open the output file: ");
299 err += fileName; 299 err += fileName;
300 300
301 QMessageBox::critical(0, "VMemo", err, "Abort"); 301 QMessageBox::critical(0, "VMemo", err, "Abort");
302 close(dsp); 302 close(dsp);
303 return; 303 return;
304 } 304 }
305 305
306 QArray<int> cats(1); 306 QArray<int> cats(1);
307 cats[0] = vmCfg.readNumEntry("Category", 0); 307 cats[0] = vmCfg.readNumEntry("Category", 0);
308 308
309 QString dlName("vm_"); 309 QString dlName("vm_");
310 dlName += dt.toString(); 310 dlName += dt.toString();
311 DocLnk l; 311 DocLnk l;
312 l.setFile(fileName); 312 l.setFile(fileName);
313 l.setName(dlName); 313 l.setName(dlName);
314 l.setType("audio/x-wav"); 314 l.setType("audio/x-wav");
315 l.setCategories(cats); 315 l.setCategories(cats);
316 l.writeLink(); 316 l.writeLink();
317 317
318 record(); 318 record();
319} 319}
320 320
321void VMemo::mouseReleaseEvent( QMouseEvent * ) 321void VMemo::mouseReleaseEvent( QMouseEvent * )
322{ 322{
323 recording = FALSE; 323 recording = FALSE;
324} 324}
325 325
326int VMemo::openDSP() 326int VMemo::openDSP()
327{ 327{
328 Config cfg("Sound"); 328 Config cfg("Sound");
329 cfg.setGroup("Record"); 329 cfg.setGroup("Record");
330 330
331 speed = cfg.readNumEntry("SampleRate", 22050); 331 speed = cfg.readNumEntry("SampleRate", 22050);
332 channels = cfg.readNumEntry("Stereo", 1) ? 2 : 1; // 1 = stereo(2), 0 = mono(1) 332 channels = cfg.readNumEntry("Stereo", 1) ? 2 : 1; // 1 = stereo(2), 0 = mono(1)
333 if (cfg.readNumEntry("SixteenBit", 1)==1) { 333 if (cfg.readNumEntry("SixteenBit", 1)==1) {
334 format = AFMT_S16_LE; 334 format = AFMT_S16_LE;
335 resolution = 16; 335 resolution = 16;
336 } else { 336 } else {
337 format = AFMT_S8; 337 format = AFMT_S8;
338 resolution = 8; 338 resolution = 8;
339 } 339 }
340 340
341 341
342 if(systemZaurus) { 342 if(systemZaurus) {
343 dsp = open("/dev/dsp1", O_RDWR); //Zaurus needs /dev/dsp1 343 dsp = open("/dev/dsp1", O_RDWR); //Zaurus needs /dev/dsp1
344 channels=1; //zaurus has one input channel 344 channels=1; //zaurus has one input channel
345 } else { 345 } else {
346 dsp = open("/dev/dsp", O_RDWR); 346 dsp = open("/dev/dsp", O_RDWR);
347 } 347 }
348 348
349 if(dsp == -1) { 349 if(dsp == -1) {
350 perror("open(\"/dev/dsp\")"); 350 perror("open(\"/dev/dsp\")");
351 return -1; 351 return -1;
352 } 352 }
353 353
354 if(ioctl(dsp, SNDCTL_DSP_SETFMT , &format)==-1) { 354 if(ioctl(dsp, SNDCTL_DSP_SETFMT , &format)==-1) {
355 perror("ioctl(\"SNDCTL_DSP_SETFMT\")"); 355 perror("ioctl(\"SNDCTL_DSP_SETFMT\")");
356 return -1; 356 return -1;
357 } 357 }
358 if(ioctl(dsp, SNDCTL_DSP_CHANNELS , &channels)==-1) { 358 if(ioctl(dsp, SNDCTL_DSP_CHANNELS , &channels)==-1) {
359 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")"); 359 perror("ioctl(\"SNDCTL_DSP_CHANNELS\")");
360 return -1; 360 return -1;
361 } 361 }
362 if(ioctl(dsp, SNDCTL_DSP_SPEED , &speed)==-1) { 362 if(ioctl(dsp, SNDCTL_DSP_SPEED , &speed)==-1) {
363 perror("ioctl(\"SNDCTL_DSP_SPEED\")"); 363 perror("ioctl(\"SNDCTL_DSP_SPEED\")");
364 return -1; 364 return -1;
365 } 365 }
366 if(ioctl(dsp, SOUND_PCM_READ_RATE , &rate)==-1) { 366 if(ioctl(dsp, SOUND_PCM_READ_RATE , &rate)==-1) {
367 perror("ioctl(\"SOUND_PCM_READ_RATE\")"); 367 perror("ioctl(\"SOUND_PCM_READ_RATE\")");
368 return -1; 368 return -1;
369 } 369 }
370 370
371 return 1; 371 return 1;
372} 372}
373 373
374int VMemo::openWAV(const char *filename) 374int VMemo::openWAV(const char *filename)
375{ 375{
376 track.setName(filename); 376 track.setName(filename);
377 if(!track.open(IO_WriteOnly|IO_Truncate|IO_Raw)) 377 if(!track.open(IO_WriteOnly|IO_Truncate|IO_Raw))
378 return -1; 378 return -1;
379 379
380 wav=track.handle(); 380 wav=track.handle();
381 381
382 WaveHeader wh; 382 WaveHeader wh;
383 383
384 wh.main_chunk = RIFF; 384 wh.main_chunk = RIFF;