From 1e4469fec202833af57e9f7cff656cb4798813b0 Mon Sep 17 00:00:00 2001 From: poire-z Date: Fri, 1 Mar 2019 14:54:38 +0100 Subject: [PATCH] [UX] Gesture manager: add actions - prev/next chapter (#4692) Also adds rudimentary support for these in ReaderPaging. --- .../apps/reader/modules/readergesture.lua | 8 +++++++ frontend/apps/reader/modules/readerpaging.lua | 22 +++++++++++++++++++ .../apps/reader/modules/readerrolling.lua | 8 +++---- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index b55101946..b785ad699 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -23,6 +23,8 @@ local action_strings = { page_jmp_back_1 = _("Previous page"), page_jmp_fwd_10 = _("Forward 10 pages"), page_jmp_fwd_1 = _("Next page"), + prev_chapter = _("Previous chapter"), + next_chapter = _("Next chapter"), go_to = _("Go to"), skim = _("Skim"), back = _("Back"), @@ -247,6 +249,8 @@ function ReaderGesture:buildMenu(ges, default) {"page_jmp_back_1", not self.is_docless}, {"page_jmp_fwd_10", not self.is_docless}, {"page_jmp_fwd_1", not self.is_docless}, + {"prev_chapter", not self.is_docless}, + {"next_chapter", not self.is_docless}, {"go_to", true}, {"skim", not self.is_docless}, {"back", true}, @@ -513,6 +517,10 @@ function ReaderGesture:gestureAction(action) self:pageUpdate(-10) elseif action == "page_jmp_back_1" then self:pageUpdate(-1) + elseif action == "next_chapter" then + self.ui:handleEvent(Event:new("GotoNextChapter")) + elseif action == "prev_chapter" then + self.ui:handleEvent(Event:new("GotoPrevChapter")) elseif action == "go_to" then self.ui:handleEvent(Event:new("ShowGotoDialog")) elseif action == "skim" then diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index 0461caa77..dd759fcc6 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -959,4 +959,26 @@ function ReaderPaging:onGotoPercentage(percentage) return true end +-- These might need additional work to behave fine in scroll +-- mode, and other zoom modes than Fit page +function ReaderPaging:onGotoNextChapter() + local pageno = self.current_page + local new_page = self.ui.toc:getNextChapter(pageno, 0) + if new_page then + self.ui.link:addCurrentLocationToStack() + self:onGotoPage(new_page) + end + return true +end + +function ReaderPaging:onGotoPrevChapter() + local pageno = self.current_page + local new_page = self.ui.toc:getPreviousChapter(pageno, 0) + if new_page then + self.ui.link:addCurrentLocationToStack() + self:onGotoPage(new_page) + end + return true +end + return ReaderPaging diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index 90428f52e..a796a4bc4 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -285,13 +285,13 @@ function ReaderRolling:setupTouchZones() id = "double_tap_forward", ges = "double_tap", screen_zone = forward_double_tap_zone, - handler = function() return self:onDoubleTapForward() end + handler = function() return self:onGotoNextChapter() end }, { id = "double_tap_backward", ges = "double_tap", screen_zone = backward_double_tap_zone, - handler = function() return self:onDoubleTapBackward() end + handler = function() return self:onGotoPrevChapter() end }, { id = "rolling_swipe", @@ -448,7 +448,7 @@ function ReaderRolling:onResume() self:updateBatteryState() end -function ReaderRolling:onDoubleTapForward() +function ReaderRolling:onGotoNextChapter() local visible_page_count = self.ui.document:getVisiblePageCount() local pageno = self.current_page + (visible_page_count > 1 and 1 or 0) local new_page = self.ui.toc:getNextChapter(pageno, 0) @@ -459,7 +459,7 @@ function ReaderRolling:onDoubleTapForward() return true end -function ReaderRolling:onDoubleTapBackward() +function ReaderRolling:onGotoPrevChapter() local pageno = self.current_page local new_page = self.ui.toc:getPreviousChapter(pageno, 0) if new_page then