void K3b::DeviceMenu::Private::_k_aboutToShow() { K3b::Medium medium = k3bcore->mediaCache()->medium( k3bappcore->appDeviceManager()->currentDevice() ); actionContinueMultisession->setVisible( medium.content() == K3b::Medium::ContentData && medium.diskInfo().appendable() ); // non-empty cd/dvd/bd: copy actionCopy->setVisible( !medium.diskInfo().empty() ); // rewritable: erase/format actionFormat->setVisible ( !medium.diskInfo().empty() && medium.diskInfo().rewritable() && medium.diskInfo().mediaType() != K3b::Device::MEDIA_DVD_PLUS_RW ); // audio content: rip audio actionRipAudio->setVisible( medium.content() & K3b::Medium::ContentAudio ); // video dvd: videodvd rip actionRipVideoDVD->setVisible( medium.content() & K3b::Medium::ContentVideoDVD ); // video cd: vcd rip actionRipVcd->setVisible( medium.content() & K3b::Medium::ContentVideoCD ); }
QString mediumToolTip( const K3b::Medium& m ) const { if( m.device() == m_overrideDevice ) return m_overrideToolTip; else { QString s = K3b::MediaSelectionComboBox::mediumToolTip( m ); if( !m.diskInfo().empty() && !(wantedMediumState() & m.diskInfo().diskState()) ) s.append( "<p><i>" + i18n("Medium will be overwritten.") + "</i>" ); return s; } }
KIO::filesize_t K3b::MediaCopyDialog::neededSize() const { K3b::Medium medium = k3bappcore->mediaCache()->medium( m_comboSourceDevice->selectedDevice() ); if( medium.diskInfo().diskState() == K3b::Device::STATE_NO_MEDIA ) return 0; else if( medium.diskInfo().mediaType() & (K3b::Device::MEDIA_DVD_RW_OVWR|K3b::Device::MEDIA_DVD_PLUS_RW) ) return (KIO::filesize_t)medium.iso9660Descriptor().volumeSpaceSize * (KIO::filesize_t)2048; else if ( m_comboCopyMode->currentIndex() == 0 ) return medium.diskInfo().size().mode1Bytes(); else return medium.diskInfo().size().rawBytes(); }
void K3b::WriterSelectionWidget::slotNewBurnMedium( K3b::Device::Device* dev ) { // // Try to select a medium that is better suited than the current one // if( dev && dev != writerDevice() ) { K3b::Medium medium = k3bappcore->mediaCache()->medium( dev ); // // Always prefer newly inserted media over the override device // if( writerDevice() == m_comboMedium->overrideDevice() ) { setWriterDevice( dev ); } // // Prefer an empty medium over one that has to be erased // else if( wantedMediumState() & K3b::Device::STATE_EMPTY && !k3bappcore->mediaCache()->diskInfo( writerDevice() ).empty() && medium.diskInfo().empty() ) { setWriterDevice( dev ); } } }
void K3b::DataMultisessionImportDialog::updateMedia() { d->sessionView->clear(); d->sessions.clear(); QList<K3b::Device::Device*> devices = k3bcore->deviceManager()->allDevices(); bool haveMedium = false; for( QList<K3b::Device::Device *>::const_iterator it = devices.constBegin(); it != devices.constEnd(); ++it ) { K3b::Medium medium = k3bappcore->mediaCache()->medium( *it ); if ( medium.diskInfo().mediaType() & K3b::Device::MEDIA_WRITABLE && medium.diskInfo().diskState() == K3b::Device::STATE_INCOMPLETE ) { addMedium( medium ); haveMedium = true; } else if ( !medium.diskInfo().empty() && medium.diskInfo().mediaType() & ( K3b::Device::MEDIA_DVD_PLUS_RW|K3b::Device::MEDIA_DVD_RW_OVWR ) ) { addMedium( medium ); haveMedium = true; } } if ( !haveMedium ) { QTreeWidgetItem* noMediaItem = new QTreeWidgetItem( d->sessionView ); QFont fnt( noMediaItem->font(0) ); fnt.setItalic( true ); noMediaItem->setText( 0, i18n( "Please insert an appendable medium" ) ); noMediaItem->setFont( 0, fnt ); } else if( QTreeWidgetItem* firstMedium = d->sessionView->topLevelItem(0) ) { if( firstMedium->childCount() > 0 ) d->sessionView->setCurrentItem( firstMedium->child( firstMedium->childCount()-1 ) ); else d->sessionView->setCurrentItem( firstMedium ); } d->sessionView->setEnabled( haveMedium ); }
void K3b::DirView::showMediumInfo( const K3b::Medium& medium ) { if( !d->contextMediaInfoRequested || medium.diskInfo().diskState() == K3b::Device::STATE_EMPTY || medium.diskInfo().diskState() == K3b::Device::STATE_NO_MEDIA ) { // show cd info d->setCurrentView( d->infoView ); d->infoView->reload( medium ); return; } #ifdef ENABLE_DVD_RIPPING else if( medium.content() & K3b::Medium::ContentVideoDVD ) { d->movieView->reload( medium ); d->setCurrentView( d->movieView ); return; } #endif else if( medium.content() & K3b::Medium::ContentVideoCD ) { if( k3bcore ->externalBinManager() ->foundBin( "vcdxrip" ) ) { d->setCurrentView( d->videoView ); d->videoView->reload( medium ); } else { KMessageBox::sorry( this, i18n("K3b uses vcdxrip from the vcdimager package to rip Video CDs. " "Please make sure it is installed.") ); k3bappcore->appDeviceManager()->mountDisk( medium.device() ); } } else if( medium.content() & K3b::Medium::ContentAudio ) { d->setCurrentView( d->cdView ); d->cdView->reload( medium ); } else if( medium.content() & K3b::Medium::ContentData ) { k3bappcore->appDeviceManager()->mountDisk( medium.device() ); } else { // show cd info d->setCurrentView( d->infoView ); d->infoView->reload( medium ); } d->contextMediaInfoRequested = false; }
void K3b::ImageWritingDialog::toggleAll() { K3b::Medium medium = k3bappcore->mediaCache()->medium( d->writerSelectionWidget->writerDevice() ); // set usable writing apps // for now we only restrict ourselves in case of CD images switch( d->currentImageType() ) { case IMAGE_CDRDAO_TOC: d->writerSelectionWidget->setSupportedWritingApps( K3b::WritingAppCdrdao ); break; case IMAGE_CDRECORD_CLONE: d->writerSelectionWidget->setSupportedWritingApps( K3b::WritingAppCdrecord ); break; default: { K3b::WritingApps apps = K3b::WritingAppCdrecord; if ( d->currentImageType() == IMAGE_ISO ) { // DVD/BD is always ISO here apps |= K3b::WritingAppGrowisofs; } if ( K3b::Device::isCdMedia( medium.diskInfo().mediaType() ) ) apps |= K3b::WritingAppCdrdao; d->writerSelectionWidget->setSupportedWritingApps( apps ); break; } } // set a wanted media type (DVD/BD -> only ISO) if ( d->currentImageType() == IMAGE_ISO || d->currentImageType() == IMAGE_UNKNOWN ) { d->writerSelectionWidget->setWantedMediumType( K3b::Device::MEDIA_WRITABLE ); } else { d->writerSelectionWidget->setWantedMediumType( K3b::Device::MEDIA_WRITABLE_CD ); } // set wanted image size if ( d->currentImageType() == IMAGE_ISO ) d->writerSelectionWidget->setWantedMediumSize( K3b::filesize( KUrl(d->imagePath()) )/2048 ); else d->writerSelectionWidget->setWantedMediumSize( Msf() ); // cdrecord clone and cue both need DAO if( d->writerSelectionWidget->writingApp() != K3b::WritingAppCdrdao && ( d->currentImageType() == IMAGE_ISO || d->currentImageType() == IMAGE_AUDIO_CUE ) ) d->writingModeWidget->determineSupportedModesFromMedium( medium ); else d->writingModeWidget->setSupportedModes( K3b::WritingModeSao ); // enable the Write-Button if we found a valid image or the user forced an image type setButtonEnabled( START_BUTTON, d->writerSelectionWidget->writerDevice() && d->currentImageType() != IMAGE_UNKNOWN && QFile::exists( d->imagePath() ) ); // some stuff is only available for iso images if( d->currentImageType() == IMAGE_ISO ) { d->checkVerify->show(); if( !d->advancedTabVisible ) { d->advancedTabIndex = d->optionTabbed->addTab( d->advancedTab, i18n("Advanced") ); } d->advancedTabVisible = true; if( d->checkDummy->isChecked() ) { d->checkVerify->setEnabled( false ); d->checkVerify->setChecked( false ); } else d->checkVerify->setEnabled( true ); } else { if( d->advancedTabVisible ) { d->optionTabbed->removeTab( d->advancedTabIndex ); } d->advancedTabVisible = false; d->checkVerify->hide(); } // and some other stuff only makes sense for audio cues if( d->currentImageType() == IMAGE_AUDIO_CUE ) { if( !d->tempPathTabVisible ) d->tempPathTabIndex = d->optionTabbed->addTab( d->tempPathTab, i18n("&Image") ); d->tempPathTabVisible = true; d->tempDirSelectionWidget->setDisabled( !d->checkCacheImage->isChecked() ); } else { if( d->tempPathTabVisible ) { d->optionTabbed->removeTab( d->tempPathTabIndex ); } d->tempPathTabVisible = false; } d->checkCacheImage->setVisible( d->currentImageType() == IMAGE_AUDIO_CUE ); d->spinCopies->setEnabled( !d->checkDummy->isChecked() ); if( QTreeWidgetItem* item = d->infoView->topLevelItem( 0 ) ) { item->setForeground( 1, d->currentImageType() != d->foundImageType ? d->negativeTextColor : d->normalTextColor ); } }
void K3b::MediaCopyDialog::toggleAll() { updateOverrideDevice(); K3b::Device::Device* readDev = m_comboSourceDevice->selectedDevice(); K3b::Device::Device* burnDev = m_writerSelectionWidget->writerDevice(); K3b::Medium sourceMedium = k3bappcore->mediaCache()->medium( readDev ); K3b::Medium burnMedium = k3bappcore->mediaCache()->medium( burnDev ); if ( burnDev ) { if( readDev != burnDev && burnMedium.diskInfo().mediaType() & K3b::Device::MEDIA_DVD_PLUS_ALL ) { // no simulation support for DVD+R(W) media m_checkSimulate->setChecked(false); m_checkSimulate->setEnabled(false); } else { m_checkSimulate->setDisabled( m_checkOnlyCreateImage->isChecked() ); } } else { m_checkSimulate->setEnabled( !m_checkOnlyCreateImage->isChecked() ); } m_checkDeleteImages->setEnabled( !m_checkOnlyCreateImage->isChecked() && m_checkCacheImage->isChecked() ); m_spinCopies->setDisabled( m_checkSimulate->isChecked() || m_checkOnlyCreateImage->isChecked() ); m_tempDirSelectionWidget->setDisabled( !m_checkCacheImage->isChecked() && !m_checkOnlyCreateImage->isChecked() ); m_writerSelectionWidget->setDisabled( m_checkOnlyCreateImage->isChecked() ); m_checkCacheImage->setEnabled( !m_checkOnlyCreateImage->isChecked() ); m_writingModeWidget->setEnabled( !m_checkOnlyCreateImage->isChecked() ); // FIXME: no verification for CD yet m_checkVerifyData->setDisabled( sourceMedium.diskInfo().mediaType() & K3b::Device::MEDIA_CD_ALL || sourceMedium.content() & K3b::Medium::ContentAudio || m_checkSimulate->isChecked() ); // we can only clone single session CDs if( K3b::Device::isCdMedia( sourceMedium.diskInfo().mediaType() ) ) { m_writerSelectionWidget->setWantedMediumType( K3b::Device::MEDIA_WRITABLE_CD ); m_writerSelectionWidget->setSupportedWritingApps( K3b::WritingAppCdrecord ); if ( sourceMedium.toc().sessions() == 1 ) { m_comboCopyMode->setEnabled( true ); } else { m_comboCopyMode->setEnabled( false ); m_comboCopyMode->setCurrentIndex( 0 ); } } else { m_writerSelectionWidget->setSupportedWritingApps( K3b::WritingAppGrowisofs|K3b::WritingAppCdrecord ); m_comboCopyMode->setEnabled( false ); m_comboCopyMode->setCurrentIndex( 0 ); // FIXME: at some point the media combo should also handle media sizes! if ( K3b::Device::isDvdMedia( sourceMedium.diskInfo().mediaType() ) ) { m_writerSelectionWidget->setWantedMediumType( sourceMedium.diskInfo().numLayers() > 1 && sourceMedium.diskInfo().size() > MediaSizeDvd4Gb ? K3b::Device::MEDIA_WRITABLE_DVD_DL : K3b::Device::MEDIA_WRITABLE_DVD ); } else if( Device::isBdMedia( sourceMedium.diskInfo().mediaType() ) ) { // FIXME: do the same single layer/dual layer thing like with DVD m_writerSelectionWidget->setWantedMediumType( K3b::Device::MEDIA_WRITABLE_BD ); } else { // generic media request in case we have no source medium m_writerSelectionWidget->setWantedMediumType( K3b::Device::MEDIA_WRITABLE ); } } // CD Cloning if( m_comboCopyMode->currentIndex() == 1 ) { // cdrecord does not support cloning on-the-fly m_checkCacheImage->setChecked(true); m_checkCacheImage->setEnabled(false); m_writingModeWidget->setSupportedModes( K3b::WritingModeRaw ); } // Normal CD/DVD/Blu-ray copy else { // // If the same device is used for reading and writing all we can present is a fuzzy // selection of the writing mode // if( burnDev == readDev ) { K3b::WritingModes modes = 0; if ( sourceMedium.diskInfo().mediaType() & K3b::Device::MEDIA_CD_ALL ) { modes = K3b::WritingModeTao|K3b::WritingModeSao|K3b::WritingModeRaw; } else if ( sourceMedium.diskInfo().mediaType() & K3b::Device::MEDIA_DVD_ALL ) { // only auto for DVD+R(W) if( burnDev->writeCapabilities() & (K3b::Device::MEDIA_DVD_R|K3b::Device::MEDIA_DVD_RW) ) { modes |= K3b::WritingModeSao|K3b::WritingModeRestrictedOverwrite; if( burnDev->featureCurrent( K3b::Device::FEATURE_INCREMENTAL_STREAMING_WRITABLE ) != 0 ) modes |= K3b::WritingModeIncrementalSequential; } // TODO: once we have layer jump support: this is where it goes // if ( burnDev->supportsWritingMode( K3b::Device::WRITING_MODE_LAYER_JUMP ) ) { // modes |= K3b::Device::WRITING_MODE_LAYER_JUMP; // } } else if ( sourceMedium.diskInfo().mediaType() & K3b::Device::MEDIA_BD_ALL ) { // no modes, only auto } m_writingModeWidget->setSupportedModes( modes ); } else { m_writingModeWidget->determineSupportedModesFromMedium( burnDev ); } } m_tempDirSelectionWidget->setNeededSize( neededSize() ); if( sourceMedium.toc().contentType() == K3b::Device::DATA && sourceMedium.toc().count() == 1 ) { m_tempDirSelectionWidget->setSelectionMode( K3b::TempDirSelectionWidget::FILE ); QString mediumName = sourceMedium.volumeId().toLower(); if ( mediumName.isEmpty() ) mediumName = "k3bimage"; m_tempDirSelectionWidget->setDefaultImageFileName( mediumName + QLatin1String(".iso"), true ); } else { m_tempDirSelectionWidget->setSelectionMode( K3b::TempDirSelectionWidget::DIR ); if ( sourceMedium.content() & K3b::Medium::ContentData && !sourceMedium.volumeId().isEmpty() ) { m_tempDirSelectionWidget->setTempPath( m_tempDirSelectionWidget->tempDirectory() + sourceMedium.volumeId().toLower() ); } else if ( sourceMedium.content() & K3b::Medium::ContentAudio && !sourceMedium.cdText().title().isEmpty() ) { m_tempDirSelectionWidget->setTempPath( m_tempDirSelectionWidget->tempDirectory() + sourceMedium.cdText().title() ); } else { m_tempDirSelectionWidget->setTempPath( m_tempDirSelectionWidget->tempDirectory() ); // let the copy job figure it out } } m_groupAdvancedAudioOptions->setEnabled( sourceMedium.content() & K3b::Medium::ContentAudio && m_comboCopyMode->currentIndex() == 0 ); m_groupAdvancedDataOptions->setEnabled( sourceMedium.content() & K3b::Medium::ContentData ); setButtonEnabled( START_BUTTON, m_comboSourceDevice->selectedDevice() && (burnDev || m_checkOnlyCreateImage->isChecked()) ); K3b::InteractionDialog::toggleAll(); }
void K3b::MediaCopyDialog::slotStartClicked() { // // Let's check the available size // if( m_checkCacheImage->isChecked() || m_checkOnlyCreateImage->isChecked() ) { if( neededSize() > m_tempDirSelectionWidget->freeTempSpace() ) { if( KMessageBox::warningContinueCancel( this, i18n("There does not seem to be enough free space in the temporary folder. " "Write anyway?") ) == KMessageBox::Cancel ) return; } } K3b::Device::Device* readDev = m_comboSourceDevice->selectedDevice(); K3b::Device::Device* burnDev = m_writerSelectionWidget->writerDevice(); K3b::Medium sourceMedium = k3bappcore->mediaCache()->medium( readDev ); K3b::Medium burnMedium = k3bappcore->mediaCache()->medium( burnDev ); K3b::JobProgressDialog* dlg = 0; if( m_checkOnlyCreateImage->isChecked() ) { dlg = new K3b::JobProgressDialog( parentWidget() ); } else { dlg = new K3b::BurnProgressDialog( parentWidget() ); } K3b::BurnJob* burnJob = 0; if( m_comboCopyMode->currentIndex() == 1 ) { // // check for m_tempDirSelectionWidget->tempPath() and // m_tempDirSelectionWidget-tempPath() + ".toc" // if( QFileInfo( m_tempDirSelectionWidget->tempPath() ).isFile() ) { if( KMessageBox::warningContinueCancel( this, i18n("Do you want to overwrite %1?",m_tempDirSelectionWidget->tempPath()), i18n("File Exists"), KStandardGuiItem::overwrite() ) != KMessageBox::Continue ) return; } if( QFileInfo( m_tempDirSelectionWidget->tempPath() + ".toc" ).isFile() ) { if( KMessageBox::warningContinueCancel( this, i18n("Do you want to overwrite %1?",m_tempDirSelectionWidget->tempPath() + ".toc"), i18n("File Exists"), KStandardGuiItem::overwrite() ) != KMessageBox::Continue ) return; } K3b::CloneJob* job = new K3b::CloneJob( dlg, this ); job->setWriterDevice( m_writerSelectionWidget->writerDevice() ); job->setReaderDevice( m_comboSourceDevice->selectedDevice() ); job->setImagePath( m_tempDirSelectionWidget->tempPath() ); job->setNoCorrection( m_checkNoCorrection->isChecked() ); job->setRemoveImageFiles( m_checkDeleteImages->isChecked() && !m_checkOnlyCreateImage->isChecked() ); job->setOnlyCreateImage( m_checkOnlyCreateImage->isChecked() ); job->setSimulate( m_checkSimulate->isChecked() ); job->setWriteSpeed( m_writerSelectionWidget->writerSpeed() ); job->setCopies( m_checkSimulate->isChecked() ? 1 : m_spinCopies->value() ); job->setReadRetries( m_spinDataRetries->value() ); burnJob = job; } else if ( sourceMedium.diskInfo().mediaType() & K3b::Device::MEDIA_CD_ALL ) { K3b::CdCopyJob* job = new K3b::CdCopyJob( dlg, this ); job->setWriterDevice( m_writerSelectionWidget->writerDevice() ); job->setReaderDevice( m_comboSourceDevice->selectedDevice() ); job->setSpeed( m_writerSelectionWidget->writerSpeed() ); job->setSimulate( m_checkSimulate->isChecked() ); job->setOnTheFly( !m_checkCacheImage->isChecked() ); job->setKeepImage( !m_checkDeleteImages->isChecked() || m_checkOnlyCreateImage->isChecked() ); job->setOnlyCreateImage( m_checkOnlyCreateImage->isChecked() ); job->setTempPath( m_tempDirSelectionWidget->plainTempPath() ); job->setCopies( m_checkSimulate->isChecked() ? 1 : m_spinCopies->value() ); job->setParanoiaMode( m_comboParanoiaMode->currentText().toInt() ); job->setDataReadRetries( m_spinDataRetries->value() ); job->setAudioReadRetries( m_spinAudioRetries->value() ); job->setCopyCdText( m_checkReadCdText->isChecked() ); job->setIgnoreDataReadErrors( m_checkIgnoreDataReadErrors->isChecked() ); job->setIgnoreAudioReadErrors( m_checkIgnoreAudioReadErrors->isChecked() ); job->setNoCorrection( m_checkNoCorrection->isChecked() ); job->setWritingMode( m_writingModeWidget->writingMode() ); burnJob = job; } else if ( sourceMedium.diskInfo().mediaType() & ( K3b::Device::MEDIA_DVD_ALL|K3b::Device::MEDIA_BD_ALL ) ) { K3b::DvdCopyJob* job = new K3b::DvdCopyJob( dlg, this ); job->setWriterDevice( m_writerSelectionWidget->writerDevice() ); job->setReaderDevice( m_comboSourceDevice->selectedDevice() ); job->setImagePath( m_tempDirSelectionWidget->tempPath() ); job->setRemoveImageFiles( m_checkDeleteImages->isChecked() && !m_checkOnlyCreateImage->isChecked() ); job->setOnlyCreateImage( m_checkOnlyCreateImage->isChecked() ); job->setSimulate( m_checkSimulate->isChecked() ); job->setOnTheFly( !m_checkCacheImage->isChecked() ); job->setWriteSpeed( m_writerSelectionWidget->writerSpeed() ); job->setCopies( m_checkSimulate->isChecked() ? 1 : m_spinCopies->value() ); job->setWritingMode( m_writingModeWidget->writingMode() ); job->setIgnoreReadErrors( m_checkIgnoreDataReadErrors->isChecked() ); job->setReadRetries( m_spinDataRetries->value() ); job->setVerifyData( m_checkVerifyData->isChecked() ); burnJob = job; } else { // do not translate this as it is not intended to be included in the stable version! KMessageBox::sorry( this, "Ups", "No copy support for this source media type yet." ); return; } hide(); dlg->startJob( burnJob ); delete dlg; delete burnJob; if( KConfigGroup( KGlobal::config(), "General Options" ).readEntry( "keep action dialogs open", false ) ) show(); else close(); }
void K3b::FillStatusDisplay::slotMediumChanged( K3b::Device::Device* ) { if( d->actionAuto->isChecked() ) { // // now search for a usable medium // if we find exactly one usable or multiple with the same size // we use that size // K3b::Medium autoSelectedMedium; QList<K3b::Device::Device*> devs = k3bcore->deviceManager()->burningDevices(); Q_FOREACH( K3b::Device::Device* dev, devs ) { const K3b::Medium medium = k3bappcore->mediaCache()->medium( dev ); if( ( medium.diskInfo().empty() || medium.diskInfo().appendable() || medium.diskInfo().rewritable() ) && ( medium.diskInfo().mediaType() & d->doc->supportedMediaTypes() ) ) { // We use a 10% margin to allow the user to fine-tune project sizes // However, if we have a bigger medium we always use that if ( ( double )d->doc->size() <= ( double )( medium.diskInfo().capacity().mode1Bytes() ) * 1.1 ) { // first usable medium if( !autoSelectedMedium.isValid() ) { autoSelectedMedium = medium; } else { // prefer the medium which can fit the whole doc if ( d->doc->length() <= medium.diskInfo().capacity() && d->doc->length() > autoSelectedMedium.diskInfo().capacity() ) { autoSelectedMedium = medium; } // roughly compare the sizes of the two usable media. If they match, carry on. else if( medium.diskInfo().capacity().lba()/75/60 != autoSelectedMedium.diskInfo().capacity().lba()/75/60 ) { // different usable media -> fallback autoSelectedMedium = K3b::Medium(); break; } } } } } if( autoSelectedMedium.isValid() ) { d->displayWidget->setCdSize( autoSelectedMedium.diskInfo().capacity().lba() ); } else { bool haveDVD = !k3bcore->deviceManager()->dvdWriter().isEmpty(); bool haveBD = !k3bcore->deviceManager()->blueRayWriters().isEmpty(); // default fallback // we do not have BD- or HD-DVD only projects if( ( d->doc->supportedMediaTypes() & K3b::Device::MEDIA_CD_ALL && d->doc->length().lba() <= MediaSizeCd80Min ) || !( d->doc->supportedMediaTypes() & ( K3b::Device::MEDIA_DVD_ALL|K3b::Device::MEDIA_BD_ALL ) ) || ( !haveDVD && !haveBD ) ) { d->displayWidget->setCdSize( MediaSizeCd80Min ); } else if ( haveDVD && ( ( d->doc->supportedMediaTypes() & K3b::Device::MEDIA_DVD_ALL && d->doc->length().lba() <= MediaSizeDvd8Gb ) || !( d->doc->supportedMediaTypes() & K3b::Device::MEDIA_BD_ALL ) || !haveBD ) ) { if( d->doc->length().lba() > MediaSizeDvd4Gb ) d->displayWidget->setCdSize( MediaSizeDvd8Gb ); else d->displayWidget->setCdSize( MediaSizeDvd4Gb ); } else if ( d->doc->length().lba() <= MediaSizeBluRay25Gb ) { d->displayWidget->setCdSize( MediaSizeBluRay25Gb ); } else { d->displayWidget->setCdSize( MediaSizeBluRay50Gb ); } } }