File indexing completed on 2024-05-05 04:56:11
0001 /* 0002 SPDX-FileCopyrightText: 2006 Richard Lärkäng <nouseforaname@home.se> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "asyncmusicbrainzlookup.h" 0008 0009 #include "musicbrainzlookup.h" 0010 0011 #include <QDebug> 0012 #include <QThread> 0013 0014 namespace KCDDB 0015 { 0016 class LookupThread : public QThread 0017 { 0018 0019 Q_OBJECT 0020 0021 public: 0022 void run() override 0023 { 0024 Result result; 0025 CDInfoList lookupResponse; 0026 MusicBrainzLookup lookup; 0027 0028 result = lookup.lookup(QString(), 0, m_offsetList); 0029 0030 if (result == Success) 0031 lookupResponse = lookup.lookupResponse(); 0032 0033 Q_EMIT lookupFinished(result, lookupResponse); 0034 } 0035 0036 TrackOffsetList m_offsetList; 0037 0038 Q_SIGNALS: 0039 void lookupFinished( KCDDB::Result, KCDDB::CDInfoList ); 0040 }; 0041 0042 AsyncMusicBrainzLookup::AsyncMusicBrainzLookup() 0043 { 0044 // Register custom data types for the signal-slot connection with the lookup thread: 0045 qRegisterMetaType<KCDDB::Result>("KCDDB::Result"); 0046 qRegisterMetaType<KCDDB::CDInfoList>("KCDDB::CDInfoList"); 0047 } 0048 0049 AsyncMusicBrainzLookup::~AsyncMusicBrainzLookup() 0050 { 0051 0052 } 0053 0054 Result AsyncMusicBrainzLookup::lookup( const QString &, uint, const TrackOffsetList & trackOffsetList ) 0055 { 0056 LookupThread* lookupThread = new LookupThread(); 0057 lookupThread->m_offsetList = trackOffsetList; 0058 connect(lookupThread, &LookupThread::lookupFinished, this, &AsyncMusicBrainzLookup::processLookupResult); // queued connection 0059 0060 // Make the thread object "self-destructive"; allows us to keep the destructor non-blocking 0061 connect(lookupThread, &LookupThread::finished, lookupThread, &LookupThread::deleteLater); 0062 // NOTE: the memory automatically gets cleared after the thread has finished 0063 0064 lookupThread->start(); 0065 0066 return Success; 0067 } 0068 0069 void AsyncMusicBrainzLookup::processLookupResult( KCDDB::Result result, KCDDB::CDInfoList lookupResponse ) 0070 { 0071 qDebug(); 0072 0073 cdInfoList_ = lookupResponse; 0074 0075 Q_EMIT finished(result); 0076 } 0077 } 0078 0079 #include "asyncmusicbrainzlookup.moc" 0080 #include "moc_asyncmusicbrainzlookup.cpp" 0081 0082 // vim:tabstop=2:shiftwidth=2:expandtab:cinoptions=(s,U1,m1