[UX] Gesture manager: add actions - prev/next chapter (#4692)

Also adds rudimentary support for these in ReaderPaging.
pull/4689/head
poire-z 5 years ago committed by Frans de Jonge
parent 1475acdae7
commit 1e4469fec2

@ -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

@ -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

@ -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

Loading…
Cancel
Save