From a1a9b5e9b0bf4289a2aa6b44d7b55892b309c75a Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 27 May 2012 21:24:33 +0800 Subject: [PATCH] move toc related methods to readertoc.lua --- frontend/ui/reader/readertoc.lua | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/frontend/ui/reader/readertoc.lua b/frontend/ui/reader/readertoc.lua index 815b6003b..026f54c23 100644 --- a/frontend/ui/reader/readertoc.lua +++ b/frontend/ui/reader/readertoc.lua @@ -3,6 +3,7 @@ ReaderToc = InputContainer:new{ ShowToc = { {"T"}, doc = "show Table of Content menu"}, }, dimen = Geom:new{ w = G_width-20, h = G_height-20}, + current_page = 0, } function ReaderToc:cleanUpTocTitle(title) @@ -13,6 +14,41 @@ function ReaderToc:onSetDimensions(dimen) self.dimen = dimen end +--function ReaderToc:fillToc() + --self.toc = self.doc:getToc() +--end + +-- getTocTitleByPage wrapper, so specific reader +-- can tranform pageno according its need +function ReaderToc:getTocTitleByPage(pageno) + return self:_getTocTitleByPage(pageno) +end + +function ReaderToc:_getTocTitleByPage(pageno) + if not self.toc then + -- build toc when needed. + self:fillToc() + end + + -- no table of content + if #self.toc == 0 then + return "" + end + + local pre_entry = self.toc[1] + for _k,_v in ipairs(self.toc) do + if _v.page > pageno then + break + end + pre_entry = _v + end + return self:cleanUpTocTitle(pre_entry.title) +end + +function ReaderToc:getTocTitleOfCurrentPage() + return self:getTocTitleByPage(self.pageno) +end + function ReaderToc:onShowToc() function callback(item) self.ui:handleEvent(Event:new("PageUpdate", item.page)) @@ -34,3 +70,8 @@ function ReaderToc:onShowToc() UIManager:show(toc_menu) end +function ReaderToc:onPageUpdate(new_page_no) + self.current_page = new_page_no +end + +