ReaderFooter: separate ToggleFooterMode from TapFooter

the footer can be toggled by gestures and menu, and should only be locked or skim in flipping mode when the footer is tapped

also allow toggling when only displaying the progress bar

rename to TapFooter to show it is not an event

Fixes: #10355
reviewable/pr10382/r1
yparitcher 1 year ago
parent a5320acf4f
commit 64b0f5e7cf

@ -845,7 +845,7 @@ function ReaderFooter:setupTouchZones()
id = "readerfooter_tap", id = "readerfooter_tap",
ges = "tap", ges = "tap",
screen_zone = footer_screen_zone, screen_zone = footer_screen_zone,
handler = function(ges) return self:onTapFooter(ges) end, handler = function(ges) return self:TapFooter(ges) end,
overrides = { overrides = {
"readerconfigmenu_ext_tap", "readerconfigmenu_ext_tap",
"readerconfigmenu_tap", "readerconfigmenu_tap",
@ -1018,7 +1018,7 @@ function ReaderFooter:addToMainMenu(menu_items)
enabled_func = function() enabled_func = function()
return not self.view.flipping_visible return not self.view.flipping_visible
end, end,
callback = function() self:onTapFooter(true) end, callback = function() self:onToggleFooterMode() end,
}) })
settings_submenu_num = 2 settings_submenu_num = 2
end end
@ -2366,12 +2366,7 @@ function ReaderFooter:onExitFlippingMode()
self:rescheduleFooterAutoRefreshIfNeeded() self:rescheduleFooterAutoRefreshIfNeeded()
end end
function ReaderFooter:onTapFooter(ges) function ReaderFooter:TapFooter(ges)
local ignore_lock = false
if ges == true then
ignore_lock = true
ges = nil
end
if self.view.flipping_visible and ges then if self.view.flipping_visible and ges then
local pos = ges.pos local pos = ges.pos
local dimen = self.progress_bar.dimen local dimen = self.progress_bar.dimen
@ -2383,9 +2378,12 @@ function ReaderFooter:onTapFooter(ges)
self:onUpdateFooter(true) self:onUpdateFooter(true)
return true return true
end end
if self.has_no_mode or (self.settings.lock_tap and not ignore_lock) then if self.settings.lock_tap then return end
return return self:onToggleFooterMode()
end end
function ReaderFooter:onToggleFooterMode()
if self.has_no_mode and self.settings.disable_progress_bar then return end
if self.settings.all_at_once or self.has_no_mode then if self.settings.all_at_once or self.has_no_mode then
if self.mode >= 1 then if self.mode >= 1 then
self.mode = self.mode_list.off self.mode = self.mode_list.off

@ -112,7 +112,7 @@ local settingsList = {
-- reader settings -- reader settings
open_next_document_in_folder = {category="none", event="OpenNextDocumentInFolder", title=_("Open next document in folder"), reader=true, separator=true}, open_next_document_in_folder = {category="none", event="OpenNextDocumentInFolder", title=_("Open next document in folder"), reader=true, separator=true},
toggle_status_bar = {category="none", event="TapFooter", title=_("Toggle status bar"), reader=true, separator=true}, toggle_status_bar = {category="none", event="ToggleFooterMode", title=_("Toggle status bar"), reader=true, separator=true},
prev_chapter = {category="none", event="GotoPrevChapter", title=_("Previous chapter"), reader=true}, prev_chapter = {category="none", event="GotoPrevChapter", title=_("Previous chapter"), reader=true},
next_chapter = {category="none", event="GotoNextChapter", title=_("Next chapter"), reader=true}, next_chapter = {category="none", event="GotoNextChapter", title=_("Next chapter"), reader=true},
first_page = {category="none", event="GoToBeginning", title=_("First page"), reader=true}, first_page = {category="none", event="GoToBeginning", title=_("First page"), reader=true},

@ -301,35 +301,35 @@ describe("Readerfooter module", function()
} }
local footer = readerui.view.footer local footer = readerui.view.footer
footer.mode = 0 footer.mode = 0
footer:onTapFooter() footer:TapFooter()
assert.is.same(1, footer.mode) assert.is.same(1, footer.mode)
footer:onTapFooter() footer:TapFooter()
-- 2 is pages_left_book, an alternate variant of page_progress, disabled by default (#7047) -- 2 is pages_left_book, an alternate variant of page_progress, disabled by default (#7047)
assert.is.same(3, footer.mode) assert.is.same(3, footer.mode)
footer:onTapFooter() footer:TapFooter()
assert.is.same(4, footer.mode) assert.is.same(4, footer.mode)
footer:onTapFooter() footer:TapFooter()
assert.is.same(5, footer.mode) assert.is.same(5, footer.mode)
footer:onTapFooter() footer:TapFooter()
assert.is.same(6, footer.mode) assert.is.same(6, footer.mode)
footer:onTapFooter() footer:TapFooter()
assert.is.same(7, footer.mode) assert.is.same(7, footer.mode)
footer:onTapFooter() footer:TapFooter()
assert.is.same(8, footer.mode) assert.is.same(8, footer.mode)
footer:onTapFooter() footer:TapFooter()
assert.is.same(0, footer.mode) assert.is.same(0, footer.mode)
footer.settings.all_at_once = true footer.settings.all_at_once = true
footer:updateFooterTextGenerator() footer:updateFooterTextGenerator()
footer.mode = 5 footer.mode = 5
footer:onTapFooter() footer:TapFooter()
assert.is.same(0, footer.mode) assert.is.same(0, footer.mode)
footer:onTapFooter() footer:TapFooter()
assert.is.same(1, footer.mode) assert.is.same(1, footer.mode)
footer:onTapFooter() footer:TapFooter()
assert.is.same(0, footer.mode) assert.is.same(0, footer.mode)
-- Make it visible again to make the following tests behave... -- Make it visible again to make the following tests behave...
footer:onTapFooter() footer:TapFooter()
assert.is.same(1, footer.mode) assert.is.same(1, footer.mode)
readerui:closeDocument() readerui:closeDocument()
readerui:onClose() readerui:onClose()

Loading…
Cancel
Save