mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[UX] Treat inverse_reading_order as a proper setting (#5284)
This is supported by ReaderPaging and ReaderRolling, but the menu entry was only shown in ReaderPaging. Hold now sets the global default. Fixes <https://github.com/koreader/koreader/issues/4983>. Fixes <https://github.com/koreader/koreader/issues/4089>.
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
local InputContainer = require("ui/widget/container/inputcontainer")
|
||||
local Geom = require("ui/geometry")
|
||||
local Input = require("device").input
|
||||
local ConfirmBox = require("ui/widget/confirmbox")
|
||||
local Device = require("device")
|
||||
local Screen = Device.screen
|
||||
local Event = require("ui/event")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local Geom = require("ui/geometry")
|
||||
local InputContainer = require("ui/widget/container/inputcontainer")
|
||||
local Math = require("optmath")
|
||||
local UIManager = require("ui/uimanager")
|
||||
local logger = require("logger")
|
||||
local _ = require("gettext")
|
||||
local Input = Device.input
|
||||
local Screen = Device.screen
|
||||
|
||||
|
||||
local function copyPageState(page_state)
|
||||
@@ -33,7 +34,7 @@ local ReaderPaging = InputContainer:new{
|
||||
show_overlap_enable = nil,
|
||||
overlap = Screen:scaleBySize(DOVERLAPPIXELS),
|
||||
|
||||
inverse_reading_order = false,
|
||||
inverse_reading_order = nil,
|
||||
page_flipping_mode = false,
|
||||
bookmark_flipping_mode = false,
|
||||
flip_steps = {0,1,2,5,10,20,50,100}
|
||||
@@ -178,7 +179,12 @@ function ReaderPaging:onReadSettings(config)
|
||||
end
|
||||
self.flipping_zoom_mode = config:readSetting("flipping_zoom_mode") or "page"
|
||||
self.flipping_scroll_mode = config:readSetting("flipping_scroll_mode") or false
|
||||
self.inverse_reading_order = config:readSetting("inverse_reading_order") or false
|
||||
self.inverse_reading_order = config:readSetting("inverse_reading_order")
|
||||
if self.inverse_reading_order == nil and G_reader_settings:has("inverse_reading_order") then
|
||||
self.inverse_reading_order = G_reader_settings:isTrue("inverse_reading_order")
|
||||
else
|
||||
self.inverse_reading_order = false
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderPaging:onSaveSettings()
|
||||
@@ -233,13 +239,25 @@ function ReaderPaging:addToMainMenu(menu_items)
|
||||
end,
|
||||
sub_item_table = page_overlap_menu,
|
||||
}
|
||||
menu_items.read_from_right_to_left = {
|
||||
text = _("Read from right to left"),
|
||||
menu_items.invert_page_turn_gestures = {
|
||||
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()
|
||||
end,
|
||||
hold_callback = function(touchmenu_instance)
|
||||
UIManager:show(ConfirmBox:new{
|
||||
text = self.inverse_reading_order and _("Enable right to left reading by default?")
|
||||
or _("Disable right to left reading by default?"),
|
||||
ok_text = self.inverse_reading_order and _("Enable")
|
||||
or _("Disable"),
|
||||
ok_callback = function()
|
||||
G_reader_settings:saveSetting("inverse_reading_order", self.inverse_reading_order)
|
||||
if touchmenu_instance then touchmenu_instance:updateItems() end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ local ReaderRolling = InputContainer:new{
|
||||
old_doc_height = nil,
|
||||
old_page = nil,
|
||||
current_pos = 0,
|
||||
inverse_reading_order = false,
|
||||
inverse_reading_order = nil,
|
||||
-- only used for page view mode
|
||||
current_page= nil,
|
||||
xpointer = nil,
|
||||
@@ -188,7 +188,12 @@ function ReaderRolling:onReadSettings(config)
|
||||
if self.show_overlap_enable == nil then
|
||||
self.show_overlap_enable = DSHOWOVERLAP
|
||||
end
|
||||
self.inverse_reading_order = config:readSetting("inverse_reading_order") or false
|
||||
self.inverse_reading_order = config:readSetting("inverse_reading_order")
|
||||
if self.inverse_reading_order == nil and G_reader_settings:has("inverse_reading_order") then
|
||||
self.inverse_reading_order = G_reader_settings:isTrue("inverse_reading_order")
|
||||
else
|
||||
self.inverse_reading_order = false
|
||||
end
|
||||
|
||||
-- This self.visible_pages may not be the current nb of visible pages
|
||||
-- as crengine may decide to not ensure that in some conditions.
|
||||
@@ -343,6 +348,27 @@ function ReaderRolling:getLastProgress()
|
||||
end
|
||||
|
||||
function ReaderRolling:addToMainMenu(menu_items)
|
||||
--- @fixme Repeated code with ReaderPaging read from left to right.
|
||||
menu_items.invert_page_turn_gestures = {
|
||||
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()
|
||||
end,
|
||||
hold_callback = function(touchmenu_instance)
|
||||
UIManager:show(ConfirmBox:new{
|
||||
text = self.inverse_reading_order and _("Enable right to left reading by default?")
|
||||
or _("Disable right to left reading by default?"),
|
||||
ok_text = self.inverse_reading_order and _("Enable")
|
||||
or _("Disable"),
|
||||
ok_callback = function()
|
||||
G_reader_settings:saveSetting("inverse_reading_order", self.inverse_reading_order)
|
||||
if touchmenu_instance then touchmenu_instance:updateItems() end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
||||
--- @fixme repeated code with page overlap menu for readerpaging
|
||||
-- needs to keep only one copy of the logic as for the DRY principle.
|
||||
-- The difference between the two menus is only the enabled func.
|
||||
|
||||
@@ -37,7 +37,6 @@ local order = {
|
||||
"highlight_options",
|
||||
},
|
||||
setting = {
|
||||
"read_from_right_to_left",
|
||||
-- common settings
|
||||
-- those that don't exist will simply be skipped during menu gen
|
||||
"frontlight", -- if Device:hasFrontlight()
|
||||
@@ -70,6 +69,7 @@ local order = {
|
||||
"enable_back_history",
|
||||
"android_volume_keys",
|
||||
"----------------------------",
|
||||
"invert_page_turn_gestures",
|
||||
"invert_page_turn_buttons",
|
||||
},
|
||||
network = {
|
||||
|
||||
Reference in New Issue
Block a user