File indexing completed on 2024-05-12 04:51:01

0001 /*
0002     SPDX-FileCopyrightText: 2004 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-FileCopyrightText: 2010 Michal Malek <michalm@jabster.pl>
0004     SPDX-FileCopyrightText: 1998-2010 Sebastian Trueg <trueg@k3b.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #ifndef _K3B_AUDIO_DOC_READER_H_
0010 #define _K3B_AUDIO_DOC_READER_H_
0011 
0012 #include "k3b_export.h"
0013 
0014 #include <QIODevice>
0015 #include <QScopedPointer>
0016 
0017 namespace K3b {
0018 
0019     class AudioDoc;
0020     class AudioTrack;
0021     class AudioTrackReader;
0022 
0023     class LIBK3B_EXPORT AudioDocReader : public QIODevice
0024     {
0025         Q_OBJECT
0026 
0027     public:
0028         explicit AudioDocReader( AudioDoc& doc, QObject* parent = 0 );
0029         ~AudioDocReader() override;
0030 
0031         AudioTrackReader* currentTrackReader() const;
0032         bool setCurrentTrack( const AudioTrack& track );
0033 
0034         bool open( OpenMode mode = ReadOnly ) override;
0035         void close() override;
0036         bool isSequential() const override;
0037         qint64 size() const override;
0038         bool seek( qint64 pos ) override;
0039 
0040     public Q_SLOTS:
0041         void nextTrack();
0042         void previousTrack();
0043 
0044     Q_SIGNALS:
0045         void currentTrackChanged( const K3b::AudioTrack& track );
0046 
0047     protected:
0048         qint64 writeData( const char* data, qint64 len ) override;
0049         qint64 readData( char* data, qint64 maxlen ) override;
0050 
0051     private:
0052         void updatePos();
0053 
0054     private:
0055         class Private;
0056         QScopedPointer<Private> d;
0057         Q_DISABLE_COPY(AudioDocReader)
0058         Q_PRIVATE_SLOT( d, void slotTrackAdded( int position ) )
0059         Q_PRIVATE_SLOT( d, void slotTrackAboutToBeRemoved( int position ) )
0060     };
0061 
0062 } // namespace K3b
0063 
0064 #endif // _K3B_AUDIO_DOC_READER_H_