File indexing completed on 2024-05-12 04:51:07
0001 /* 0002 SPDX-FileCopyrightText: 1998-2007 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef K3B_MIXED_DOC_H 0007 #define K3B_MIXED_DOC_H 0008 0009 #include "k3bdoc.h" 0010 #include "k3bdatadoc.h" 0011 #include "k3baudiodoc.h" 0012 #include "k3btoc.h" 0013 #include "k3b_export.h" 0014 0015 class QDomElement; 0016 namespace K3b { 0017 class BurnJob; 0018 0019 class LIBK3B_EXPORT MixedDoc : public Doc 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 explicit MixedDoc( QObject* parent = 0 ); 0025 ~MixedDoc() override; 0026 0027 Type type() const override { return MixedProject; } 0028 QString typeString() const override { return QString::fromLatin1("mixed"); } 0029 0030 QString name() const override; 0031 0032 Device::MediaTypes supportedMediaTypes() const override; 0033 0034 bool newDocument() override; 0035 void clear() override; 0036 0037 void setModified( bool m = true ) override; 0038 bool isModified() const override; 0039 0040 KIO::filesize_t size() const override; 0041 Msf length() const override; 0042 0043 int numOfTracks() const override; 0044 0045 BurnJob* newBurnJob( JobHandler*, QObject* parent = 0 ) override; 0046 0047 AudioDoc* audioDoc() const { return m_audioDoc; } 0048 DataDoc* dataDoc() const { return m_dataDoc; } 0049 0050 enum MixedType { DATA_FIRST_TRACK, 0051 DATA_LAST_TRACK, 0052 DATA_SECOND_SESSION }; 0053 0054 int mixedType() const { return m_mixedType; } 0055 0056 void setURL( const QUrl& url ) override; 0057 0058 /** 0059 * Represent the structure of the doc as CD Table of Contents. 0060 * Be aware that the length of the data track is just an estimate 0061 * and needs to be corrected if not specified here. 0062 * 0063 * @param dataMode mode of the data track (MODE1 or XA_FORM1) 0064 * @param dataTrackLength exact length of the dataTrack 0065 */ 0066 Device::Toc toToc( K3b::Device::Track::DataMode dataMode, const Msf& dataTrackLength = 0 ) const; 0067 0068 public Q_SLOTS: 0069 void setMixedType( MixedType t ) { m_mixedType = t; } 0070 void addUrls( const QList<QUrl>& urls ) override; 0071 0072 protected: 0073 bool loadDocumentData( QDomElement* ) override; 0074 bool saveDocumentData( QDomElement* ) override; 0075 0076 private: 0077 DataDoc* m_dataDoc; 0078 AudioDoc* m_audioDoc; 0079 0080 int m_mixedType; 0081 }; 0082 } 0083 0084 0085 #endif