File indexing completed on 2024-05-05 04:51:41
0001 /* 0002 SPDX-FileCopyrightText: 2008 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-FileCopyrightText: 2009 Gustavo Pichorim Boiko <gustavo.boiko@kdemail.net> 0004 SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef _K3B_AUDIO_PROJECT_MODEL_H_ 0010 #define _K3B_AUDIO_PROJECT_MODEL_H_ 0011 0012 #include <QAbstractItemModel> 0013 0014 namespace K3b { 0015 0016 class AudioDataSource; 0017 class AudioDoc; 0018 class AudioTrack; 0019 0020 class AudioProjectModel : public QAbstractItemModel 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 AudioProjectModel( AudioDoc* doc, QObject* parent ); 0026 ~AudioProjectModel() override; 0027 0028 enum Columns { 0029 TrackNumberColumn = 0, 0030 TitleColumn, 0031 ArtistColumn, 0032 TypeColumn, 0033 LengthColumn, 0034 FilenameColumn, 0035 NumColumns 0036 }; 0037 0038 AudioDoc* project() const; 0039 0040 AudioTrack* trackForIndex( const QModelIndex& index ) const; 0041 AudioDataSource* sourceForIndex( const QModelIndex& index ) const; 0042 0043 QModelIndex indexForTrack( const AudioTrack* track ) const; 0044 QModelIndex indexForSource( AudioDataSource* source ) const; 0045 0046 int columnCount( const QModelIndex& parent = QModelIndex() ) const override; 0047 QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const override; 0048 QVariant headerData ( int section, Qt::Orientation orientation, int role ) const override; 0049 Qt::ItemFlags flags( const QModelIndex& index ) const override; 0050 QModelIndex index( int row, int column, const QModelIndex& parent = QModelIndex() ) const override; 0051 QModelIndex parent( const QModelIndex& index ) const override; 0052 int rowCount( const QModelIndex& parent = QModelIndex() ) const override; 0053 bool setData( const QModelIndex& index, const QVariant& value, int role = Qt::EditRole ) override; 0054 QMimeData* mimeData( const QModelIndexList& indexes ) const override; 0055 Qt::DropActions supportedDragActions() const override; 0056 Qt::DropActions supportedDropActions() const override; 0057 QStringList mimeTypes() const override; 0058 bool dropMimeData( const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent ) override; 0059 0060 private: 0061 class Private; 0062 Private* const d; 0063 0064 Q_PRIVATE_SLOT( d, void _k_trackAboutToBeAdded( int position ) ) 0065 Q_PRIVATE_SLOT( d, void _k_trackAdded() ) 0066 Q_PRIVATE_SLOT( d, void _k_trackAboutToBeRemoved( int position ) ) 0067 Q_PRIVATE_SLOT( d, void _k_trackRemoved() ) 0068 Q_PRIVATE_SLOT( d, void _k_sourceAboutToBeAdded( K3b::AudioTrack* parent, int position ) ) 0069 Q_PRIVATE_SLOT( d, void _k_sourceAdded() ) 0070 Q_PRIVATE_SLOT( d, void _k_sourceAboutToBeRemoved( K3b::AudioTrack* parent, int position ) ) 0071 Q_PRIVATE_SLOT( d, void _k_sourceRemoved() ) 0072 }; 0073 } 0074 0075 #endif