/
viewer.h
215 lines (192 loc) · 5.77 KB
/
viewer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#ifndef __VIEWER_H
#define __VIEWER_H
#include <QMainWindow>
#include <QScrollArea>
#include <QAction>
#include <QTimer>
#include <QLabel>
#include <QPixmap>
#include <QResizeEvent>
#include <QWheelEvent>
#include <QMouseEvent>
#include <QCloseEvent>
#include <QPropertyAnimation>
#include <QParallelAnimationGroup>
#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 left();
void right();
void showGoToDialog();
void goToFirstPage();
void goToLastPage();
void goTo(unsigned int page);
void updatePage();
void updateContentSize();
void updateVerticalScrollBar();
void updateOptions();
void scrollDown();
void scrollUp();
void scrollForward();
void scrollBackward();
void scrollForwardHorizontalFirst();
void scrollBackwardHorizontalFirst();
void scrollForwardVerticalFirst();
void scrollBackwardVerticalFirst();
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() const { return magnifyingGlassShown; }
void setBookmark(bool);
void save();
void doublePageSwitch();
void setMangaWithoutStoringSetting(bool manga);
void doubleMangaPageSwitch();
void resetContent();
void setLoadingMessage();
void setPageUnavailableMessage();
void configureContent(QString msg);
void hideCursor();
void showCursor();
void createConnections();
void translatorSwitch();
void animateShowTranslator();
void animateHideTranslator();
void mousePressEvent(QMouseEvent *event) override;
void mouseReleaseEvent(QMouseEvent *event) override;
void updateBackgroundColor(const QColor &color);
void updateConfig(QSettings *settings);
void showMessageErrorOpening();
void showMessageErrorOpening(QString);
void processCRCError(QString message);
void setBookmarks();
void offsetDoublePageToTheLeft();
void offsetDoublePageToTheRight();
// deprecated
void updateImageOptions();
void updateFilters(int brightness, int contrast, int gamma);
void showIsCoverMessage();
void showIsLastMessage();
int getCurrentPageNumber();
void updateZoomRatio(int ratio);
bool getIsMangaMode();
private:
bool information;
bool doublePage;
bool doubleMangaPage;
int zoom;
PageLabelWidget *informationLabel;
// QTimer * scroller;
QPropertyAnimation *verticalScroller;
QPropertyAnimation *horizontalScroller;
QParallelAnimationGroup *groupScroller;
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;
//! 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 magnifyingGlassShown;
bool restoreMagnifyingGlass;
void setMagnifyingGlassShown(bool shown);
//! Event handlers:
void resizeEvent(QResizeEvent *event) override;
void wheelEvent(QWheelEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
int verticalScrollStep() const;
int horizontalScrollStep() const;
//! ZigzagScroll
enum scrollDirection { UP,
DOWN,
LEFT,
RIGHT };
bool isEdge(scrollDirection d);
void scrollZigzag(scrollDirection d1, scrollDirection d2, bool forward);
void scrollTo(int x, int y);
// Zero when animations are disabled
int animationDuration() const;
void animateScroll(QPropertyAnimation &scroller, const QScrollBar &scrollBar, int delta);
public:
Viewer(QWidget *parent = nullptr);
~Viewer();
QPixmap pixmap() const;
// 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);
void moveView(Qt::Key directionKey);
signals:
void backgroundChanges();
void pageAvailable(bool);
void pageIsBookmark(bool);
void comicLoaded();
void reset();
void openNextComic();
void openPreviousComic();
void zoomUpdated(int);
void magnifyingGlassVisibilityChanged(bool visible);
// The following signals are emitted by users of this class and propagated to mglass.
void magnifyingGlassSizeUp();
void magnifyingGlassSizeDown();
void magnifyingGlassZoomIn();
void magnifyingGlassZoomOut();
};
#endif