// FIXME: remember the iso instance for quicker something and search for the videodvd // in the available devices. K3bIso9660* kio_videodvdProtocol::openIso( const KURL& url, QString& plainIsoPath ) { // get the volume id from the url QString volumeId = url.path().section( '/', 1, 1 ); kdDebug() << "(kio_videodvdProtocol) searching for Video dvd: " << volumeId << endl; // now search the devices for this volume id // FIXME: use the cache created in listVideoDVDs for( QPtrListIterator<K3bDevice::Device> it( s_deviceManager->dvdReader() ); *it; ++it ) { K3bDevice::Device* dev = *it; K3bDevice::DiskInfo di = dev->diskInfo(); // we search for a DVD with a single track. // this time let K3bIso9660 decide if we need dvdcss or not // FIXME: check for encryption and libdvdcss and report an error if( di.isDvdMedia() && di.numTracks() == 1 ) { K3bIso9660* iso = new K3bIso9660( dev ); iso->setPlainIso9660( true ); if( iso->open() && iso->primaryDescriptor().volumeId == volumeId ) { plainIsoPath = url.path().section( "/", 2, -1 ) + "/"; kdDebug() << "(kio_videodvdProtocol) using iso path: " << plainIsoPath << endl; return iso; } delete iso; } } error( ERR_SLAVE_DEFINED, i18n("No VideoDVD found") ); return 0; }
void K3bFileTreeView::addDeviceBranch( K3bDevice::Device* dev ) { K3bDeviceBranch* newBranch = new K3bDeviceBranch( this, dev ); addBranch( newBranch ); // search for an equal device int equalCnt = 0; K3bDeviceBranch* equalBranch = 0; for( QMap<KFileTreeBranch*, K3bDevice::Device*>::Iterator it = d->branchDeviceMap.begin(); it != d->branchDeviceMap.end(); ++it ) { K3bDevice::Device* itDev = it.data(); K3bDeviceBranch* itBranch = (K3bDeviceBranch*)it.key(); if( itDev->vendor() == dev->vendor() && itDev->description() == dev->description() ) { ++equalCnt; equalBranch = itBranch; } } // if there is at least one equal device add the block device name // if there is more than one equal device they have been updated after // adding the last one so there is no need to update more than two if( equalCnt > 0 ) { kdDebug() << "(K3bFileTreeView) equal branch" << endl; newBranch->showBlockDeviceName(true); equalBranch->showBlockDeviceName(true); } // add to maps d->branchDeviceMap.insert( newBranch, dev ); d->deviceBranchDict.insert( (void*)dev, newBranch ); updateMinimumWidth(); }
bool K3bDebuggingOutputFile::open() { if( !QFile::open( IO_WriteOnly ) ) return false; addOutput( "System", "K3b Version: " + k3bcore->version() ); addOutput( "System", "KDE Version: " + QString(KDE::versionString()) ); addOutput( "System", "QT Version: " + QString(qVersion()) ); addOutput( "System", "Kernel: " + K3b::kernelVersion() ); // devices in the logfile for( QPtrListIterator<K3bDevice::Device> it( k3bcore->deviceManager()->allDevices() ); *it; ++it ) { K3bDevice::Device* dev = *it; addOutput( "Devices", QString( "%1 (%2, %3) [%5] [%6] [%7]" ) .arg( dev->vendor() + " " + dev->description() + " " + dev->version() ) .arg( dev->blockDeviceName() ) .arg( dev->genericDevice() ) .arg( K3bDevice::deviceTypeString( dev->type() ) ) .arg( K3bDevice::mediaTypeString( dev->supportedProfiles() ) ) .arg( K3bDevice::writingModeString( dev->writingModes() ) ) ); } return true; }
void kio_videodvdProtocol::listVideoDVDs() { int cnt = 0; for( QPtrListIterator<K3bDevice::Device> it( s_deviceManager->dvdReader() ); *it; ++it ) { K3bDevice::Device* dev = *it; K3bDevice::DiskInfo di = dev->diskInfo(); // we search for a DVD with a single track. if( di.isDvdMedia() && di.numTracks() == 1 ) { // // now do a quick check for VideoDVD. // - no dvdcss for speed // - only a check for the VIDEO_TS dir // K3bIso9660 iso( new K3bIso9660DeviceBackend(dev) ); iso.setPlainIso9660( true ); if( iso.open() && iso.firstIsoDirEntry()->entry( "VIDEO_TS" ) ) { // FIXME: cache the entry for speedup UDSEntryList udsl; KIO::UDSEntry uds; KIO::UDSAtom a; a.m_uds = KIO::UDS_NAME; a.m_str = iso.primaryDescriptor().volumeId; uds.append( a ); a.m_uds = KIO::UDS_FILE_TYPE; a.m_long = S_IFDIR; uds.append( a ); a.m_uds = KIO::UDS_MIME_TYPE; a.m_str = "inode/directory"; uds.append( a ); a.m_uds = KIO::UDS_ICON_NAME; a.m_str = "dvd_unmount"; uds.append( a ); udsl.append( uds ); listEntries( udsl ); ++cnt; } } } if( cnt ) finished(); else error( ERR_SLAVE_DEFINED, i18n("No VideoDVD found") ); }