File indexing completed on 2024-05-05 04:51:42
0001 /* 0002 SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "k3baudiotrackwidget.h" 0007 #include "k3baudioeditorwidget.h" 0008 #include "k3baudiotrack.h" 0009 0010 #include "k3bmsfedit.h" 0011 #include "k3bvalidators.h" 0012 #include "k3bcdtextvalidator.h" 0013 0014 #include <QLabel> 0015 #include <QCheckBox> 0016 #include <QToolTip> 0017 0018 #include <KLineEdit> 0019 #include <KLocalizedString> 0020 0021 #include <QDebug> 0022 #include <QTabWidget> 0023 0024 0025 K3b::AudioTrackWidget::AudioTrackWidget( const QList<K3b::AudioTrack*>& tracks, 0026 QWidget* parent ) 0027 : QWidget( parent ), 0028 m_tracks(tracks) 0029 { 0030 setupUi( this ); 0031 0032 m_labelPostGap->setBuddy( m_editPostGap ); 0033 m_labelPostGap->setToolTip( m_editPostGap->toolTip() ); 0034 m_labelPostGap->setWhatsThis( m_editPostGap->whatsThis() ); 0035 0036 // no post-gap for the last track 0037 m_editPostGap->setDisabled( tracks.count() == 1 && !tracks.first()->next() ); 0038 0039 K3b::CdTextValidator* val = new K3b::CdTextValidator( this ); 0040 m_editSongwriter->setValidator( val ); 0041 m_editArranger->setValidator( val ); 0042 m_editComposer->setValidator( val ); 0043 m_editMessage->setValidator( val ); 0044 m_editTitle->setValidator( val ); 0045 m_editPerformer->setValidator( val ); 0046 m_editIsrc->setValidator( K3b::Validators::isrcValidator( this ) ); 0047 0048 load(); 0049 } 0050 0051 0052 K3b::AudioTrackWidget::~AudioTrackWidget() 0053 { 0054 } 0055 0056 0057 void K3b::AudioTrackWidget::load() 0058 { 0059 if( !m_tracks.isEmpty() ) { 0060 0061 K3b::AudioTrack* track = m_tracks.first(); 0062 0063 m_editPostGap->setValue( track->postGap() ); 0064 0065 m_editTitle->setText( track->title() ); 0066 m_editPerformer->setText( track->artist() ); 0067 m_editArranger->setText( track->arranger() ); 0068 m_editSongwriter->setText( track->songwriter() ); 0069 m_editComposer->setText( track->composer() ); 0070 m_editIsrc->setText( track->isrc() ); 0071 m_editMessage->setText( track->cdTextMessage() ); 0072 0073 m_checkCopyPermitted->setChecked( !track->copyProtection() ); 0074 m_checkPreemphasis->setChecked( track->preEmp() ); 0075 0076 // load CD-Text for all other tracks 0077 for( int i = 1; i < m_tracks.count(); ++i ) { 0078 track = m_tracks[i]; 0079 0080 // FIXME: handle different post-gaps 0081 // m_editPostGap->setMsfValue( track->postGap() ); 0082 0083 if( track->title() != m_editTitle->text() ) 0084 m_editTitle->setText( QString() ); 0085 0086 if( track->artist() != m_editPerformer->text() ) 0087 m_editPerformer->setText( QString() ); 0088 0089 if( track->arranger() != m_editArranger->text() ) 0090 m_editArranger->setText( QString() ); 0091 0092 if( track->songwriter() != m_editSongwriter->text() ) 0093 m_editSongwriter->setText( QString() ); 0094 0095 if( track->composer() != m_editComposer->text() ) 0096 m_editComposer->setText( QString() ); 0097 0098 if( track->isrc() != m_editIsrc->text() ) 0099 m_editIsrc->setText( QString() ); 0100 0101 if( track->cdTextMessage() != m_editMessage->text() ) 0102 m_editMessage->setText( QString() ); 0103 } 0104 0105 if( m_tracks.count() > 1 ) { 0106 m_checkCopyPermitted->setCheckState( Qt::PartiallyChecked ); 0107 m_checkPreemphasis->setCheckState( Qt::PartiallyChecked ); 0108 } 0109 } 0110 0111 m_editTitle->setFocus(); 0112 } 0113 0114 0115 void K3b::AudioTrackWidget::save() 0116 { 0117 // save CD-Text, preemphasis, and copy protection for all tracks. no problem 0118 for( int i = 0; i < m_tracks.count(); ++i ) { 0119 K3b::AudioTrack* track = m_tracks[i]; 0120 0121 if( m_editTitle->isModified() ) 0122 track->setTitle( m_editTitle->text() ); 0123 0124 if( m_editPerformer->isModified() ) 0125 track->setArtist( m_editPerformer->text() ); 0126 0127 if( m_editArranger->isModified() ) 0128 track->setArranger( m_editArranger->text() ); 0129 0130 if( m_editSongwriter->isModified() ) 0131 track->setSongwriter( m_editSongwriter->text() ); 0132 0133 if( m_editComposer->isModified() ) 0134 track->setComposer( m_editComposer->text() ); 0135 0136 if( m_editIsrc->isModified() ) 0137 track->setIsrc( m_editIsrc->text() ); 0138 0139 if( m_editMessage->isModified() ) 0140 track->setCdTextMessage( m_editMessage->text() ); 0141 0142 if( m_checkCopyPermitted->checkState() != Qt::PartiallyChecked ) 0143 track->setCopyProtection( !m_checkCopyPermitted->isChecked() ); 0144 0145 if( m_checkPreemphasis->checkState() != Qt::PartiallyChecked ) 0146 track->setPreEmp( m_checkPreemphasis->isChecked() ); 0147 0148 track->setIndex0( track->length() - m_editPostGap->value() ); 0149 } 0150 } 0151 0152 #include "moc_k3baudiotrackwidget.cpp"