blob: 9ba09c467aa52dd5577127d608575ba3aa99a3fd (
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
|
#include "bookmouse.hpp"
#include "main_window.hpp"
namespace bookmouse {
Bookmouse::Bookmouse()
{
m_layout = new QVBoxLayout();
m_layout->addWidget(&m_pageLeft);
m_layout->addWidget(&m_pageRight);
setLayout(m_layout);
}
void Bookmouse::setArchive(Archive* archive) {
if (archive == m_archive) {
return;
}
delete(m_archive);
m_archive = archive;
m_pageNumber = 0;
setPages();
}
void Bookmouse::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 Bookmouse::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 Bookmouse::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 Bookmouse::setPagesNormal() {
auto page1 = m_archive->getPage(m_pageNumber);
auto& label1 = m_pageLeft;
if (page1.isOkay()) {
label1.setPixmap(QPixmap::fromImage(page1.getOkay()));
}
}
void Bookmouse::setPagesDual() {
auto& label1 = m_pageLeft;
auto& label2 = m_pageRight;
setPages(label1, label2);
}
void Bookmouse::setPagesManga() {
auto& label1 = m_pageRight;
auto& label2 = m_pageLeft;
setPages(label1, label2);
}
void Bookmouse::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 bookmouse
|