File indexing completed on 2024-05-05 04:51:49
0001 /* 0002 SPDX-FileCopyrightText: 2010 Michal Malek <michalm@jabster.pl> 0003 SPDX-FileCopyrightText: 1998-2010 Sebastian Trueg <trueg@k3b.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "k3bvcdtrackkeysdelegate.h" 0009 #include "k3bvcdtrackkeysmodel.h" 0010 #include "k3bvcdtrack.h" 0011 0012 #include <QComboBox> 0013 0014 Q_DECLARE_METATYPE( K3b::VcdTrack* ) 0015 0016 namespace K3b { 0017 0018 0019 class VcdTrackKeysDelegate::Private 0020 { 0021 public: 0022 Private( QList<VcdTrack*>& t ) : tracks( t ) {} 0023 0024 QList<VcdTrack*>& tracks; 0025 }; 0026 0027 0028 VcdTrackKeysDelegate::VcdTrackKeysDelegate( QList<VcdTrack*>& tracks, QObject* parent ) 0029 : QStyledItemDelegate( parent ), 0030 d( new Private( tracks ) ) 0031 { 0032 } 0033 0034 0035 VcdTrackKeysDelegate::~VcdTrackKeysDelegate() 0036 { 0037 delete d; 0038 } 0039 0040 0041 QWidget* VcdTrackKeysDelegate::createEditor( QWidget* parent, const QStyleOptionViewItem& /*option*/, const QModelIndex& index ) const 0042 { 0043 if( index.isValid() && index.column() == VcdTrackKeysModel::PlayingColumn ) { 0044 QComboBox* combobox = new QComboBox( parent ); 0045 combobox->addItem( QString(), QVariant() ); 0046 Q_FOREACH( VcdTrack* track, d->tracks ) { 0047 combobox->addItem( 0048 VcdTrackKeysModel::trackIcon( track ), 0049 VcdTrackKeysModel::trackName( track ), 0050 QVariant::fromValue( track ) ); 0051 } 0052 combobox->addItem( 0053 VcdTrackKeysModel::trackIcon( 0 ), 0054 VcdTrackKeysModel::trackName( 0 ), 0055 QVariant::fromValue<VcdTrack*>( 0 ) ); 0056 return combobox; 0057 } 0058 else { 0059 return 0; 0060 } 0061 } 0062 0063 0064 void VcdTrackKeysDelegate::setEditorData( QWidget* editor, const QModelIndex& index ) const 0065 { 0066 if( QComboBox* combobox = qobject_cast<QComboBox*>( editor ) ) { 0067 QVariant data = index.data( VcdTrackKeysModel::TrackRole ); 0068 combobox->setCurrentIndex( combobox->findData( data ) ); 0069 } 0070 } 0071 0072 0073 void VcdTrackKeysDelegate::setModelData( QWidget* editor, QAbstractItemModel* model, const QModelIndex& index ) const 0074 { 0075 if( QComboBox* combobox = qobject_cast<QComboBox*>( editor ) ) { 0076 model->setData( index, combobox->itemData( combobox->currentIndex() ) ); 0077 } 0078 } 0079 0080 0081 void VcdTrackKeysDelegate::updateEditorGeometry( QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& /*index*/ ) const 0082 { 0083 editor->setGeometry( option.rect ); 0084 } 0085 0086 } // namespace K3b