#ifndef IMAGERINGLIST_H #define IMAGERINGLIST_H #include #include #include #include #include #include "imageinfo.h" class ImageRingList; class Image : public QObject { Q_OBJECT bool m_loading; bool m_released; bool m_current; QPixmap m_pixmap; QString m_name; ImageInfoData m_info; ImageRingList *m_ringList; public: explicit Image(const QString name, ImageRingList *ringList); void load(); void release(); QString name() const; QPixmap pixmap() const; ImageInfoData info() const; bool isCurrent() const; signals: void pixmapLoaded(Image *ptr); protected slots: void imageLoaded(QImage img, ImageInfoData info); }; typedef std::shared_ptr ImagePtr; class ImageRingList : public QObject { Q_OBJECT int m_width; QList m_images; QList::iterator m_firstImage; QList::iterator m_currImage; QList::iterator m_lastImage; QFileSystemWatcher m_fileSystemWatcher; bool m_liveMode; AnalyzeLevel m_analyzeLevel; public: explicit ImageRingList(QObject *parent = 0); ~ImageRingList(); bool setDir(const QString path, const QString ¤tFile = QString()); void setFile(const QString &file); ImagePtr currentImage(); void increment(); void decrement(); void setLiveMode(bool live); void setCalculateStats(bool stats); void setFindPeaks(bool findPeaks); void setFindStars(bool findStars); AnalyzeLevel analyzeLevel() const; protected: void setFiles(const QStringList files, const QString ¤tFile = QString()); QList::iterator increment(QList::iterator iter); QList::iterator decrement(QList::iterator iter); signals: void pixmapLoaded(QPixmap pix); void infoLoaded(ImageInfoData info); void currentImageChanged(); protected slots: void imageLoaded(Image *image); void dirChanged(QString dir); }; #endif // IMAGERINGLIST_H