File indexing completed on 2024-05-12 04:51:07
0001 /* 0002 SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef K3BMIXEDJOB_H 0007 #define K3BMIXEDJOB_H 0008 0009 #include "k3bjob.h" 0010 0011 class QTemporaryFile; 0012 0013 namespace K3b { 0014 0015 namespace Device { 0016 class DeviceHandler; 0017 } 0018 class MixedDoc; 0019 class IsoImager; 0020 class AudioImager; 0021 class AbstractWriter; 0022 class WaveFileWriter; 0023 class CdrecordWriter; 0024 class MsInfoFetcher; 0025 class AudioNormalizeJob; 0026 class AudioJobTempData; 0027 class Doc; 0028 0029 class MixedJob : public BurnJob 0030 { 0031 Q_OBJECT 0032 0033 public: 0034 MixedJob( MixedDoc*, JobHandler*, QObject* parent = 0 ); 0035 ~MixedJob() override; 0036 0037 Doc* doc() const; 0038 Device::Device* writer() const override; 0039 0040 QString jobDescription() const override; 0041 QString jobDetails() const override; 0042 0043 public Q_SLOTS: 0044 void cancel() override; 0045 void start() override; 0046 0047 protected Q_SLOTS: 0048 // iso imager slots 0049 void slotIsoImagerFinished( bool success ); 0050 void slotIsoImagerPercent(int); 0051 0052 // ms info fetcher slots 0053 void slotMsInfoFetched(bool); 0054 0055 // audio decoder slots 0056 void slotAudioDecoderFinished( bool ); 0057 void slotAudioDecoderNextTrack( int, int ); 0058 void slotAudioDecoderPercent(int); 0059 void slotAudioDecoderSubPercent( int ); 0060 0061 // writer slots 0062 void slotWriterFinished( bool success ); 0063 void slotWriterNextTrack(int, int); 0064 void slotWriterJobPercent(int); 0065 0066 // normalizing slots 0067 void slotNormalizeJobFinished( bool ); 0068 void slotNormalizeProgress( int ); 0069 void slotNormalizeSubProgress( int ); 0070 0071 // misc slots 0072 void slotMediaReloadedForSecondSession( K3b::Device::DeviceHandler* dh ); 0073 void slotMaxSpeedJobFinished( bool ); 0074 0075 private: 0076 bool prepareWriter(); 0077 bool writeTocFile(); 0078 bool writeInfFiles(); 0079 bool startWriting(); 0080 void startFirstCopy(); 0081 void startSecondSession(); 0082 void addAudioTracks( CdrecordWriter* writer ); 0083 void addDataTrack( CdrecordWriter* writer ); 0084 void cleanupAfterError(); 0085 void removeBufferFiles(); 0086 void createIsoImage(); 0087 void determineWritingMode(); 0088 void normalizeFiles(); 0089 void prepareProgressInformation(); 0090 void writeNextCopy(); 0091 void determinePreliminaryDataImageSize(); 0092 0093 MixedDoc* m_doc; 0094 IsoImager* m_isoImager; 0095 AudioImager* m_audioImager; 0096 AudioJobTempData* m_tempData; 0097 WaveFileWriter* m_waveFileWriter; 0098 AbstractWriter* m_writer; 0099 MsInfoFetcher* m_msInfoFetcher; 0100 AudioNormalizeJob* m_normalizeJob; 0101 0102 QString m_isoImageFilePath; 0103 0104 QTemporaryFile* m_tocFile; 0105 0106 enum Action { INITIALIZING_IMAGER, 0107 PREPARING_DATA, 0108 CREATING_ISO_IMAGE, 0109 CREATING_AUDIO_IMAGE, 0110 WRITING_ISO_IMAGE, 0111 WRITING_AUDIO_IMAGE, 0112 FETCHING_MSMessageInfo }; 0113 0114 int m_currentAction; 0115 double m_audioDocPartOfProcess; 0116 0117 bool m_canceled; 0118 bool m_errorOccuredAndAlreadyReported; 0119 0120 int m_usedDataMode; 0121 WritingApp m_usedDataWritingApp; 0122 WritingApp m_usedAudioWritingApp; 0123 WritingMode m_usedDataWritingMode; 0124 WritingMode m_usedAudioWritingMode; 0125 0126 QString m_tempFilePrefix; 0127 0128 Msf m_projectSize; 0129 0130 class Private; 0131 Private* d; 0132 }; 0133 } 0134 0135 #endif