From 09d49e29addb77919dc0f0be60838798b1880184 Mon Sep 17 00:00:00 2001 From: yparitcher Date: Wed, 25 Sep 2019 18:28:07 -0400 Subject: [PATCH] [UX] Add inverse reading order to gesture manager (#5423) Also fixes #5354. --- .../apps/reader/modules/readergesture.lua | 20 +++++++++++++++++++ frontend/apps/reader/modules/readerpaging.lua | 3 +-- .../apps/reader/modules/readerrolling.lua | 3 +-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index e9c5ad23e..44554dea1 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -80,6 +80,7 @@ local action_strings = { toggle_bookmark = _("Toggle bookmark"), toggle_page_flipping = _("Toggle page flipping"), toggle_reflow = _("Toggle reflow"), + toggle_inverse_reading_order = _("Toggle page turn direction"), zoom_contentwidth = _("Zoom to fit content width"), zoom_contentheight = _("Zoom to fit content height"), @@ -723,6 +724,7 @@ function ReaderGesture:buildMenu(ges, default) {"toggle_bookmark", not self.is_docless, true}, {"toggle_page_flipping", not self.is_docless, true}, {"toggle_reflow", not self.is_docless, true}, + {"toggle_inverse_reading_order", not self.is_docless, true}, {"zoom_contentwidth", not self.is_docless}, {"zoom_contentheight", not self.is_docless}, {"zoom_pagewidth", not self.is_docless}, @@ -1357,6 +1359,8 @@ function ReaderGesture:gestureAction(action, ges) end elseif action == "toggle_bookmark" then self.ui:handleEvent(Event:new("ToggleBookmark")) + elseif action == "toggle_inverse_reading_order" then + self:onToggleReadingOrder() elseif action == "toggle_frontlight" then -- when using frontlight system settings if lightFrontlight() then @@ -1564,4 +1568,20 @@ function ReaderGesture:onGSensorToggle() return true end +function ReaderGesture:onToggleReadingOrder() + local document_module = self.ui.document.info.has_pages and self.ui.paging or self.ui.rolling + document_module.inverse_reading_order = not document_module.inverse_reading_order + document_module:setupTouchZones() + -- Needed to reset the touch zone overrides + local gesture_manager = G_reader_settings:readSetting(self.ges_mode) + for gesture, action in pairs(gesture_manager) do + self:setupGesture(gesture, action) + end + UIManager:show(Notification:new{ + text = document_module.inverse_reading_order and _("RTL page turning.") or _("LTR page turning."), + timeout = 2.5, + }) + return true +end + return ReaderGesture diff --git a/frontend/apps/reader/modules/readerpaging.lua b/frontend/apps/reader/modules/readerpaging.lua index 688a4bfc0..b6b1fc1f4 100644 --- a/frontend/apps/reader/modules/readerpaging.lua +++ b/frontend/apps/reader/modules/readerpaging.lua @@ -241,8 +241,7 @@ function ReaderPaging:addToMainMenu(menu_items) text = _("Invert page turn taps and swipes"), checked_func = function() return self.inverse_reading_order end, callback = function() - self.inverse_reading_order = not self.inverse_reading_order - self:setupTapTouchZones() + self.ui:handleEvent(Event:new("ToggleReadingOrder")) end, hold_callback = function(touchmenu_instance) UIManager:show(ConfirmBox:new{ diff --git a/frontend/apps/reader/modules/readerrolling.lua b/frontend/apps/reader/modules/readerrolling.lua index ec21947bc..1fd994f84 100644 --- a/frontend/apps/reader/modules/readerrolling.lua +++ b/frontend/apps/reader/modules/readerrolling.lua @@ -367,8 +367,7 @@ function ReaderRolling:addToMainMenu(menu_items) text = _("Invert page turn taps and swipes"), checked_func = function() return self.inverse_reading_order end, callback = function() - self.inverse_reading_order = not self.inverse_reading_order - self:setupTouchZones() + self.ui:handleEvent(Event:new("ToggleReadingOrder")) end, hold_callback = function(touchmenu_instance) UIManager:show(ConfirmBox:new{