From 1329f10fa544fcd63c1b13326d91c49884f37982 Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 15 Jan 2014 23:34:37 +0800 Subject: [PATCH] add goto link function for CreDocument --- frontend/document/credocument.lua | 19 +++++++++++++++++++ frontend/ui/reader/readerrolling.lua | 28 ++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 84c050d20..688bcd10e 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -202,6 +202,10 @@ function CreDocument:getCurrentPos() return self._document:getCurrentPos() end +function CreDocument:getPageLinks() + return self._document:getPageLinks() +end + function Document:gotoPos(pos) DEBUG("CreDocument: goto position", pos) self._document:gotoPos(pos) @@ -212,6 +216,21 @@ function CreDocument:gotoPage(page) self._document:gotoPage(page) end +function CreDocument:gotoLink(link) + DEBUG("CreDocument: goto link", link) + self._document:gotoLink(link) +end + +function CreDocument:goBack() + DEBUG("CreDocument: go back") + self._document:goBack() +end + +function CreDocument:goForward(link) + DEBUG("CreDocument: go forward") + self._document:goForward() +end + function CreDocument:getCurrentPage() return self._document:getCurrentPage() end diff --git a/frontend/ui/reader/readerrolling.lua b/frontend/ui/reader/readerrolling.lua index c915dc213..67b716de1 100644 --- a/frontend/ui/reader/readerrolling.lua +++ b/frontend/ui/reader/readerrolling.lua @@ -183,10 +183,12 @@ function ReaderRolling:onTapBackward() end function ReaderRolling:onSwipe(arg, ges) - if ges.direction == "west" or ges.direction == "north" then - self:onGotoViewRel(1) - elseif ges.direction == "east" or ges.direction == "south" then - self:onGotoViewRel(-1) + if ges.direction == "west" then + self.ui.document:goForward() + self:onUpdateXPointer() + elseif ges.direction == "east" then + self.ui.document:goBack() + self:onUpdateXPointer() end return true end @@ -204,11 +206,13 @@ end function ReaderRolling:onPosUpdate(new_pos) self.current_pos = new_pos + self:updatePageLink() self:updateBatteryState() end function ReaderRolling:onPageUpdate(new_page) self.current_page = new_page + self:updatePageLink() self:updateBatteryState() end @@ -273,6 +277,16 @@ function ReaderRolling:updatePos() UIManager.repaint_all = true end +function ReaderRolling:onUpdateXPointer() + local xp = self.ui.document:getXPointer() + if self.view.view_mode == "page" then + self.ui:handleEvent(Event:new("PageUpdate", self.ui.document:getPageFromXPointer(xp))) + else + self.ui:handleEvent(Event:new("PosUpdate", self.ui.document:getPosFromXPointer(xp))) + end + return true +end + function ReaderRolling:onChangeViewMode() self.ui.document:_readMetadata() self.old_doc_height = self.ui.document.info.doc_height @@ -347,6 +361,12 @@ function ReaderRolling:onGotoPage(number) return true end +function ReaderRolling:updatePageLink() + DEBUG("update page link") + local links = self.ui.document:getPageLinks() + self.view.links = links +end + function ReaderRolling:updateBatteryState() DEBUG("update battery state") if self.view.view_mode == "page" then