56 | | QDir dev("/dev", "cdrom*", QDir::Name, QDir::System); |
57 | | gc->fillSelectionsFromDir(dev); |
58 | | dev.setNameFilter("scd*"); |
59 | | gc->fillSelectionsFromDir(dev); |
60 | | dev.setNameFilter("hd*"); |
61 | | gc->fillSelectionsFromDir(dev); |
62 | | |
63 | | dev.setNameFilter("cdrom*"); |
64 | | dev.setPath("/dev/cdroms"); |
65 | | gc->fillSelectionsFromDir(dev); |
66 | | gc->setHelpText(QObject::tr("CDRom device used for ripping/playback.")); |
| 57 | gc->addSelection(QObject::tr("default"), "default"); |
| 58 | MediaMonitor *mon = MediaMonitor::GetMediaMonitor(); |
| 59 | QStringList cdroms = mon->GetCDROMBlockDevices(); |
| 60 | QStringList::iterator iter = cdroms.begin(); |
| 61 | for (; iter != cdroms.end(); iter++ ) |
| 62 | gc->addSelection("/dev/"+*iter); |
| 63 | gc->setHelpText(QObject::tr("CDRom device used for ripping/playback. 'default' will use the device specified in MythTV")); |
391 | | HostComboBox *gc = new HostComboBox("CDWriterDevice"); |
392 | | |
393 | | QString argadd[3] = { "", "-dev=ATA", "-dev=ATAPI" }; |
394 | | QString prepend[3] = { "", "ATA:", "ATAPI:" }; |
395 | | |
396 | | for (int i = 0; i < 3; i++) |
397 | | { |
398 | | QStringList args; |
399 | | QStringList result; |
400 | | |
401 | | args = "cdrecord"; |
402 | | args += "--scanbus"; |
403 | | |
404 | | if (argadd[i].length() > 1) |
405 | | args += argadd[i]; |
406 | | |
407 | | QProcess proc(args); |
408 | | |
409 | | MythTimer totaltimer; |
410 | | |
411 | | if (proc.start()) |
412 | | { |
413 | | totaltimer.start(); |
414 | | |
415 | | while (1) |
416 | | { |
417 | | while (proc.canReadLineStdout()) |
418 | | result += proc.readLineStdout(); |
419 | | if (proc.isRunning()) |
420 | | { |
421 | | qApp->processEvents(); |
422 | | usleep(10000); |
423 | | } |
424 | | else |
425 | | { |
426 | | if (!proc.normalExit()) |
427 | | cerr << "Failed to run 'cdrecord --scanbus'\n"; |
428 | | break; |
429 | | } |
430 | | |
431 | | if (totaltimer.elapsed() > 1500) |
432 | | proc.kill(); |
433 | | } |
434 | | } |
435 | | else |
436 | | cerr << "Failed to run 'cdrecord --scanbus'\n"; |
437 | | |
438 | | while (proc.canReadLineStdout()) |
439 | | result += proc.readLineStdout(); |
440 | | |
441 | | for (QStringList::Iterator it = result.begin(); it != result.end(); |
442 | | ++it) |
443 | | { |
444 | | QString line = *it; |
445 | | if (line.length() > 12) |
446 | | { |
447 | | if (line[10] == ')' && line[12] != '*') |
448 | | { |
449 | | gc->addSelection(line.mid(24, 16), prepend[i] + |
450 | | line.mid(1, 5)); |
451 | | cout << "adding: " << prepend[i] + line.mid(1, 5) << " -- " << line.mid(24, 16) << endl; |
452 | | } |
453 | | } |
454 | | } |
455 | | } |
456 | | |
| 388 | HostComboBox *gc = new HostComboBox("CDWriterDevice", true); |
458 | | gc->setHelpText(QObject::tr("Select the SCSI or IDE Device for CD Writing.")); |
| 390 | gc->addSelection(QObject::tr("default"), "default"); |
| 391 | MediaMonitor *mon = MediaMonitor::GetMediaMonitor(); |
| 392 | QStringList cdroms = mon->GetCDROMBlockDevices(); |
| 393 | QStringList::iterator iter = cdroms.begin(); |
| 394 | for (; iter != cdroms.end(); iter++ ) |
| 395 | gc->addSelection("/dev/"+*iter); |
| 396 | gc->setHelpText(QObject::tr("CD/DVD writer device for CD Writing. 'default' will use the device specified in MythTV")); |