1 /*
2     SPDX-FileCopyrightText: 2010 Michal Malek <michalm@jabster.pl>
3     SPDX-FileCopyrightText: 1998-2010 Sebastian Trueg <trueg@k3b.org>
4 
5     SPDX-License-Identifier: GPL-2.0-or-later
6 */
7 
8 #ifndef K3BVCDTRACKKEYSMODEL_H
9 #define K3BVCDTRACKKEYSMODEL_H
10 
11 #include <QAbstractTableModel>
12 #include <QMap>
13 
14 
15 namespace K3b {
16 
17 class VcdTrack;
18 
19 class VcdTrackKeysModel : public QAbstractTableModel
20 {
21 public:
22     enum Columns {
23         KeyColumn,
24         PlayingColumn,
25         ColumnCount
26     };
27 
28     enum Roles {
29         TrackRole = Qt::UserRole
30     };
31 
32     typedef QMap<int, VcdTrack*> Key2Track;
33 
34 public:
35     explicit VcdTrackKeysModel( int keyCount, QObject* parent = 0 );
36     ~VcdTrackKeysModel() override;
37 
38     int keyCount() const;
39     void setKeys( const Key2Track& keys );
40     const Key2Track& keys() const;
41 
42     Qt::ItemFlags flags( const QModelIndex& index ) const override;
43     QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const override;
44     bool setData( const QModelIndex& index, const QVariant& value, int role = Qt::EditRole ) override;
45     int columnCount( const QModelIndex& parent = QModelIndex() ) const override;
46     int rowCount( const QModelIndex& parent = QModelIndex() ) const override;
47     QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
48     QModelIndex buddy( const QModelIndex& index ) const override;
49 
50     static QString trackName( VcdTrack* track );
51     static QIcon trackIcon( VcdTrack* track );
52 
53 private:
54     class Private;
55     Private* const d;
56 };
57 
58 }
59 
60 #endif // K3BVCDTRACKKEYSMODEL_H
61