File indexing completed on 2024-05-05 04:51:42
0001 /* 0002 SPDX-FileCopyrightText: 2011 Michal Malek <michalm@jabster.pl> 0003 SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "k3baudiotracktrmlookupdialog.h" 0009 #include "k3bmusicbrainzjob.h" 0010 0011 #include <config-k3b.h> 0012 0013 #include "k3bbusywidget.h" 0014 #include "k3baudiotrack.h" 0015 #include "k3baudiofile.h" 0016 0017 #include <KNotification> 0018 #include <KLocalizedString> 0019 #include <KIconLoader> 0020 #include <KMessageBox> 0021 0022 #include <QDebug> 0023 #include <QEventLoop> 0024 #include <QTimer> 0025 #include <QApplication> 0026 #include <QDialogButtonBox> 0027 #include <QGridLayout> 0028 #include <QLabel> 0029 #include <QLayout> 0030 #include <QPushButton> 0031 0032 0033 K3b::AudioTrackTRMLookupDialog::AudioTrackTRMLookupDialog( QWidget* parent ) 0034 : QDialog( parent ), 0035 m_loop( 0 ) 0036 { 0037 setWindowTitle(i18n("MusicBrainz Query")); 0038 setModal(true); 0039 QGridLayout* grid = new QGridLayout( this ); 0040 0041 m_infoLabel = new QLabel( this ); 0042 QLabel* pixLabel = new QLabel( this ); 0043 pixLabel->setPixmap( KIconLoader::global()->loadIcon( "musicbrainz", KIconLoader::NoGroup, 64 ) ); 0044 pixLabel->setScaledContents( false ); 0045 0046 m_busyWidget = new K3b::BusyWidget( this ); 0047 0048 QDialogButtonBox* buttonBox = new QDialogButtonBox( this ); 0049 m_cancelButton = buttonBox->addButton( QDialogButtonBox::Cancel ); 0050 connect( buttonBox, SIGNAL(rejected()), SLOT(reject()) ); 0051 0052 grid->addWidget( pixLabel, 0, 0, 2, 1 ); 0053 grid->addWidget( m_infoLabel, 0, 1 ); 0054 grid->addWidget( m_busyWidget, 1, 1 ); 0055 grid->addWidget( buttonBox, 2, 0, 1, 2 ); 0056 0057 m_mbJob = new K3b::MusicBrainzJob( this ); 0058 connect( m_mbJob, SIGNAL(infoMessage(QString,int)), 0059 this, SLOT(slotMbJobInfoMessage(QString,int)) ); 0060 connect( m_mbJob, SIGNAL(finished(bool)), this, SLOT(slotMbJobFinished(bool)) ); 0061 connect( m_mbJob, SIGNAL(trackFinished(K3b::AudioTrack*,bool)), 0062 this, SLOT(slotTrackFinished(K3b::AudioTrack*,bool)) ); 0063 } 0064 0065 0066 K3b::AudioTrackTRMLookupDialog::~AudioTrackTRMLookupDialog() 0067 { 0068 } 0069 0070 0071 int K3b::AudioTrackTRMLookupDialog::lookup( const QList<K3b::AudioTrack*>& tracks ) 0072 { 0073 m_mbJob->setTracks( tracks ); 0074 m_mbJob->start(); 0075 0076 m_busyWidget->showBusy(true); 0077 setModal( true ); 0078 show(); 0079 0080 QEventLoop loop; 0081 m_loop = &loop; 0082 loop.exec(); 0083 m_loop = 0; 0084 0085 return 0; 0086 } 0087 0088 0089 void K3b::AudioTrackTRMLookupDialog::slotMbJobInfoMessage( const QString& message, int ) 0090 { 0091 m_infoLabel->setText( message ); 0092 } 0093 0094 0095 void K3b::AudioTrackTRMLookupDialog::slotMbJobFinished( bool ) 0096 { 0097 m_busyWidget->showBusy(false); 0098 hide(); 0099 if( m_loop ) 0100 m_loop->exit(); 0101 } 0102 0103 0104 void K3b::AudioTrackTRMLookupDialog::reject() 0105 { 0106 m_cancelButton->setEnabled( false ); 0107 m_mbJob->cancel(); 0108 } 0109 0110 0111 void K3b::AudioTrackTRMLookupDialog::slotTrackFinished( K3b::AudioTrack* track, bool success ) 0112 { 0113 if( !success ) 0114 KNotification::event( "TrackDataNotFound", 0115 i18n("Audio Project"), 0116 i18n("Track %1 was not found in the MusicBrainz database.", 0117 track->trackNumber()) ); 0118 } 0119 0120 #include "moc_k3baudiotracktrmlookupdialog.cpp"