summaryrefslogtreecommitdiff
path: root/src/bookmouse.cpp
diff options
context:
space:
mode:
authorDominick Allen <djallen@librehumanitas.org>2024-09-23 00:33:33 -0500
committerDominick Allen <djallen@librehumanitas.org>2024-09-23 00:33:33 -0500
commit500e1f9892dd41419663e9f72cf47bab5b2aca0b (patch)
treea0709693d5317a6b89cdda7ac3143886b93552f4 /src/bookmouse.cpp
parentfa4b4097d3283e1d6e6376c70910e245f0b1f6ec (diff)
Saving work.
Diffstat (limited to 'src/bookmouse.cpp')
-rw-r--r--src/bookmouse.cpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/src/bookmouse.cpp b/src/bookmouse.cpp
new file mode 100644
index 0000000..9ba09c4
--- /dev/null
+++ b/src/bookmouse.cpp
@@ -0,0 +1,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