File indexing completed on 2024-05-19 04:50:23

0001 /****************************************************************************************
0002  * Copyright (c) 2007,2008 Casey Link <unnamedrambler@gmail.com>                        *
0003  *                                                                                      *
0004  * This program is free software; you can redistribute it and/or modify it under        *
0005  * the terms of the GNU General Public License as published by the Free Software        *
0006  * Foundation; either version 2 of the License, or (at your option) any later           *
0007  * version.                                                                             *
0008  *                                                                                      *
0009  * This program is distributed in the hope that it will be useful, but WITHOUT ANY      *
0010  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A      *
0011  * PARTICULAR PURPOSE. See the GNU General Public License for more details.             *
0012  *                                                                                      *
0013  * You should have received a copy of the GNU General Public License along with         *
0014  * this program.  If not, see <http://www.gnu.org/licenses/>.                           *
0015  ****************************************************************************************/
0016 
0017 #ifndef MP3TUNESWORKERS_H
0018 #define MP3TUNESWORKERS_H
0019 
0020 #include "Mp3tunesLocker.h"
0021 
0022 #include <QList>
0023 #include <QStringList>
0024 
0025 #include <ThreadWeaver/Job>
0026 
0027 /**
0028  * Allows for threading the logging in process.
0029  */
0030 class Mp3tunesLoginWorker : public QObject, public ThreadWeaver::Job
0031 {
0032     Q_OBJECT
0033     public:
0034         Mp3tunesLoginWorker( Mp3tunesLocker* locker, const QString &username, const QString &password );
0035         ~Mp3tunesLoginWorker();
0036 
0037         void run(ThreadWeaver::JobPointer self = QSharedPointer<ThreadWeaver::Job>(), ThreadWeaver::Thread *thread = 0) override;
0038 
0039     Q_SIGNALS:
0040         /** This signal is emitted when this job is being processed by a thread. */
0041         void started(ThreadWeaver::JobPointer);
0042         /** This signal is emitted when the job has been finished (no matter if it succeeded or not). */
0043         void done(ThreadWeaver::JobPointer);
0044         /** This job has failed.
0045          * This signal is emitted when success() returns false after the job is executed. */
0046         void failed(ThreadWeaver::JobPointer);
0047 
0048         void finishedLogin( const QString &sessionId );
0049 
0050     private Q_SLOTS:
0051         void completeJob();
0052 
0053     private:
0054         Mp3tunesLocker* m_locker;
0055         QString m_sessionId;
0056         QString m_username;
0057         QString m_password;
0058     protected:
0059         void defaultBegin(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0060         void defaultEnd(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0061 };
0062 
0063 /**
0064  * Allows for threading the artist fetching process
0065  */
0066 class Mp3tunesArtistFetcher : public QObject, public ThreadWeaver::Job
0067 {
0068     Q_OBJECT
0069     public:
0070         explicit Mp3tunesArtistFetcher( Mp3tunesLocker * locker );
0071         ~Mp3tunesArtistFetcher();
0072 
0073         void run(ThreadWeaver::JobPointer self = QSharedPointer<ThreadWeaver::Job>(), ThreadWeaver::Thread *thread = 0) override;
0074 
0075     Q_SIGNALS:
0076         /** This signal is emitted when this job is being processed by a thread. */
0077         void started(ThreadWeaver::JobPointer);
0078         /** This signal is emitted when the job has been finished (no matter if it succeeded or not). */
0079         void done(ThreadWeaver::JobPointer);
0080         /** This job has failed.
0081          * This signal is emitted when success() returns false after the job is executed. */
0082         void failed(ThreadWeaver::JobPointer);
0083 
0084         void artistsFetched( QList<Mp3tunesLockerArtist> );
0085 
0086     private Q_SLOTS:
0087         void completeJob();
0088 
0089     private:
0090         Mp3tunesLocker* m_locker;
0091         QList<Mp3tunesLockerArtist> m_artists;
0092     protected:
0093         void defaultBegin(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0094         void defaultEnd(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0095 };
0096 
0097 /**
0098  * Allows for threading the albumWithArtistId fetching process
0099  */
0100 class Mp3tunesAlbumWithArtistIdFetcher : public QObject, public ThreadWeaver::Job
0101 {
0102     Q_OBJECT
0103     public:
0104         Mp3tunesAlbumWithArtistIdFetcher( Mp3tunesLocker * locker, int artistId );
0105         ~Mp3tunesAlbumWithArtistIdFetcher();
0106 
0107         void run(ThreadWeaver::JobPointer self = QSharedPointer<ThreadWeaver::Job>(), ThreadWeaver::Thread *thread = 0) override;
0108 
0109     Q_SIGNALS:
0110         /** This signal is emitted when this job is being processed by a thread. */
0111         void started(ThreadWeaver::JobPointer);
0112         /** This signal is emitted when the job has been finished (no matter if it succeeded or not). */
0113         void done(ThreadWeaver::JobPointer);
0114         /** This job has failed.
0115          * This signal is emitted when success() returns false after the job is executed. */
0116         void failed(ThreadWeaver::JobPointer);
0117 
0118         void albumsFetched( QList<Mp3tunesLockerAlbum> );
0119 
0120     private Q_SLOTS:
0121         void completeJob();
0122 
0123     private:
0124         int m_artistId;
0125         Mp3tunesLocker* m_locker;
0126         QList<Mp3tunesLockerAlbum> m_albums;
0127     protected:
0128         void defaultBegin(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0129         void defaultEnd(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0130 };
0131 
0132 /**
0133  * Allows for threading the trackWithAlbumId fetching process
0134  */
0135 class Mp3tunesTrackWithAlbumIdFetcher : public QObject, public ThreadWeaver::Job
0136 {
0137     Q_OBJECT
0138     public:
0139         Mp3tunesTrackWithAlbumIdFetcher( Mp3tunesLocker * locker, int albumId );
0140         ~Mp3tunesTrackWithAlbumIdFetcher();
0141 
0142         void run(ThreadWeaver::JobPointer self = QSharedPointer<ThreadWeaver::Job>(), ThreadWeaver::Thread *thread = 0) override;
0143 
0144     Q_SIGNALS:
0145         /** This signal is emitted when this job is being processed by a thread. */
0146         void started(ThreadWeaver::JobPointer);
0147         /** This signal is emitted when the job has been finished (no matter if it succeeded or not). */
0148         void done(ThreadWeaver::JobPointer);
0149         /** This job has failed.
0150          * This signal is emitted when success() returns false after the job is executed. */
0151         void failed(ThreadWeaver::JobPointer);
0152 
0153         void tracksFetched( QList<Mp3tunesLockerTrack> );
0154 
0155     private Q_SLOTS:
0156         void completeJob();
0157 
0158     private:
0159         int m_albumId;
0160         Mp3tunesLocker* m_locker;
0161         QList<Mp3tunesLockerTrack> m_tracks;
0162     protected:
0163         void defaultBegin(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0164         void defaultEnd(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0165 };
0166 
0167 /**
0168  * Allows for threading the trackWithArtistId fetching process
0169  */
0170 class Mp3tunesTrackWithArtistIdFetcher : public QObject, public ThreadWeaver::Job
0171 {
0172     Q_OBJECT
0173     public:
0174         Mp3tunesTrackWithArtistIdFetcher( Mp3tunesLocker * locker, int artistId );
0175         ~Mp3tunesTrackWithArtistIdFetcher();
0176 
0177         void run(ThreadWeaver::JobPointer self = QSharedPointer<ThreadWeaver::Job>(), ThreadWeaver::Thread *thread = 0) override;
0178 
0179     Q_SIGNALS:
0180         /** This signal is emitted when this job is being processed by a thread. */
0181         void started(ThreadWeaver::JobPointer);
0182         /** This signal is emitted when the job has been finished (no matter if it succeeded or not). */
0183         void done(ThreadWeaver::JobPointer);
0184         /** This job has failed.
0185          * This signal is emitted when success() returns false after the job is executed. */
0186         void failed(ThreadWeaver::JobPointer);
0187         void tracksFetched( QList<Mp3tunesLockerTrack> );
0188 
0189     private Q_SLOTS:
0190         void completeJob();
0191 
0192     private:
0193         int m_artistId;
0194         Mp3tunesLocker* m_locker;
0195         QList<Mp3tunesLockerTrack> m_tracks;
0196     protected:
0197         void defaultBegin(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0198         void defaultEnd(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0199 
0200 };
0201 
0202 /**
0203  * Allows for threading the searching process
0204  */
0205 class Mp3tunesSearchMonkey : public QObject, public ThreadWeaver::Job
0206 {
0207     Q_OBJECT
0208     public:
0209         Mp3tunesSearchMonkey( Mp3tunesLocker * locker, QString query, int searchFor );
0210         ~Mp3tunesSearchMonkey();
0211 
0212         void run(ThreadWeaver::JobPointer self = QSharedPointer<ThreadWeaver::Job>(), ThreadWeaver::Thread *thread = 0) override;
0213 
0214     Q_SIGNALS:
0215         /** This signal is emitted when this job is being processed by a thread. */
0216         void started(ThreadWeaver::JobPointer);
0217         /** This signal is emitted when the job has been finished (no matter if it succeeded or not). */
0218         void done(ThreadWeaver::JobPointer);
0219         /** This job has failed.
0220          * This signal is emitted when success() returns false after the job is executed. */
0221         void failed(ThreadWeaver::JobPointer);
0222 
0223         void searchArtistComplete( QList<Mp3tunesLockerArtist> );
0224         void searchAlbumComplete( QList<Mp3tunesLockerAlbum> );
0225         void searchTrackComplete( QList<Mp3tunesLockerTrack> );
0226 
0227     private Q_SLOTS:
0228         void completeJob();
0229 
0230     private:
0231         QString m_query;
0232         int m_searchFor;
0233         Mp3tunesLocker* m_locker;
0234         Mp3tunesSearchResult m_result;
0235     protected:
0236         void defaultBegin(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0237         void defaultEnd(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0238 };
0239 
0240 /**
0241  * Allows for threading a track list upload
0242  */
0243 class Mp3tunesSimpleUploader : public QObject, public ThreadWeaver::Job
0244 {
0245     Q_OBJECT
0246     public:
0247         Mp3tunesSimpleUploader( Mp3tunesLocker * locker, const QStringList &tracklist );
0248         ~Mp3tunesSimpleUploader() override;
0249 
0250         void run(ThreadWeaver::JobPointer self = QSharedPointer<ThreadWeaver::Job>(), ThreadWeaver::Thread *thread = 0) override;
0251 
0252     Q_SIGNALS:
0253         /** This signal is emitted when this job is being processed by a thread. */
0254         void started(ThreadWeaver::JobPointer);
0255         /** This signal is emitted when the job has been finished (no matter if it succeeded or not). */
0256         void done(ThreadWeaver::JobPointer);
0257         /** This job has failed.
0258          * This signal is emitted when success() returns false after the job is executed. */
0259         void failed(ThreadWeaver::JobPointer);
0260 
0261         void uploadComplete();
0262         void incrementProgress();
0263         void endProgressOperation( QObject * );
0264 
0265     private Q_SLOTS:
0266         void completeJob();
0267 
0268     private:
0269         Mp3tunesLocker* m_locker;
0270         QStringList m_tracklist;
0271     protected:
0272         void defaultBegin(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0273         void defaultEnd(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0274 };
0275 
0276 /**
0277  * Allows for threading a track from filekey job.
0278  */
0279 class Mp3tunesTrackFromFileKeyFetcher : public QObject, public ThreadWeaver::Job
0280 {
0281     Q_OBJECT
0282     public:
0283         Mp3tunesTrackFromFileKeyFetcher( Mp3tunesLocker * locker, QString filekey );
0284         ~Mp3tunesTrackFromFileKeyFetcher();
0285 
0286         void run(ThreadWeaver::JobPointer self = QSharedPointer<ThreadWeaver::Job>(), ThreadWeaver::Thread *thread = 0) override;
0287 
0288     Q_SIGNALS:
0289         /** This signal is emitted when this job is being processed by a thread. */
0290         void started(ThreadWeaver::JobPointer);
0291         /** This signal is emitted when the job has been finished (no matter if it succeeded or not). */
0292         void done(ThreadWeaver::JobPointer);
0293         /** This job has failed.
0294          * This signal is emitted when success() returns false after the job is executed. */
0295         void failed(ThreadWeaver::JobPointer);
0296 
0297         void trackFetched( Mp3tunesLockerTrack &track );
0298 
0299     private Q_SLOTS:
0300         void completeJob();
0301 
0302     private:
0303         Mp3tunesLocker* m_locker;
0304         Mp3tunesLockerTrack m_track;
0305         QString m_filekey;
0306 
0307     protected:
0308         void defaultBegin(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0309         void defaultEnd(const ThreadWeaver::JobPointer& job, ThreadWeaver::Thread *thread) override;
0310 };
0311 
0312 #endif
0313