void K3bIsoImageWritingDialog::updateImageSize( const QString& path ) { m_md5Job->cancel(); m_infoView->clear(); d->md5SumItem = 0; d->haveMd5Sum = false; d->isIsoImage = false; QFileInfo info( path ); if( info.isFile() ) { KIO::filesize_t imageSize = K3b::filesize( KURL::fromPathOrURL(path) ); // ------------------------------------------------ // Test for iso9660 image // ------------------------------------------------ K3bIso9660 isoF( path ); if( isoF.open() ) { d->isIsoImage = true; K3bListViewItem* isoRootItem = new K3bListViewItem( m_infoView, m_infoView->lastItem(), i18n("Iso9660 image") ); isoRootItem->setForegroundColor( 0, palette().disabled().foreground() ); isoRootItem->setPixmap( 0, SmallIcon( "cdimage") ); K3bListViewItem* item = new K3bListViewItem( isoRootItem, m_infoView->lastItem(), i18n("Filesize:"), KIO::convertSize( imageSize ) ); item->setForegroundColor( 0, palette().disabled().foreground() ); item = new K3bListViewItem( isoRootItem, m_infoView->lastItem(), i18n("System Id:"), isoF.primaryDescriptor().systemId.isEmpty() ? QString("-") : isoF.primaryDescriptor().systemId ); item->setForegroundColor( 0, palette().disabled().foreground() ); item = new K3bListViewItem( isoRootItem, m_infoView->lastItem(), i18n("Volume Id:"), isoF.primaryDescriptor().volumeId.isEmpty() ? QString("-") : isoF.primaryDescriptor().volumeId ); item->setForegroundColor( 0, palette().disabled().foreground() ); item = new K3bListViewItem( isoRootItem, m_infoView->lastItem(), i18n("Volume Set Id:"), isoF.primaryDescriptor().volumeSetId.isEmpty() ? QString("-") : isoF.primaryDescriptor().volumeSetId ); item->setForegroundColor( 0, palette().disabled().foreground() ); item = new K3bListViewItem( isoRootItem, m_infoView->lastItem(), i18n("Publisher Id:"), isoF.primaryDescriptor().publisherId.isEmpty() ? QString("-") : isoF.primaryDescriptor().publisherId ); item->setForegroundColor( 0, palette().disabled().foreground() ); item = new K3bListViewItem( isoRootItem, m_infoView->lastItem(), i18n("Preparer Id:"), isoF.primaryDescriptor().preparerId.isEmpty() ? QString("-") : isoF.primaryDescriptor().preparerId ); item->setForegroundColor( 0, palette().disabled().foreground() ); item = new K3bListViewItem( isoRootItem, m_infoView->lastItem(), i18n("Application Id:"), isoF.primaryDescriptor().applicationId.isEmpty() ? QString("-") : isoF.primaryDescriptor().applicationId ); item->setForegroundColor( 0, palette().disabled().foreground() ); isoRootItem->setOpen( true ); isoF.close(); } else { K3bListViewItem* item = new K3bListViewItem( m_infoView, m_infoView->lastItem(), i18n("Not an Iso9660 image") ); item->setForegroundColor( 0, Qt::red ); item->setPixmap( 0, SmallIcon( "stop") ); } calculateMd5Sum( path ); } slotWriterChanged(); }
void K3b::ImageWritingDialog::slotUpdateImage( const QString& ) { QString path = d->imagePath(); // check the image types d->haveMd5Sum = false; d->md5Job->cancel(); d->infoView->clear(); //d->infoView->header()->resizeSection( 0, 20 ); d->md5SumItem = 0; d->foundImageType = IMAGE_UNKNOWN; d->tocFile.truncate(0); d->imageFile.truncate(0); QFileInfo info( path ); if( info.isFile() ) { // ------------------------------------------------ // Test for iso9660 image // ------------------------------------------------ K3b::Iso9660 isoF( path ); if( isoF.open() ) { #ifdef K3B_DEBUG isoF.debug(); #endif d->createIso9660InfoItems( &isoF ); isoF.close(); calculateMd5Sum( path ); d->foundImageType = IMAGE_ISO; d->imageFile = path; } if( d->foundImageType == IMAGE_UNKNOWN ) { // check for cdrecord clone image // try both path and path.toc as tocfiles K3b::CloneTocReader cr; if( path.right(4) == ".toc" ) { cr.openFile( path ); if( cr.isValid() ) { d->tocFile = path; d->imageFile = cr.imageFilename(); } } if( d->imageFile.isEmpty() ) { cr.openFile( path + ".toc" ); if( cr.isValid() ) { d->tocFile = cr.filename(); d->imageFile = cr.imageFilename(); } } if( !d->imageFile.isEmpty() ) { // we have a cdrecord clone image d->createCdrecordCloneItems( d->tocFile, d->imageFile ); calculateMd5Sum( d->imageFile ); d->foundImageType = IMAGE_CDRECORD_CLONE; } } if( d->foundImageType == IMAGE_UNKNOWN ) { // check for cue/bin stuff // once again we try both path and path.cue K3b::CueFileParser cp; if( path.right(4).toLower() == ".cue" ) cp.openFile( path ); else if( path.right(4).toLower() == ".bin" ) cp.openFile( path.left( path.length()-3) + "cue" ); if( cp.isValid() ) { d->tocFile = cp.filename(); d->imageFile = cp.imageFilename(); } if( d->imageFile.isEmpty() ) { cp.openFile( path + ".cue" ); if( cp.isValid() ) { d->tocFile = cp.filename(); d->imageFile = cp.imageFilename(); } } if( !d->imageFile.isEmpty() ) { // we have a cue file if( cp.toc().contentType() == K3b::Device::AUDIO ) { d->foundImageType = IMAGE_AUDIO_CUE; d->createAudioCueItems( cp ); } else { d->foundImageType = IMAGE_CUE_BIN; // we cannot be sure if writing will work... :( d->createCueBinItems( d->tocFile, d->imageFile ); calculateMd5Sum( d->imageFile ); } } } if( d->foundImageType == IMAGE_UNKNOWN ) { // TODO: check for cdrdao tocfile } if( d->foundImageType == IMAGE_UNKNOWN ) { QTreeWidgetItem* item = new QTreeWidgetItem( d->infoView ); if ( !info.isReadable() ) { item->setText( 0, i18n("Unable to read image file") ); } else { item->setText( 0, i18n("Seems not to be a usable image") ); } item->setForeground( 0, d->negativeTextColor ); item->setIcon( 0, KIcon( "dialog-error") ); } else { // remember as recent image int i = 0; while ( i < d->comboRecentImages->count() && d->comboRecentImages->itemText(i) != path ) ++i; if ( i == d->comboRecentImages->count() ) d->comboRecentImages->insertItem( 0, path ); } } else { QTreeWidgetItem* item = new QTreeWidgetItem( d->infoView ); item->setText( 0, i18n("File not found") ); item->setForeground( 0, d->negativeTextColor ); item->setIcon( 0, KIcon( "dialog-error") ); } slotToggleAll(); }