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

0001 /*
0002     SPDX-FileCopyrightText: 1998-2007 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "k3baudiodatasourceiterator.h"
0007 #include "k3baudiodoc.h"
0008 #include "k3baudiotrack.h"
0009 #include "k3baudiodatasource.h"
0010 
0011 
0012 K3b::AudioDataSourceIterator::AudioDataSourceIterator( K3b::AudioDoc* doc )
0013     : m_doc( doc )
0014 {
0015     first();
0016 }
0017 
0018 
0019 K3b::AudioDataSource* K3b::AudioDataSourceIterator::current() const
0020 {
0021     return m_currentSource;
0022 }
0023 
0024 
0025 K3b::AudioDataSource* K3b::AudioDataSourceIterator::next()
0026 {
0027     m_currentSource = m_currentSource->next();
0028     if( !m_currentSource ) {
0029         m_currentTrack = m_currentTrack->next();
0030         if( m_currentTrack )
0031             m_currentSource = m_currentTrack->firstSource();
0032     }
0033 
0034     return m_currentSource;
0035 }
0036 
0037 
0038 bool K3b::AudioDataSourceIterator::hasNext() const
0039 {
0040     if( !m_currentSource )
0041         return false;
0042     if( m_currentSource->next() )
0043         return true;
0044     if( m_currentTrack->next() )
0045         return true;
0046 
0047     return false;
0048 }
0049 
0050 
0051 K3b::AudioDataSource* K3b::AudioDataSourceIterator::first()
0052 {
0053     m_currentTrack = m_doc->firstTrack();
0054 
0055     if( m_currentTrack )
0056         m_currentSource = m_currentTrack->firstSource();
0057     else
0058         m_currentSource = 0;
0059 
0060     return m_currentSource;
0061 }