void K3bVideoCdRippingDialog::slotStartClicked() { QStringList filesExists; QDir d; d.setPath( m_editDirectory ->url() ); if( !d.exists() ) { if( KMessageBox::warningYesNo( this, i18n("Image folder '%1' does not exist. Do you want K3b to create it?").arg( m_editDirectory->url() ) ) == KMessageBox::Yes ) { if( !KStandardDirs::makeDir( m_editDirectory->url() ) ) { KMessageBox::error( this, i18n("Failed to create folder '%1'.").arg( m_editDirectory->url() ) ); return; } } } const QFileInfoList* list = d.entryInfoList(); QFileInfoListIterator it( *list ); QFileInfo* fi; while ( ( fi = it.current() ) != 0 ) { if ( fi ->fileName() != "." && fi ->fileName() != ".." ) filesExists.append( QString( "%1 (%2)" ).arg( QFile::encodeName( fi ->fileName() ) ).arg( KIO::convertSize( fi ->size() ) ) ); ++it; } if( !filesExists.isEmpty() ) if( KMessageBox::questionYesNoList( this, i18n("Continue although the folder is not empty?"), filesExists, i18n("Files Exist"),KStdGuiItem::cont(),KStdGuiItem::cancel() ) == KMessageBox::No ) return; m_videooptions ->setVideoCdIgnoreExt( m_ignoreExt ->isChecked() ); m_videooptions ->setVideoCdSector2336( m_sector2336 ->isChecked() ); m_videooptions ->setVideoCdExtractXml( m_extractXML ->isChecked() ); m_videooptions ->setVideoCdDestination( m_editDirectory ->url() ); K3bJobProgressDialog ripDialog( kapp->mainWidget(), "Ripping" ); K3bVideoCdRip * rip = new K3bVideoCdRip( &ripDialog, m_videooptions ); hide(); ripDialog.startJob( rip ); delete rip; close(); }
void K3b::AudioRippingDialog::slotStartClicked() { // check if all filenames differ if( d->filenames.count() > 1 ) { bool differ = true; // the most stupid version to compare but most cds have about 12 tracks // that's a size where algorithms do not need any optimization! ;) for( int i = 0; i < d->filenames.count(); ++i ) { for( int j = i+1; j < d->filenames.count(); ++j ) if( d->filenames[i] == d->filenames[j] ) { differ = false; break; } } if( !differ ) { KMessageBox::sorry( this, i18n("Please check the naming pattern. All filenames need to be unique.") ); return; } } // check if we need to overwrite some files... QStringList filesToOverwrite; for( int i = 0; i < d->filenames.count(); ++i ) { if( QFile::exists( d->filenames[i] ) ) filesToOverwrite.append( d->filenames[i] ); } if( m_optionWidget->createPlaylist() && QFile::exists( d->playlistFilename ) ) filesToOverwrite.append( d->playlistFilename ); if( !filesToOverwrite.isEmpty() ) if( KMessageBox::questionYesNoList( this, i18n("Do you want to overwrite these files?"), filesToOverwrite, i18n("Files Exist"), KStandardGuiItem::overwrite(), KStandardGuiItem::cancel() ) == KMessageBox::No ) return; // prepare list of tracks to rip AudioRipJob::Tracks tracksToRip; if( m_optionWidget->createSingleFile() && !d->filenames.isEmpty() ) { // Since QMultiMap stores multiple values "from most recently to least recently inserted" // we will add it in reverse order to rip in ascending order for( int i = m_trackNumbers.count()-1; i >= 0; --i ) { tracksToRip.insert( d->filenames.first(), m_trackNumbers[i]+1 ); } } else { for( int i = 0; i < m_trackNumbers.count() && i < d->filenames.count(); ++i ) { tracksToRip.insert( d->filenames[ i ], m_trackNumbers[i]+1 ); } } K3b::JobProgressDialog ripDialog( parentWidget(), "Ripping" ); K3b::AudioEncoder* encoder = m_optionWidget->encoder(); K3b::AudioRipJob* job = new K3b::AudioRipJob( &ripDialog, this ); job->setDevice( m_medium.device() ); job->setCddbEntry( m_cddbEntry ); job->setTrackList( tracksToRip ); job->setParanoiaMode( m_comboParanoiaMode->currentText().toInt() ); job->setMaxRetries( m_spinRetries->value() ); job->setNeverSkip( !m_checkIgnoreReadErrors->isChecked() ); job->setEncoder( encoder ); job->setUseIndex0( m_checkUseIndex0->isChecked() ); job->setWriteCueFile( m_optionWidget->createSingleFile() && m_optionWidget->createCueFile() ); if( m_optionWidget->createPlaylist() ) job->setWritePlaylist( d->playlistFilename, m_optionWidget->playlistRelativePath() ); if( encoder ) job->setFileType( m_optionWidget->extension() ); hide(); ripDialog.startJob(job); qDebug() << "(K3b::AudioRippingDialog) deleting ripjob."; delete job; close(); }