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