add 'full/mini' options for progress bar of crereader

pull/506/head
chrox 10 years ago
parent 8b09ee7cf1
commit 9f507e6447

@ -362,6 +362,11 @@ function CreDocument:isXPointerInCurrentPage(xp)
return self._document:isXPointerInCurrentPage(xp) return self._document:isXPointerInCurrentPage(xp)
end end
function CreDocument:setStatusLineProp(prop)
DEBUG("CreDocument: set status line property", prop)
self._document:setStringProperty("window.status.line", prop)
end
function CreDocument:register(registry) function CreDocument:register(registry)
registry:addProvider("txt", "application/txt", self) registry:addProvider("txt", "application/txt", self)
registry:addProvider("epub", "application/epub", self) registry:addProvider("epub", "application/epub", self)

@ -121,6 +121,16 @@ local CreOptions = {
default_arg = "page", default_arg = "page",
event = "SetViewMode", event = "SetViewMode",
}, },
{
name = "status_line",
name_text = S.PROGRESS_BAR,
toggle = {S.FULL, S.MINI},
values = {0, 1},
default_value = 0,
args = {0, 1},
default_arg = 0,
event = "SetStatusLine",
},
{ {
name = "embedded_css", name = "embedded_css",
name_text = S.EMBEDDED_STYLE, name_text = S.EMBEDDED_STYLE,

@ -39,15 +39,6 @@ local KoptOptions = {
{ {
icon = "resources/icons/appbar.column.two.large.png", icon = "resources/icons/appbar.column.two.large.png",
options = { options = {
{
name = "full_screen",
name_text = S.FULL_SCREEN,
toggle = {S.ON, S.OFF},
values = {1, 0},
default_value = DFULL_SCREEN,
event = "SetFullScreen",
args = {true, false},
},
{ {
name = "page_scroll", name = "page_scroll",
name_text = S.SCROLL_MODE, name_text = S.SCROLL_MODE,
@ -57,6 +48,15 @@ local KoptOptions = {
event = "ToggleScrollMode", event = "ToggleScrollMode",
args = {true, false}, args = {true, false},
}, },
{
name = "full_screen",
name_text = S.PROGRESS_BAR,
toggle = {S.OFF, S.ON},
values = {1, 0},
default_value = DFULL_SCREEN,
event = "SetFullScreen",
args = {true, false},
},
{ {
name = "page_margin", name = "page_margin",
name_text = S.PAGE_MARGIN, name_text = S.PAGE_MARGIN,

@ -20,11 +20,12 @@ S.DEFECT_SIZE = _("Defect Size")
S.RENDER_QUALITY = _("Render Quality") S.RENDER_QUALITY = _("Render Quality")
S.AUTO_STRAIGHTEN = _("Auto Straighten") S.AUTO_STRAIGHTEN = _("Auto Straighten")
S.INDENTATION = _("Indentation") S.INDENTATION = _("Indentation")
S.FONT_WEIGHT = _("Font weight") S.FONT_WEIGHT = _("Font Weight")
S.GAMMA = _("Gamma") S.GAMMA = _("Gamma")
S.VIEW_MODE = _("View mode") S.VIEW_MODE = _("View Mode")
S.EMBEDDED_STYLE = _("Embedded style") S.EMBEDDED_STYLE = _("Embedded Style")
S.WRITING_DIR = _("Writing Direction") S.WRITING_DIR = _("Writing Direction")
S.PROGRESS_BAR = _("Progress Bar")
S.ON = _("on") S.ON = _("on")
S.OFF = _("off") S.OFF = _("off")
@ -55,5 +56,7 @@ S.LTR = _("LTR")
S.RTL = _("RTL") S.RTL = _("RTL")
S.TBRTL = _("TBRTL") S.TBRTL = _("TBRTL")
S.TBLTR = _("TBLTR") S.TBLTR = _("TBLTR")
S.FULL = _("full")
S.MINI = _("mini")
return S return S

@ -20,6 +20,9 @@ function ReaderCoptListener:onReadSettings(config)
self.ui:handleEvent(Event:new("SetViewMode", "scroll")) self.ui:handleEvent(Event:new("SetViewMode", "scroll"))
end) end)
end end
local status_line = config:readSetting("copt_status_line") or 0
self.document:setStatusLineProp(status_line)
end end
function ReaderCoptListener:onSetFontSize(font_size) function ReaderCoptListener:onSetFontSize(font_size)

@ -63,7 +63,7 @@ function ReaderFooter:init()
self.dimen = self[1]:getSize() self.dimen = self[1]:getSize()
self.pageno = self.view.state.page self.pageno = self.view.state.page
self.pages = self.view.document.info.number_of_pages self.pages = self.view.document.info.number_of_pages
self:updateFooter() self:updateFooterPage()
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events = {
TapFooter = { TapFooter = {
@ -76,9 +76,10 @@ function ReaderFooter:init()
end end
end end
function ReaderFooter:updateFooter() function ReaderFooter:updateFooterPage()
if type(self.pageno) ~= "number" then return end if type(self.pageno) ~= "number" then return end
self.progress_bar.percentage = self.pageno / self.pages self.progress_bar.percentage = self.pageno / self.pages
if self.show_time then if self.show_time then
self.progress_text.text = os.date("%H:%M") self.progress_text.text = os.date("%H:%M")
else else
@ -86,10 +87,27 @@ function ReaderFooter:updateFooter()
end end
end end
function ReaderFooter:updateFooterPos()
if type(self.position) ~= "number" then return end
self.progress_bar.percentage = self.position / self.doc_height
if self.show_time then
self.progress_text.text = os.date("%H:%M")
else
self.progress_text.text = string.format("%1.f", self.progress_bar.percentage*100).."%"
end
end
function ReaderFooter:onPageUpdate(pageno) function ReaderFooter:onPageUpdate(pageno)
self.pageno = pageno self.pageno = pageno
self.pages = self.view.document.info.number_of_pages self.pages = self.view.document.info.number_of_pages
self:updateFooter() self:updateFooterPage()
end
function ReaderFooter:onPosUpdate(pos)
self.position = pos
self.doc_height = self.view.document.info.doc_height
self:updateFooterPos()
end end
function ReaderFooter:onTapFooter(arg, ges) function ReaderFooter:onTapFooter(arg, ges)
@ -101,7 +119,11 @@ function ReaderFooter:onTapFooter(arg, ges)
else else
self.show_time = not self.show_time self.show_time = not self.show_time
end end
self:updateFooter() if self.pageno then
self:updateFooterPage()
else
self:updateFooterPos()
end
UIManager:setDirty(self.view.dialog, "partial") UIManager:setDirty(self.view.dialog, "partial")
-- consume this tap when footer is visible -- consume this tap when footer is visible
if self.visible then if self.visible then
@ -109,4 +131,10 @@ function ReaderFooter:onTapFooter(arg, ges)
end end
end end
function ReaderFooter:onSetStatusLine(status_line)
self.view.footer_visible = status_line == 1 and true or false
self.ui.document:setStatusLineProp(status_line)
self.ui:handleEvent(Event:new("UpdatePos"))
end
return ReaderFooter return ReaderFooter

@ -13,7 +13,7 @@ local ReaderView = OverlapGroup:new{
-- single page state -- single page state
state = { state = {
page = 0, page = nil,
pos = 0, pos = 0,
zoom = 1.0, zoom = 1.0,
rotation = 0, rotation = 0,
@ -422,7 +422,7 @@ This method is supposed to be only used by ReaderPaging
--]] --]]
function ReaderView:recalculate() function ReaderView:recalculate()
local page_size = nil local page_size = nil
if self.ui.document.info.has_pages then if self.ui.document.info.has_pages and self.state.page then
self.page_area = self:getPageArea( self.page_area = self:getPageArea(
self.state.page, self.state.page,
self.state.zoom, self.state.zoom,
@ -547,24 +547,17 @@ end
function ReaderView:onReadSettings(config) function ReaderView:onReadSettings(config)
self.render_mode = config:readSetting("render_mode") or 0 self.render_mode = config:readSetting("render_mode") or 0
local screen_mode = config:readSetting("screen_mode") local screen_mode = config:readSetting("screen_mode") or "portrait"
if screen_mode then if screen_mode then
Screen:setScreenMode(screen_mode) Screen:setScreenMode(screen_mode)
table.insert(self.ui.postInitCallback, function() self:onSetScreenMode(screen_mode, config:readSetting("rotation_mode"))
self:onSetScreenMode(screen_mode, config:readSetting("rotation_mode"))
end)
end end
self.state.gamma = config:readSetting("gamma") or DGLOBALGAMMA self.state.gamma = config:readSetting("gamma") or DGLOBALGAMMA
local full_screen = config:readSetting("kopt_full_screen") local full_screen = config:readSetting("kopt_full_screen") or self.document.configurable.full_screen
if full_screen == nil then local status_line = config:readSetting("copt_status_line") or self.document.configurable.status_line
full_screen = self.document.configurable.full_screen self.footer_visible = (full_screen == 0 or status_line == 1) and true or false
end
self.footer_visible = full_screen == 0 and true or false
self:resetLayout() self:resetLayout()
local page_scroll = config:readSetting("kopt_page_scroll") local page_scroll = config:readSetting("kopt_page_scroll") or self.document.configurable.page_scroll
if page_scroll == nil then
page_scroll = self.document.configurable.page_scroll
end
self.page_scroll = page_scroll == 1 and true or false self.page_scroll = page_scroll == 1 and true or false
self.highlight.saved = config:readSetting("highlight") or {} self.highlight.saved = config:readSetting("highlight") or {}
end end

@ -264,8 +264,6 @@ function ReaderUI:init()
--DEBUG(self.doc_settings) --DEBUG(self.doc_settings)
-- we only read settings after all the widgets are initialized -- we only read settings after all the widgets are initialized
self:handleEvent(Event:new("ReadSettings", self.doc_settings)) self:handleEvent(Event:new("ReadSettings", self.doc_settings))
-- notify childs of dimensions
self:handleEvent(Event:new("SetDimensions", self.dimen))
for _,v in ipairs(self.postInitCallback) do for _,v in ipairs(self.postInitCallback) do
v() v()

Loading…
Cancel
Save