File indexing completed on 2024-04-28 04:50:21

0001 /*
0002     SPDX-FileCopyrightText: 2011 Michal Malek <michalm@jabster.pl>
0003     SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef _K3B_AUDIO_TRACK_MODEL_H_
0009 #define _K3B_AUDIO_TRACK_MODEL_H_
0010 
0011 #include <QAbstractItemModel>
0012 
0013 namespace KCDDB {
0014     class CDInfo;
0015 }
0016 
0017 namespace K3b {
0018     class Medium;
0019     
0020     class AudioTrackModel : public QAbstractItemModel
0021     {
0022         Q_OBJECT
0023 
0024     public:
0025         explicit AudioTrackModel( QObject* parent = 0 );
0026         ~AudioTrackModel() override;
0027 
0028         enum Columns {
0029             TrackNumberColumn = 0,
0030             TitleColumn,
0031             ArtistColumn,
0032             LengthColumn,
0033             NumColumns
0034         };
0035 
0036         enum Roles {
0037             MediumRole = 6000,
0038             TrackNumberRole,
0039             ArtistRole,
0040             TitleRole,
0041             CommentRole,
0042             LengthRole
0043         };
0044 
0045         void setMedium( const Medium& medium );
0046         Medium medium() const;
0047 
0048         void setCddbInfo( const KCDDB::CDInfo& data );
0049         KCDDB::CDInfo cddbInfo() const;
0050 
0051         void setTrackChecked( int track, bool checked );
0052         bool trackChecked( int trackIndex ) const;
0053         QList<int> checkedTrackIndices() const;
0054 
0055         int columnCount( const QModelIndex& parent = QModelIndex() ) const override;
0056         QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const override;
0057         QVariant headerData ( int section, Qt::Orientation orientation, int role ) const override;
0058         Qt::ItemFlags flags( const QModelIndex& index ) const override;
0059         QModelIndex index( int row, int column, const QModelIndex& parent = QModelIndex() ) const override;
0060         QModelIndex parent( const QModelIndex& index ) const override;
0061         int rowCount( const QModelIndex& parent = QModelIndex() ) const override;
0062         bool setData( const QModelIndex& index, const QVariant& value, int role = Qt::EditRole ) override;
0063         QMimeData* mimeData( const QModelIndexList& indexes ) const override;
0064         QStringList mimeTypes() const override;
0065 
0066     public Q_SLOTS:
0067         void checkAll();
0068         void uncheckAll();
0069 
0070     private:
0071         class Private;
0072         Private* const d;
0073     };
0074 }
0075 
0076 #endif