blob: 5593758fe25cbbbfa73eaf699651e9ed110f1716 (
plain)
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
|
#include "getsuyomi.hpp"
#include "main_window.hpp"
namespace getsuyomi {
Getsuyomi::Getsuyomi()
{
m_layout = new QVBoxLayout();
m_layout->addWidget(&m_pageLeft);
m_layout->addWidget(&m_pageRight);
setLayout(m_layout);
}
Getsuyomi::~Getsuyomi() {
if (m_archive != nullptr) {
delete m_archive;
}
}
void Getsuyomi::setArchive(Archive* archive) {
if (archive == m_archive) {
return;
}
delete(m_archive);
m_archive = archive;
m_pageNumber = 0;
setPages();
}
void Getsuyomi::next() {
auto numPages = m_archive->numPages();
size_t increment = 1;
if (m_pageLayout != PageLayout::Single) {
increment = 2;
}
if ((m_pageNumber + increment) >= numPages)
{
return;
}
m_pageNumber += increment;
setPages();
}
void Getsuyomi::back() {
// auto numPages = m_archive->numPages();
size_t decrement = 1;
if (m_pageLayout != PageLayout::Single) {
decrement = 2;
}
if (m_pageNumber < decrement)
{
m_pageNumber = 0;
decrement = 0;
}
m_pageNumber -= decrement;
setPages();
}
void Getsuyomi::setPages() {
m_pageLeft.setPixmap(QPixmap());
m_pageRight.setPixmap(QPixmap());
switch (m_pageLayout)
{
case PageLayout::Dual:
return setPagesDual();
case PageLayout::Manga:
return setPagesManga();
case PageLayout::Single:
default:
return setPagesNormal();
}
}
void Getsuyomi::setPagesNormal() {
auto page1 = m_archive->getPage(m_pageNumber);
auto& label1 = m_pageLeft;
if (page1.isOkay()) {
label1.setPixmap(QPixmap::fromImage(page1.getOkay()));
}
}
void Getsuyomi::setPagesDual() {
auto& label1 = m_pageLeft;
auto& label2 = m_pageRight;
setPages(label1, label2);
}
void Getsuyomi::setPagesManga() {
auto& label1 = m_pageRight;
auto& label2 = m_pageLeft;
setPages(label1, label2);
}
void Getsuyomi::setPages(QLabel& label1, QLabel& label2) {
auto page1 = m_archive->getPage(m_pageNumber);
auto page2 = m_archive->getPage(m_pageNumber + 1);
if (page1.isOkay()) {
label1.setPixmap(QPixmap::fromImage(page1.getOkay()));
}
if (page2.isOkay()) {
label2.setPixmap(QPixmap::fromImage(page1.getOkay()));
}
}
} // namespace getsuyomi
|