yacreader/YACReaderLibrary/comic_flow.h

49 lines
1.1 KiB
C++

#ifndef __COMICFLOW_H
#define __COMICFLOW_H
#include "yacreader_flow.h"
#include <QtCore>
#include <QImage>
#include <QString>
#include <QTimer>
#include <QWheelEvent>
#include <memory>
template<typename Result>
class WorkerThread;
class ComicFlow : public YACReaderFlow
{
Q_OBJECT
public:
ComicFlow(QWidget *parent = nullptr, FlowType flowType = CoverFlowLike);
~ComicFlow() override;
void setImagePaths(const QStringList &paths);
// bool eventFilter(QObject *target, QEvent *event);
void keyPressEvent(QKeyEvent *event) override;
void insertSlide(const QString &path, int index);
void removeSlide(int cover);
void resortCovers(QList<int> newOrder);
private slots:
void preload();
void updateImageData();
private:
void resetWorkerIndex() { workerIndex = -1; }
QStringList imageFiles;
QVector<bool> imagesLoaded;
QVector<bool> imagesSetted;
int numImagesLoaded;
int workerIndex;
QTimer updateTimer;
std::unique_ptr<WorkerThread<QImage>> worker;
virtual void wheelEvent(QWheelEvent *event) override;
};
#endif