diff options
Diffstat (limited to 'libk3b/projects/mixedcd/k3bmixedjob.h')
-rw-r--r-- | libk3b/projects/mixedcd/k3bmixedjob.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/libk3b/projects/mixedcd/k3bmixedjob.h b/libk3b/projects/mixedcd/k3bmixedjob.h new file mode 100644 index 0000000..50a1dc7 --- /dev/null +++ b/libk3b/projects/mixedcd/k3bmixedjob.h @@ -0,0 +1,144 @@ +/* + * + * $Id: k3bmixedjob.h 619556 2007-01-03 17:38:12Z trueg $ + * Copyright (C) 2003 Sebastian Trueg <[email protected]> + * + * This file is part of the K3b project. + * Copyright (C) 1998-2007 Sebastian Trueg <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * See the file "COPYING" for the exact licensing terms. + */ + + +#ifndef K3BMIXEDJOB_H +#define K3BMIXEDJOB_H + +#include <k3bjob.h> + + +class K3bMixedDoc; +class K3bIsoImager; +class K3bAudioImager; +class QFile; +class QDataStream; +class K3bAbstractWriter; +class K3bWaveFileWriter; +class KTempFile; +class K3bCdrecordWriter; +class K3bMsInfoFetcher; +class K3bAudioNormalizeJob; +class K3bAudioJobTempData; +class K3bDevice::Device; + +/** + *@author Sebastian Trueg + */ +class K3bMixedJob : public K3bBurnJob +{ + Q_OBJECT + + public: + K3bMixedJob( K3bMixedDoc*, K3bJobHandler*, QObject* parent = 0 ); + ~K3bMixedJob(); + + K3bDoc* doc() const; + K3bDevice::Device* writer() const; + + QString jobDescription() const; + QString jobDetails() const; + + public slots: + void cancel(); + void start(); + + protected slots: + // iso imager slots + void slotIsoImagerFinished( bool success ); + void slotIsoImagerPercent(int); + + // ms info fetcher slots + void slotMsInfoFetched(bool); + + // audio decoder slots + void slotAudioDecoderFinished( bool ); + void slotAudioDecoderNextTrack( int, int ); + void slotAudioDecoderPercent(int); + void slotAudioDecoderSubPercent( int ); + + // writer slots + void slotWriterFinished( bool success ); + void slotWriterNextTrack(int, int); + void slotWriterJobPercent(int); + + // normalizing slots + void slotNormalizeJobFinished( bool ); + void slotNormalizeProgress( int ); + void slotNormalizeSubProgress( int ); + + // misc slots + void slotMediaReloadedForSecondSession( bool ); + void slotMaxSpeedJobFinished( bool ); + + private: + bool prepareWriter(); + bool writeTocFile(); + bool writeInfFiles(); + bool startWriting(); + void startFirstCopy(); + void addAudioTracks( K3bCdrecordWriter* writer ); + void addDataTrack( K3bCdrecordWriter* writer ); + void cleanupAfterError(); + void removeBufferFiles(); + void createIsoImage(); + void determineWritingMode(); + void normalizeFiles(); + void prepareProgressInformation(); + void writeNextCopy(); + void determinePreliminaryDataImageSize(); + + K3bMixedDoc* m_doc; + K3bIsoImager* m_isoImager; + K3bAudioImager* m_audioImager; + K3bAudioJobTempData* m_tempData; + K3bWaveFileWriter* m_waveFileWriter; + K3bAbstractWriter* m_writer; + K3bMsInfoFetcher* m_msInfoFetcher; + K3bAudioNormalizeJob* m_normalizeJob; + + QString m_isoImageFilePath; + + KTempFile* m_tocFile; + + enum Action { INITIALIZING_IMAGER, + PREPARING_DATA, + CREATING_ISO_IMAGE, + CREATING_AUDIO_IMAGE, + WRITING_ISO_IMAGE, + WRITING_AUDIO_IMAGE, + FETCHING_MSINFO }; + + int m_currentAction; + double m_audioDocPartOfProcess; + + bool m_canceled; + bool m_errorOccuredAndAlreadyReported; + + int m_usedDataMode; + int m_usedDataWritingApp; + int m_usedAudioWritingApp; + int m_usedDataWritingMode; + int m_usedAudioWritingMode; + + QString m_tempFilePrefix; + + K3b::Msf m_projectSize; + + class Private; + Private* d; +}; + +#endif |