yacreader/YACReader/goto_flow.h
Luis Ángel San Martín 91e97ba8ff parte de la integraci?n de YACReaderFlowGL en YACReader terminada
se ha introducido un bug que hace que la aplicaci?n cierre anormalmente al pasar
al siguiente c?mic
2012-10-03 08:32:43 +02:00

107 lines
2.5 KiB
C++

#ifndef __GOTO_FLOW_H
#define __GOTO_FLOW_H
#include <QLineEdit>
#include <QPushButton>
#include <QPixmap>
#include <QThread>
#include <QSize>
#include <QIntValidator>
#include <QWaitCondition>
#include <QObject>
#include <QEvent>
#include <QLabel>
#include "custom_widgets.h"
#include "goto_flow_widget.h"
class Comic;
class SlideInitializer;
class PageLoader;
class GoToFlow : public GoToFlowWidget
{
Q_OBJECT
public:
GoToFlow(QWidget* parent = 0,PictureFlow::FlowType flowType = PictureFlow::CoverFlowLike);
bool ready; //comic is ready for read.
void keyPressEvent(QKeyEvent* event);
bool eventFilter(QObject *target, QEvent *event);
private:
YACReaderFlow * flow;
QLineEdit * edit;
QIntValidator * v;
QPushButton * centerButton;
QPushButton * goToButton;
//Comic * comic;
QSize imageSize;
QVector<bool> imagesLoaded;
QVector<bool> imagesSetted;
uint numImagesLoaded;
QVector<bool> imagesReady;
QVector<QByteArray> rawImages;
QTimer* updateTimer;
PageLoader* worker;
virtual void wheelEvent(QWheelEvent * event);
private slots:
void preload();
void updateImageData();
public slots:
void goTo();
void setPageNumber(int page);
void centerSlide();
void centerSlide(int slide);
void reset();
void setNumSlides(unsigned int slides);
void setImageReady(int index,const QByteArray & image);
void setFlowType(PictureFlow::FlowType flowType);
void updateSize();
signals:
void goToPage(unsigned int page);
};
//-----------------------------------------------------------------------------
//SlideInitializer
//-----------------------------------------------------------------------------
class SlideInitializer : public QThread
{
public:
SlideInitializer(PictureFlow * flow,int slides);
private:
PictureFlow * _flow;
int _slides;
void run();
};
//-----------------------------------------------------------------------------
//PageLoader
//-----------------------------------------------------------------------------
class PageLoader : public QThread
{
public:
PageLoader();
~PageLoader();
// returns FALSE if worker is still busy and can't take the task
bool busy() const;
void generate(int index, QSize size,const QByteArray & rImage);
void reset(){idx = -1;};
int index() const { return idx; }
QImage result() const { return img; }
protected:
void run();
private:
QWaitCondition condition;
bool restart;
bool working;
int idx;
QSize size;
QImage img;
QByteArray rawImage;
};
#endif