File indexing completed on 2024-05-05 04:51:40
0001 /* 0002 SPDX-FileCopyrightText: 1998-2009 Sebastian Trueg <trueg@k3b.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 #include "k3baudiocdtextwidget.h" 0006 #include "ui_base_k3baudiocdtextallfieldsdialog.h" 0007 0008 #include "k3baudiodoc.h" 0009 #include "k3baudiotrack.h" 0010 #include "k3bcdtextvalidator.h" 0011 0012 #include <KLineEdit> 0013 #include <KLocalizedString> 0014 0015 #include <QIcon> 0016 #include <QCheckBox> 0017 #include <QToolButton> 0018 #include <QPushButton> 0019 #include <QLayout> 0020 #include <QGroupBox> 0021 0022 0023 class K3b::AudioCdTextWidget::AllFieldsDialog : public QDialog, public Ui::base_K3bAudioCdTextAllFieldsDialog 0024 { 0025 public: 0026 AllFieldsDialog( QWidget* parent ) 0027 : QDialog( parent) { 0028 setModal(true); 0029 setWindowTitle(i18n("CD-Text")); 0030 setupUi( this ); 0031 } 0032 }; 0033 0034 0035 K3b::AudioCdTextWidget::AudioCdTextWidget( QWidget* parent ) 0036 : QWidget( parent ), 0037 m_doc(0) 0038 { 0039 setupUi( this ); 0040 0041 m_allFieldsDlg = new AllFieldsDialog( this ); 0042 0043 m_buttonCopyTitle->setIcon( QIcon::fromTheme( "edit-copy" ) ); 0044 m_buttonCopyPerformer->setIcon( QIcon::fromTheme( "edit-copy" ) ); 0045 0046 m_allFieldsDlg->m_buttonCopyTitle->setIcon( QIcon::fromTheme( "edit-copy" ) ); 0047 m_allFieldsDlg->m_buttonCopyPerformer->setIcon( QIcon::fromTheme( "edit-copy" ) ); 0048 m_allFieldsDlg->m_buttonCopySongwriter->setIcon( QIcon::fromTheme( "edit-copy" ) ); 0049 m_allFieldsDlg->m_buttonCopyComposer->setIcon( QIcon::fromTheme( "edit-copy" ) ); 0050 m_allFieldsDlg->m_buttonCopyArranger->setIcon( QIcon::fromTheme( "edit-copy" ) ); 0051 0052 QValidator* cdTextVal = new K3b::CdTextValidator( this ); 0053 m_editTitle->setValidator( cdTextVal ); 0054 m_editPerformer->setValidator( cdTextVal ); 0055 0056 m_allFieldsDlg->m_editTitle->setValidator( cdTextVal ); 0057 m_allFieldsDlg->m_editPerformer->setValidator( cdTextVal ); 0058 m_allFieldsDlg->m_editDisc_id->setValidator( cdTextVal ); 0059 m_allFieldsDlg->m_editUpc_ean->setValidator( cdTextVal ); 0060 m_allFieldsDlg->m_editMessage->setValidator( cdTextVal ); 0061 m_allFieldsDlg->m_editArranger->setValidator( cdTextVal ); 0062 m_allFieldsDlg->m_editSongwriter->setValidator( cdTextVal ); 0063 m_allFieldsDlg->m_editComposer->setValidator( cdTextVal ); 0064 0065 connect( m_allFieldsDlg->m_buttonCopyTitle, SIGNAL(clicked()), 0066 this, SLOT(slotCopyTitle()) ); 0067 connect( m_allFieldsDlg->m_buttonCopyPerformer, SIGNAL(clicked()), 0068 this, SLOT(slotCopyPerformer()) ); 0069 connect( m_allFieldsDlg->m_buttonCopyArranger, SIGNAL(clicked()), 0070 this, SLOT(slotCopyArranger()) ); 0071 connect( m_allFieldsDlg->m_buttonCopySongwriter, SIGNAL(clicked()), 0072 this, SLOT(slotCopySongwriter()) ); 0073 connect( m_allFieldsDlg->m_buttonCopyComposer, SIGNAL(clicked()), 0074 this, SLOT(slotCopyComposer()) ); 0075 connect(m_buttonCopyTitle, SIGNAL(clicked()), 0076 this, SLOT(slotCopyTitle()) ); 0077 connect(m_buttonCopyPerformer, SIGNAL(clicked()), 0078 this, SLOT(slotCopyPerformer()) ); 0079 0080 connect( m_buttonMoreFields, SIGNAL(clicked()), 0081 this, SLOT(slotMoreFields()) ); 0082 } 0083 0084 0085 K3b::AudioCdTextWidget::~AudioCdTextWidget() 0086 { 0087 } 0088 0089 void K3b::AudioCdTextWidget::load( K3b::AudioDoc* doc ) 0090 { 0091 m_doc = doc; 0092 m_groupCdText->setChecked( doc->cdText() ); 0093 0094 m_editTitle->setText( doc->title() ); 0095 m_editPerformer->setText( doc->artist() ); 0096 0097 m_allFieldsDlg->m_editTitle->setText( doc->title() ); 0098 m_allFieldsDlg->m_editPerformer->setText( doc->artist() ); 0099 m_allFieldsDlg->m_editDisc_id->setText( doc->disc_id() ); 0100 m_allFieldsDlg->m_editUpc_ean->setText( doc->upc_ean() ); 0101 m_allFieldsDlg->m_editArranger->setText( doc->arranger() ); 0102 m_allFieldsDlg->m_editSongwriter->setText( doc->songwriter() ); 0103 m_allFieldsDlg->m_editComposer->setText( doc->composer() ); 0104 m_allFieldsDlg->m_editMessage->setText( doc->cdTextMessage() ); 0105 } 0106 0107 void K3b::AudioCdTextWidget::save( K3b::AudioDoc* doc ) 0108 { 0109 m_doc = doc; 0110 doc->writeCdText( m_groupCdText->isChecked() ); 0111 0112 // we save the title and artist values from the main view since 0113 // the dialog is only updated before it is shown 0114 doc->setTitle( m_editTitle->text() ); 0115 doc->setArtist( m_editPerformer->text() ); 0116 doc->setDisc_id( m_allFieldsDlg->m_editDisc_id->text() ); 0117 doc->setUpc_ean( m_allFieldsDlg->m_editUpc_ean->text() ); 0118 doc->setArranger( m_allFieldsDlg->m_editArranger->text() ); 0119 doc->setSongwriter( m_allFieldsDlg->m_editSongwriter->text() ); 0120 doc->setComposer( m_allFieldsDlg->m_editComposer->text() ); 0121 doc->setCdTextMessage( m_allFieldsDlg->m_editMessage->text() ); 0122 } 0123 0124 0125 void K3b::AudioCdTextWidget::slotMoreFields() 0126 { 0127 // update dlg to current state 0128 m_allFieldsDlg->m_editTitle->setText( m_editTitle->text() ); 0129 m_allFieldsDlg->m_editPerformer->setText( m_editPerformer->text() ); 0130 0131 // save old settings 0132 QString title = m_allFieldsDlg->m_editTitle->text(); 0133 QString performer = m_allFieldsDlg->m_editPerformer->text(); 0134 QString disc_id = m_allFieldsDlg->m_editDisc_id->text(); 0135 QString upc_ean = m_allFieldsDlg->m_editUpc_ean->text(); 0136 QString arranger = m_allFieldsDlg->m_editArranger->text(); 0137 QString songwriter = m_allFieldsDlg->m_editSongwriter->text(); 0138 QString composer = m_allFieldsDlg->m_editComposer->text(); 0139 QString message = m_allFieldsDlg->m_editMessage->text(); 0140 0141 m_allFieldsDlg->m_editTitle->setFocus( Qt::PopupFocusReason ); 0142 0143 // exec dlg 0144 if( m_allFieldsDlg->exec() == QDialog::Accepted ) { 0145 // accept new entries 0146 m_editTitle->setText( m_allFieldsDlg->m_editTitle->text() ); 0147 m_editPerformer->setText( m_allFieldsDlg->m_editPerformer->text() ); 0148 } 0149 else { 0150 // reset 0151 m_allFieldsDlg->m_editTitle->setText( title ); 0152 m_allFieldsDlg->m_editPerformer->setText( performer ); 0153 m_allFieldsDlg->m_editDisc_id->setText( disc_id ); 0154 m_allFieldsDlg->m_editUpc_ean->setText( upc_ean ); 0155 m_allFieldsDlg->m_editArranger->setText( arranger ); 0156 m_allFieldsDlg->m_editSongwriter->setText( songwriter ); 0157 m_allFieldsDlg->m_editComposer->setText( composer ); 0158 m_allFieldsDlg->m_editMessage->setText( message ); 0159 } 0160 } 0161 0162 0163 void K3b::AudioCdTextWidget::setChecked( bool b ) 0164 { 0165 m_groupCdText->setChecked( b ); 0166 } 0167 0168 bool K3b::AudioCdTextWidget::isChecked() const 0169 { 0170 return m_groupCdText->isChecked(); 0171 } 0172 0173 0174 void K3b::AudioCdTextWidget::slotCopyTitle() 0175 { 0176 K3b::AudioTrack* track = m_doc->firstTrack(); 0177 while( track ) { 0178 track->setTitle( m_allFieldsDlg->isVisible() 0179 ? m_allFieldsDlg->m_editTitle->text() 0180 : m_editTitle->text() ); 0181 track = track->next(); 0182 } 0183 } 0184 0185 void K3b::AudioCdTextWidget::slotCopyPerformer() 0186 { 0187 K3b::AudioTrack* track = m_doc->firstTrack(); 0188 while( track ) { 0189 track->setPerformer( m_allFieldsDlg->isVisible() 0190 ? m_allFieldsDlg->m_editPerformer->text() 0191 : m_editPerformer->text() ); 0192 track = track->next(); 0193 } 0194 } 0195 0196 void K3b::AudioCdTextWidget::slotCopyArranger() 0197 { 0198 K3b::AudioTrack* track = m_doc->firstTrack(); 0199 while( track ) { 0200 track->setArranger( m_allFieldsDlg->m_editArranger->text() ); 0201 track = track->next(); 0202 } 0203 } 0204 0205 void K3b::AudioCdTextWidget::slotCopySongwriter() 0206 { 0207 K3b::AudioTrack* track = m_doc->firstTrack(); 0208 while( track ) { 0209 track->setSongwriter( m_allFieldsDlg->m_editSongwriter->text() ); 0210 track = track->next(); 0211 } 0212 } 0213 0214 void K3b::AudioCdTextWidget::slotCopyComposer() 0215 { 0216 K3b::AudioTrack* track = m_doc->firstTrack(); 0217 while( track ) { 0218 track->setComposer( m_allFieldsDlg->m_editComposer->text() ); 0219 track = track->next(); 0220 } 0221 } 0222 0223 #include "moc_k3baudiocdtextwidget.cpp"