File indexing completed on 2024-05-12 04:51:01

0001 /*
0002     SPDX-FileCopyrightText: 1998-2007 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "k3baudiojobtempdata.h"
0007 #include "k3baudiodoc.h"
0008 #include "k3baudiotrack.h"
0009 #include "k3bglobals.h"
0010 #include "k3bversion.h"
0011 #include "k3bmsf.h"
0012 #include "k3bcore.h"
0013 
0014 #include <QDebug>
0015 #include <QFile>
0016 
0017 
0018 class K3b::AudioJobTempData::Private
0019 {
0020 public:
0021     Private( K3b::AudioDoc* _doc )
0022         : doc(_doc) {
0023     }
0024 
0025     QVector<QString> bufferFiles;
0026     QVector<QString> infFiles;
0027     QString tocFile;
0028 
0029     K3b::AudioDoc* doc;
0030 };
0031 
0032 
0033 K3b::AudioJobTempData::AudioJobTempData( K3b::AudioDoc* doc, QObject* parent )
0034     : QObject( parent )
0035 {
0036     d = new Private( doc );
0037 }
0038 
0039 
0040 K3b::AudioJobTempData::~AudioJobTempData()
0041 {
0042     delete d;
0043 }
0044 
0045 
0046 QString K3b::AudioJobTempData::bufferFileName( int track )
0047 {
0048     if( (int)d->bufferFiles.count() < track )
0049         prepareTempFileNames();
0050     return d->bufferFiles.at(track-1);
0051 }
0052 
0053 QString K3b::AudioJobTempData::bufferFileName( K3b::AudioTrack* track )
0054 {
0055     return bufferFileName( track->trackNumber() );
0056 }
0057 
0058 
0059 QString K3b::AudioJobTempData::tocFileName()
0060 {
0061     if( d->tocFile.isEmpty() )
0062         prepareTempFileNames();
0063     return d->tocFile;
0064 }
0065 
0066 
0067 QString K3b::AudioJobTempData::infFileName( int track )
0068 {
0069     if( (int)d->infFiles.count() < track )
0070         prepareTempFileNames();
0071     return d->infFiles.at( track - 1 );
0072 }
0073 
0074 QString K3b::AudioJobTempData::infFileName( K3b::AudioTrack* track )
0075 {
0076     return infFileName( track->trackNumber() );
0077 }
0078 
0079 
0080 K3b::AudioDoc* K3b::AudioJobTempData::doc() const
0081 {
0082     return d->doc;
0083 }
0084 
0085 
0086 void K3b::AudioJobTempData::prepareTempFileNames( const QString& path )
0087 {
0088     d->bufferFiles.clear();
0089     d->infFiles.clear();
0090 
0091     QString prefix = K3b::findUniqueFilePrefix( "k3b_audio_", path ) + '_';
0092 
0093     for( int i = 0; i < d->doc->numOfTracks(); i++ ) {
0094         d->bufferFiles.append( prefix + QString::number( i+1 ).rightJustified( 2, '0' ) + ".wav" );
0095         d->infFiles.append( prefix + QString::number( i+1 ).rightJustified( 2, '0' ) + ".inf" );
0096     }
0097 
0098     d->tocFile = prefix + ".toc";
0099 }
0100 
0101 
0102 void K3b::AudioJobTempData::cleanup()
0103 {
0104     for( int i = 0; i < d->infFiles.count(); ++i ) {
0105         if( QFile::exists( d->infFiles[i] ) )
0106             QFile::remove(  d->infFiles[i] );
0107     }
0108 
0109     for( int i = 0; i < d->bufferFiles.count(); ++i ) {
0110         if( QFile::exists( d->bufferFiles[i] ) )
0111             QFile::remove(  d->bufferFiles[i] );
0112     }
0113 
0114     if( QFile::exists( d->tocFile ) )
0115         QFile::remove(  d->tocFile );
0116 }
0117 
0118 #include "moc_k3baudiojobtempdata.cpp"