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"