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_