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