recalculate footer sizes when document page count is updated

pull/744/head
chrox 10 years ago
parent 72cb163a0c
commit beaf768250

@ -34,23 +34,26 @@ function ReaderFooter:init()
DMINIBAR_NEXT_CHAPTER = false DMINIBAR_NEXT_CHAPTER = false
end end
progress_text_default = "" self.pageno = self.view.state.page
self.pages = self.view.document:getPageCount()
local progress_text_default = ""
if DMINIBAR_ALL_AT_ONCE then if DMINIBAR_ALL_AT_ONCE then
if DMINIBAR_TIME then if DMINIBAR_TIME then
progress_text_default = progress_text_default .. " | WW:WW" progress_text_default = progress_text_default .. " | WW:WW"
end end
if DMINIBAR_PAGES then if DMINIBAR_PAGES then
progress_text_default = progress_text_default .. " | 0000 / 0000" progress_text_default = progress_text_default .. " | 0000 / 0000"
end end
if DMINIBAR_NEXT_CHAPTER then if DMINIBAR_NEXT_CHAPTER then
progress_text_default = progress_text_default .. " | => 000" progress_text_default = progress_text_default .. " | => 000"
end end
if DMINIBAR_BATTERY then if DMINIBAR_BATTERY then
progress_text_default = progress_text_default .. " | B:100%" progress_text_default = progress_text_default .. " | B:100%"
end end
progress_text_default = string.sub(progress_text_default,4) progress_text_default = string.sub(progress_text_default, 4)
else else
progress_text_default = "0000 / 0000" progress_text_default = string.format(" %d / %d ", self.pages, self.pages)
end end
self.progress_text = TextWidget:new{ self.progress_text = TextWidget:new{
@ -87,8 +90,6 @@ function ReaderFooter:init()
} }
} }
self.dimen = self[1]:getSize() self.dimen = self[1]:getSize()
self.pageno = self.view.state.page
self.pages = self.view.document.info.number_of_pages
self:updateFooterPage() self:updateFooterPage()
local range = Geom:new{ local range = Geom:new{
x = Screen:getWidth()*DTAP_ZONE_MINIBAR.x, x = Screen:getWidth()*DTAP_ZONE_MINIBAR.x,
@ -121,16 +122,13 @@ function ReaderFooter:fillToc()
end end
function ReaderFooter:updateFooterPage() function ReaderFooter:updateFooterPage()
local powerd
local state
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 DMINIBAR_ALL_AT_ONCE then if DMINIBAR_ALL_AT_ONCE then
self.progress_text.text = "" self.progress_text.text = ""
if DMINIBAR_NEXT_CHAPTER then if DMINIBAR_NEXT_CHAPTER then
powerd = Device:getPowerDevice() local powerd = Device:getPowerDevice()
state = powerd:isCharging() and -1 or powerd:getCapacity() local state = powerd:isCharging() and -1 or powerd:getCapacity()
self.progress_text.text = self.progress_text.text .. " | B:" .. powerd:getCapacity() .. "%" self.progress_text.text = self.progress_text.text .. " | B:" .. powerd:getCapacity() .. "%"
end end
if DMINIBAR_TIME then if DMINIBAR_TIME then
@ -142,7 +140,7 @@ function ReaderFooter:updateFooterPage()
if DMINIBAR_NEXT_CHAPTER then if DMINIBAR_NEXT_CHAPTER then
self.progress_text.text = self.progress_text.text .. " | => " .. self.ui.toc:_getChapterPagesLeft(self.pageno,self.pages) self.progress_text.text = self.progress_text.text .. " | => " .. self.ui.toc:_getChapterPagesLeft(self.pageno,self.pages)
end end
self.progress_text.text = string.sub(self.progress_text.text,4) self.progress_text.text = string.sub(self.progress_text.text, 4)
else else
if self.mode == 1 then if self.mode == 1 then
self.progress_text.text = string.format("%d / %d", self.pageno, self.pages) self.progress_text.text = string.format("%d / %d", self.pageno, self.pages)
@ -151,8 +149,8 @@ function ReaderFooter:updateFooterPage()
elseif self.mode == 3 then elseif self.mode == 3 then
self.progress_text.text = "=> " .. self.ui.toc:_getChapterPagesLeft(self.pageno,self.pages) self.progress_text.text = "=> " .. self.ui.toc:_getChapterPagesLeft(self.pageno,self.pages)
elseif self.mode == 4 then elseif self.mode == 4 then
powerd = Device:getPowerDevice() local powerd = Device:getPowerDevice()
state = powerd:isCharging() and -1 or powerd:getCapacity() local state = powerd:isCharging() and -1 or powerd:getCapacity()
self.progress_text.text = "B:" .. powerd:getCapacity() .. "%" self.progress_text.text = "B:" .. powerd:getCapacity() .. "%"
end end
end end
@ -170,7 +168,6 @@ function ReaderFooter:updateFooterPos()
end end
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
@ -183,6 +180,11 @@ function ReaderFooter:onPosUpdate(pos)
self:updateFooterPos() self:updateFooterPos()
end end
-- recalculate footer sizes when document page count is updated
function ReaderFooter:onUpdatePos()
UIManager:scheduleIn(0.1, function() self:init() end)
end
function ReaderFooter:applyFooterMode(mode) function ReaderFooter:applyFooterMode(mode)
-- three modes switcher for reader footer -- three modes switcher for reader footer
-- 0 for footer off -- 0 for footer off

@ -175,6 +175,7 @@ function ReaderRolling:onReadSettings(config)
if self.view.view_mode == "page" then if self.view.view_mode == "page" then
self.ui:handleEvent(Event:new("PageUpdate", self.ui.document:getCurrentPage())) self.ui:handleEvent(Event:new("PageUpdate", self.ui.document:getCurrentPage()))
end end
self.ui:handleEvent(Event:new("UpdatePos"))
end end
function ReaderRolling:onSaveSettings() function ReaderRolling:onSaveSettings()

Loading…
Cancel
Save