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 ); }
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::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(); }