#ifndef PICTURELOADER_H #define PICTURELOADER_H #include #include #include #include class CardInfo; class CardSet; class QNetworkAccessManager; class QNetworkReply; class QThread; class PictureToLoad { private: class EnabledAndKeyCompareFunctor; CardInfo *card; QList sortedSets; int setIndex; bool hq; public: PictureToLoad(CardInfo *_card = 0); CardInfo *getCard() const { return card; } CardSet *getCurrentSet() const; QString getSetName() const; bool nextSet(); }; class PictureLoader : public QObject { Q_OBJECT public: static PictureLoader& getInstance() { static PictureLoader instance; return instance; } private: PictureLoader(); ~PictureLoader(); // Don't implement PictureLoader(PictureLoader const&); void operator=(PictureLoader const&); static QStringList md5Blacklist; QThread *pictureLoaderThread; QString picsPath; QList loadQueue; QMutex mutex; QNetworkAccessManager *networkManager; QList cardsToDownload; PictureToLoad cardBeingLoaded; PictureToLoad cardBeingDownloaded; bool picDownload, downloadRunning, loadQueueRunning; void startNextPicDownload(); void imageLoaded(CardInfo *card, const QImage &image); QString getPicUrl(); public: void enqueueImageLoad(CardInfo *card); static void getPixmap(QPixmap &pixmap, CardInfo *card, QSize size); static void clearPixmapCache(CardInfo *card); static void clearPixmapCache(); static void cacheCardPixmaps(QList cards); private slots: void picDownloadFinished(QNetworkReply *reply); void picDownloadFailed(); void picDownloadChanged(); void picsPathChanged(); public slots: void processLoadQueue(); signals: void startLoadQueue(); }; #endif