File indexing completed on 2024-05-05 04:51:42

0001 /*
0002     SPDX-FileCopyrightText: 2009-2010 Michal Malek <michalm@jabster.pl>
0003     SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef K3B_AUDIO_VIEW_IMPL_H
0009 #define K3B_AUDIO_VIEW_IMPL_H
0010 
0011 #include <QAbstractItemModel>
0012 #include <QObject>
0013 #include <QList>
0014 #include <QUrl>
0015 
0016 class QAction;
0017 class KActionCollection;
0018 class QTreeView;
0019 
0020 namespace K3b {
0021     class AudioDataSource;
0022     class AudioDoc;
0023     class AudioProjectDelegate;
0024     class AudioProjectModel;
0025     class AudioTrack;
0026     class AudioTrackPlayer;
0027     class View;
0028     class ViewColumnAdjuster;
0029 
0030     /**
0031      * This class was created to share code and behaviour between \ref K3b::AudioView and \ref K3b::MixedView.
0032      */
0033     class AudioViewImpl : public QObject
0034     {
0035         Q_OBJECT
0036 
0037     public:
0038         AudioViewImpl( View* view, AudioDoc* doc, KActionCollection* actionCollection );
0039 
0040         void addUrls( const QList<QUrl>& urls );
0041 
0042         AudioProjectModel* model() const { return m_model; }
0043         QTreeView* view() const { return m_trackView; }
0044 
0045         AudioTrackPlayer* player() const { return m_player; }
0046 
0047     private Q_SLOTS:
0048         void slotRemove();
0049         void slotAddSilence();
0050         void slotMergeTracks();
0051         void slotSplitSource();
0052         void slotSplitTrack();
0053         void slotEditSource();
0054         void slotTrackProperties();
0055         void slotPlayTrack();
0056         void slotQueryMusicBrainz();
0057         void slotQueryMusicBrainzTrack();
0058         void slotSelectionChanged();
0059         void slotAudioConversion();
0060         void slotAdjustColumns();
0061         void slotPlayingTrack( const K3b::AudioTrack& track );
0062         void slotPlayerStateChanged();
0063 
0064     private:
0065         void tracksForIndexes( QList<AudioTrack*>& tracks,
0066                                const QModelIndexList& indexes ) const;
0067         void sourcesForIndexes( QList<AudioDataSource*>& sources,
0068                                 const QModelIndexList& indexes ) const;
0069 
0070     private:
0071         View* m_view;
0072         AudioDoc* m_doc;
0073         AudioProjectModel* m_model;
0074         QTreeView* m_trackView;
0075         AudioProjectDelegate* m_delegate;
0076         AudioTrackPlayer* m_player;
0077         ViewColumnAdjuster* m_columnAdjuster;
0078         bool m_updatingColumnWidths;
0079 
0080         QAction* m_actionAddSilence;
0081         QAction* m_actionMergeTracks;
0082         QAction* m_actionSplitSource;
0083         QAction* m_actionSplitTrack;
0084         QAction* m_actionEditSource;
0085         QAction* m_actionPlayTrack;
0086         QAction* m_actionQueryMusicBrainz;
0087         QAction* m_actionQueryMusicBrainzTrack;
0088         QAction* m_actionProperties;
0089         QAction* m_actionRemove;
0090         QAction* m_conversionAction;
0091     };
0092 
0093 } // namespace K3b
0094 
0095 #endif