summaryrefslogtreecommitdiff
path: root/src/bookmouse_old.cpp
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