2
0
mirror of https://github.com/koreader/koreader synced 2024-11-16 06:12:56 +00:00
koreader/frontend/ui/elements/page_overlap.lua

105 lines
3.7 KiB
Lua

local FFIUtil = require("ffi/util")
local ReaderUI = require("apps/reader/readerui")
local UIManager = require("ui/uimanager")
local _ = require("gettext")
local T = FFIUtil.template
local PageOverlap = {
text = _("Page overlap"),
sub_item_table = {
{
text_func = function()
local text = _("Page overlap")
if G_reader_settings:isTrue("page_overlap_enable") then
text = text .. ""
end
return text
end,
checked_func = function()
return ReaderUI.instance.view:isOverlapAllowed() and ReaderUI.instance.view.page_overlap_enable
end,
callback = function()
local view = ReaderUI.instance.view
if view:isOverlapAllowed() then
if view.page_overlap_enable then
view.dim_area:clear()
end
view.page_overlap_enable = not view.page_overlap_enable
else
UIManager:show(require("ui/widget/infomessage"):new{
text = _("Page overlap cannot be enabled in the current view mode."),
timeout = 2,
})
end
end,
hold_callback = function(touchmenu_instance)
G_reader_settings:flipNilOrFalse("page_overlap_enable")
touchmenu_instance:updateItems()
end,
},
}
}
table.insert(PageOverlap.sub_item_table, {
keep_menu_open = true,
text_func = function()
return T(_("Number of lines: %1"), G_reader_settings:readSetting("copt_overlap_lines") or 1)
end,
enabled_func = function()
return not ReaderUI.instance.document.info.has_pages and
ReaderUI.instance.view:isOverlapAllowed() and ReaderUI.instance.view.page_overlap_enable
end,
callback = function(touchmenu_instance)
local SpinWidget = require("ui/widget/spinwidget")
UIManager:show(SpinWidget:new{
title_text = _("Number of overlapped lines"),
info_text = _([[
When page overlap is enabled, some lines from the previous page will be displayed on the next page.
You can set how many lines are shown.]]),
value = G_reader_settings:readSetting("copt_overlap_lines") or 1,
value_min = 1,
value_max = 10,
default_value = 1,
precision = "%d",
callback = function(spin)
G_reader_settings:saveSetting("copt_overlap_lines", spin.value)
touchmenu_instance:updateItems()
end,
})
end,
separator = true,
})
local page_overlap_styles = {
arrow = _("Arrow"),
dim = _("Gray out"),
line = _("Horizontal line"),
}
for k, v in FFIUtil.orderedPairs(page_overlap_styles) do
table.insert(PageOverlap.sub_item_table, {
text_func = function()
local text = v
if G_reader_settings:readSetting("page_overlap_style") == k then
text = text .. ""
end
return text
end,
enabled_func = function()
return ReaderUI.instance.view:isOverlapAllowed() and ReaderUI.instance.view.page_overlap_enable
end,
checked_func = function()
return ReaderUI.instance.view.page_overlap_style == k
end,
radio = true,
callback = function()
ReaderUI.instance.view.page_overlap_style = k
end,
hold_callback = function(touchmenu_instance)
G_reader_settings:saveSetting("page_overlap_style", k)
touchmenu_instance:updateItems()
end,
})
end
return PageOverlap