mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
177 lines
4.4 KiB
C++
177 lines
4.4 KiB
C++
#ifndef __VIEWER_H
|
|
#define __VIEWER_H
|
|
|
|
#include <QMainWindow>
|
|
|
|
#include <QScrollArea>
|
|
#include <QAction>
|
|
#include <QTimer>
|
|
#include <QLabel>
|
|
#include <QPixmap>
|
|
#include <QKeyEvent>
|
|
#include <QResizeEvent>
|
|
#include <QWheelEvent>
|
|
#include <QMouseEvent>
|
|
#include <QCloseEvent>
|
|
#include <QPropertyAnimation>
|
|
#include <QSettings>
|
|
|
|
#include "scroll_management.h"
|
|
|
|
class ComicDB;
|
|
class Comic;
|
|
class MagnifyingGlass;
|
|
class GoToFlow;
|
|
class BookmarksDialog;
|
|
class Render;
|
|
class GoToDialog;
|
|
class YACReaderTranslator;
|
|
class GoToFlowWidget;
|
|
class Bookmarks;
|
|
class PageLabelWidget;
|
|
class NotificationsLabelWidget;
|
|
|
|
class Viewer : public QScrollArea, public ScrollManagement
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
bool fullscreen; //TODO, change by the right use of windowState();
|
|
public slots:
|
|
void increaseZoomFactor();
|
|
void decreaseZoomFactor();
|
|
void setZoomFactor(int);
|
|
int getZoomFactor();
|
|
|
|
void prepareForOpening();
|
|
void open(QString pathFile, int atPage = -1);
|
|
void open(QString pathFile, const ComicDB & comic);
|
|
void prev();
|
|
void next();
|
|
void showGoToDialog();
|
|
void goTo(unsigned int page);
|
|
void updatePage();
|
|
void updateContentSize();
|
|
void updateVerticalScrollBar();
|
|
void updateOptions();
|
|
void scrollDown();
|
|
void scrollUp();
|
|
void magnifyingGlassSwitch();
|
|
void showMagnifyingGlass();
|
|
void hideMagnifyingGlass();
|
|
void informationSwitch();
|
|
void updateInformation();
|
|
void goToFlowSwitch();
|
|
void showGoToFlow();
|
|
void moveCursoToGoToFlow();
|
|
void animateShowGoToFlow();
|
|
void animateHideGoToFlow();
|
|
void rotateLeft();
|
|
void rotateRight();
|
|
bool magnifyingGlassIsVisible() {return magnifyingGlassShowed;}
|
|
void setBookmark(bool);
|
|
void save();
|
|
void doublePageSwitch();
|
|
void doubleMangaPageSwitch();
|
|
void resetContent();
|
|
void setLoadingMessage();
|
|
void setPageUnavailableMessage();
|
|
void configureContent(QString msg);
|
|
void hideCursor();
|
|
void showCursor();
|
|
void createConnections();
|
|
void translatorSwitch();
|
|
void animateShowTranslator();
|
|
void animateHideTranslator();
|
|
virtual void mousePressEvent ( QMouseEvent * event );
|
|
virtual void mouseReleaseEvent ( QMouseEvent * event );
|
|
void updateBackgroundColor(const QColor & color);
|
|
void updateConfig(QSettings * settings);
|
|
void showMessageErrorOpening();
|
|
void showMessageErrorOpening(QString);
|
|
void processCRCError(QString message);
|
|
void setBookmarks();
|
|
//deprecated
|
|
void updateImageOptions();
|
|
void updateFilters(int brightness, int contrast,int gamma);
|
|
void showIsCoverMessage();
|
|
void showIsLastMessage();
|
|
int getCurrentPageNumber();
|
|
void updateZoomRatio(int ratio);
|
|
|
|
private:
|
|
bool information;
|
|
bool doublePage;
|
|
bool doubleMangaPage;
|
|
|
|
int zoom;
|
|
|
|
PageLabelWidget * informationLabel;
|
|
//QTimer * scroller;
|
|
QPropertyAnimation * verticalScroller;
|
|
int posByStep;
|
|
int nextPos;
|
|
GoToFlowWidget * goToFlow;
|
|
QPropertyAnimation * showGoToFlowAnimation;
|
|
GoToDialog * goToDialog;
|
|
//!Image properties
|
|
//! Comic
|
|
//Comic * comic;
|
|
int index;
|
|
QPixmap *currentPage;
|
|
BookmarksDialog * bd;
|
|
bool wheelStop;
|
|
Render * render;
|
|
QTimer * hideCursorTimer;
|
|
int direction;
|
|
bool drag;
|
|
int numScrollSteps;
|
|
|
|
//!Widgets
|
|
QLabel *content;
|
|
|
|
YACReaderTranslator * translator;
|
|
int translatorXPos;
|
|
QPropertyAnimation * translatorAnimation;
|
|
|
|
int yDragOrigin;
|
|
int xDragOrigin;
|
|
|
|
NotificationsLabelWidget * notificationsLabel;
|
|
|
|
bool shouldOpenNext;
|
|
bool shouldOpenPrevious;
|
|
|
|
private:
|
|
//!Magnifying glass
|
|
MagnifyingGlass *mglass;
|
|
bool magnifyingGlassShowed;
|
|
bool restoreMagnifyingGlass;
|
|
|
|
//! Manejadores de evento:
|
|
void keyPressEvent(QKeyEvent * event);
|
|
void resizeEvent(QResizeEvent * event);
|
|
void wheelEvent(QWheelEvent * event);
|
|
void mouseMoveEvent(QMouseEvent * event);
|
|
|
|
public:
|
|
Viewer(QWidget * parent = 0);
|
|
~Viewer();
|
|
void toggleFullScreen();
|
|
const QPixmap * pixmap();
|
|
//Comic * getComic(){return comic;}
|
|
const BookmarksDialog * getBookmarksDialog(){return bd;}
|
|
//returns the current index starting in 1 [1,nPages]
|
|
unsigned int getIndex();
|
|
void updateComic(ComicDB & comic);
|
|
signals:
|
|
void backgroundChanges();
|
|
void pageAvailable(bool);
|
|
void pageIsBookmark(bool);
|
|
void reset();
|
|
void openNextComic();
|
|
void openPreviousComic();
|
|
void zoomUpdated(int);
|
|
};
|
|
|
|
#endif
|