1 /*
2     SPDX-FileCopyrightText: 2003-2009 Sebastian Trueg <trueg@k3b.org>
3     SPDX-FileCopyrightText: 2011 Michal Malek <michalm@jabster.pl>
4     SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org>
5 
6     SPDX-License-Identifier: GPL-2.0-or-later
7 */
8 
9 #ifndef _K3B_DVD_COPY_JOB_H_
10 #define _K3B_DVD_COPY_JOB_H_
11 
12 #include "k3bjob.h"
13 #include "k3b_export.h"
14 #include <QString>
15 
16 
17 namespace K3b {
18     namespace Device {
19         class Device;
20         class DeviceHandler;
21     }
22 
23 
24     class LIBK3B_EXPORT DvdCopyJob : public BurnJob
25     {
26         Q_OBJECT
27 
28     public:
29         explicit DvdCopyJob( JobHandler* hdl, QObject* parent = 0 );
30         ~DvdCopyJob() override;
31 
writer()32         Device::Device* writer() const override { return m_onlyCreateImage ? 0 : m_writerDevice; }
readingDevice()33         Device::Device* readingDevice() const { return m_readerDevice; }
34 
35         QString jobDescription() const override;
36         QString jobDetails() const override;
37 
38         QString jobSource() const override;
39         QString jobTarget() const override;
40 
41     public Q_SLOTS:
42         void start() override;
43         void cancel() override;
44 
setWriterDevice(K3b::Device::Device * w)45         void setWriterDevice( K3b::Device::Device* w ) { m_writerDevice = w; }
setReaderDevice(K3b::Device::Device * w)46         void setReaderDevice( K3b::Device::Device* w ) { m_readerDevice = w; }
setImagePath(const QString & p)47         void setImagePath( const QString& p ) { m_imagePath = p; }
setRemoveImageFiles(bool b)48         void setRemoveImageFiles( bool b ) { m_removeImageFiles = b; }
setOnlyCreateImage(bool b)49         void setOnlyCreateImage( bool b ) { m_onlyCreateImage = b; }
setSimulate(bool b)50         void setSimulate( bool b ) { m_simulate = b; }
setOnTheFly(bool b)51         void setOnTheFly( bool b ) { m_onTheFly = b; }
setWriteSpeed(int s)52         void setWriteSpeed( int s ) { m_speed = s; }
setCopies(int c)53         void setCopies( int c ) { m_copies = c; }
setWritingMode(WritingMode w)54         void setWritingMode( WritingMode w ) { m_writingMode = w; }
setIgnoreReadErrors(bool b)55         void setIgnoreReadErrors( bool b ) { m_ignoreReadErrors = b; }
setReadRetries(int i)56         void setReadRetries( int i ) { m_readRetries = i; }
57         void setVerifyData( bool b );
58 
59     private Q_SLOTS:
60         void slotDiskInfoReady( K3b::Device::DeviceHandler* );
61         void slotReaderProgress( int );
62         void slotReaderProcessedSize( int, int );
63         void slotWriterProgress( int );
64         void slotReaderFinished( bool );
65         void slotWriterFinished( bool );
66         void slotVerificationFinished( bool );
67         void slotVerificationProgress( int p );
68 
69     private:
70         bool waitForDvd();
71         void prepareReader();
72         void prepareWriter();
73         void removeImageFiles();
74 
75         Device::Device* m_writerDevice;
76         Device::Device* m_readerDevice;
77         QString m_imagePath;
78 
79         bool m_onTheFly;
80         bool m_removeImageFiles;
81 
82         bool m_simulate;
83         int m_speed;
84         int m_copies;
85         bool m_onlyCreateImage;
86         bool m_ignoreReadErrors;
87         int m_readRetries;
88 
89         WritingMode m_writingMode;
90 
91         class Private;
92         Private* d;
93     };
94 }
95 
96 
97 #endif
98