add an option to show an arrow to indicate page overlap

pull/1197/head
chrox 10 years ago
parent c651816f4b
commit ee3c5525f9

@ -136,19 +136,32 @@ function ReaderPaging:onSaveSettings()
end
function ReaderPaging:addToMainMenu(tab_item_table)
-- FIXME: repeated code with page overlap menu for readerrolling
-- 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.
local page_overlap_menu = {
{
text_func = function()
return self.show_overlap_enable and _("Disable") or _("Enable")
end,
callback = function()
self.show_overlap_enable = not self.show_overlap_enable
if not self.show_overlap_enable then
self.view:resetDimArea()
end
end
},
}
for _, menu_entry in ipairs(self.view:genOverlapStyleMenu()) do
table.insert(page_overlap_menu, menu_entry)
end
table.insert(tab_item_table.typeset, {
text = _("Show page overlap"),
text = _("Page overlap"),
enabled_func = function()
return not self.view.page_scroll and self.zoom_mode ~= "page"
and not self.zoom_mode:find("height")
end,
checked_func = function() return self.show_overlap_enable end,
callback = function()
self.show_overlap_enable = not self.show_overlap_enable
if not self.show_overlap_enable then
self.view:resetDimArea()
end
end
sub_item_table = page_overlap_menu,
})
end

@ -209,16 +209,29 @@ function ReaderRolling:onSaveSettings()
end
function ReaderRolling:addToMainMenu(tab_item_table)
-- 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.
local page_overlap_menu = {
{
text_func = function()
return self.show_overlap_enable and _("Disable") or _("Enable")
end,
callback = function()
self.show_overlap_enable = not self.show_overlap_enable
if not self.show_overlap_enable then
self.view:resetDimArea()
end
end
},
}
for _, menu_entry in ipairs(self.view:genOverlapStyleMenu()) do
table.insert(page_overlap_menu, menu_entry)
end
table.insert(tab_item_table.typeset, {
text = _("Show page overlap"),
text = _("Page overlap"),
enabled_func = function() return self.view.view_mode ~= "page" end,
checked_func = function() return self.show_overlap_enable end,
callback = function()
self.show_overlap_enable = not self.show_overlap_enable
if not self.show_overlap_enable then
self.view:resetDimArea()
end
end
sub_item_table = page_overlap_menu,
})
end

@ -1,7 +1,9 @@
local AlphaContainer = require("ui/widget/container/alphacontainer")
local ReaderFlipping = require("apps/reader/modules/readerflipping")
local ReaderFooter = require("apps/reader/modules/readerfooter")
local ReaderDogear = require("apps/reader/modules/readerdogear")
local OverlapGroup = require("ui/widget/overlapgroup")
local ImageWidget = require("ui/widget/imagewidget")
local UIManager = require("ui/uimanager")
local Screen = require("device").screen
local Geom = require("ui/geometry")
@ -92,6 +94,12 @@ function ReaderView:resetLayout()
view = self,
ui = self.ui,
}
self.arrow = AlphaContainer:new{
alpha = 0.6,
ImageWidget:new{
file = "resources/icons/appbar.control.expand.png",
}
}
self[1] = self.dogear
self[2] = self.footer
self[3] = self.flipping
@ -121,12 +129,16 @@ function ReaderView:paintTo(bb, x, y)
end
-- dim last read area
if self.document.view_mode ~= "page"
and self.dim_area.w ~= 0 and self.dim_area.h ~= 0 then
bb:dimRect(
self.dim_area.x, self.dim_area.y,
self.dim_area.w, self.dim_area.h
)
if self.dim_area.w ~= 0 and self.dim_area.h ~= 0 then
--DEBUG("dim area", self.dim_area)
if self.page_overlap_style == "dim" then
bb:dimRect(
self.dim_area.x, self.dim_area.y,
self.dim_area.w, self.dim_area.h
)
elseif self.page_overlap_style == "arrow" then
self.arrow:paintTo(bb, 0, self.dim_area.h)
end
end
-- draw saved highlight
if self.highlight_visible then
@ -599,6 +611,7 @@ function ReaderView:onReadSettings(config)
local page_scroll = config:readSetting("kopt_page_scroll") or self.document.configurable.page_scroll
self.page_scroll = page_scroll == 1 and true or false
self.highlight.saved = config:readSetting("highlight") or {}
self.page_overlap_style = config:readSetting("page_overlap_style") or "dim"
end
function ReaderView:onPageUpdate(new_page_no)
@ -666,6 +679,7 @@ function ReaderView:onSaveSettings()
self.ui.doc_settings:saveSetting("rotation_mode", self.cur_rotation_mode)
self.ui.doc_settings:saveSetting("gamma", self.state.gamma)
self.ui.doc_settings:saveSetting("highlight", self.highlight.saved)
self.ui.doc_settings:saveSetting("page_overlap_style", self.page_overlap_style)
end
function ReaderView:autoSaveSettings()
@ -701,4 +715,28 @@ function ReaderView:getRenderModeMenuTable()
}
end
local page_overlap_styles = {
arrow = _("Arrow"),
dim = _("Gray out"),
}
function ReaderView:genOverlapStyleMenu()
local view = self
local get_overlap_style = function(style)
return {
text = page_overlap_styles[style],
checked_func = function()
return view.page_overlap_style == style
end,
callback = function()
view.page_overlap_style = style
end
}
end
return {
get_overlap_style("arrow"),
get_overlap_style("dim"),
}
end
return ReaderView

Loading…
Cancel
Save