From a105d463a822f26298998621078640a5652b2408 Mon Sep 17 00:00:00 2001 From: chrox Date: Thu, 28 Mar 2013 21:42:23 +0800 Subject: [PATCH] use pinch/spread gestures to set zoom mode --- frontend/ui/reader/readerzooming.lua | 54 ++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/frontend/ui/reader/readerzooming.lua b/frontend/ui/reader/readerzooming.lua index 55be19ddb..998ca4108 100644 --- a/frontend/ui/reader/readerzooming.lua +++ b/frontend/ui/reader/readerzooming.lua @@ -52,6 +52,30 @@ function ReaderZooming:init() }, } end + if Device:isTouchDevice() then + self.ges_events = { + Spread = { + GestureRange:new{ + ges = "spread", + range = Geom:new{ + x = 0, y = 0, + w = Screen:getWidth(), + h = Screen:getHeight(), + } + } + }, + Pinch = { + GestureRange:new{ + ges = "pinch", + range = Geom:new{ + x = 0, y = 0, + w = Screen:getWidth(), + h = Screen:getHeight(), + } + } + }, + } + end self.ui.menu:registerToMainMenu(self) end @@ -70,6 +94,28 @@ function ReaderZooming:onCloseDocument() self.ui.doc_settings:saveSetting("zoom_mode", self.zoom_mode) end +function ReaderZooming:onSpread(arg, ges) + if ges.direction == "horizontal" then + self:setZoomMode("contentwidth") + elseif ges.direction == "vertical" then + self:setZoomMode("contentheight") + elseif ges.direction == "diagonal" then + self:setZoomMode("content") + end + return true +end + +function ReaderZooming:onPinch(arg, ges) + if ges.direction == "diagonal" then + self:setZoomMode("page") + elseif ges.direction == "horizontal" then + self:setZoomMode("pagewidth") + elseif ges.direction == "vertical" then + self:setZoomMode("pageheight") + end + return true +end + function ReaderZooming:onSetDimensions(dimensions) -- we were resized self.dimen = dimensions @@ -174,11 +220,15 @@ end function ReaderZooming:genSetZoomModeCallBack(mode) return function() - self.ui:handleEvent(Event:new("SetZoomMode", mode)) - self.ui:handleEvent(Event:new("InitScrollPageStates")) + self:setZoomMode(mode) end end +function ReaderZooming:setZoomMode(mode) + self.ui:handleEvent(Event:new("SetZoomMode", mode)) + self.ui:handleEvent(Event:new("InitScrollPageStates")) +end + function ReaderZooming:addToMainMenu(tab_item_table) if self.ui.document.info.has_pages then table.insert(tab_item_table.typeset, {