From 16192d2354c3ffc91130f0927e8d4ef618a1851e Mon Sep 17 00:00:00 2001 From: Robert Date: Sat, 22 Apr 2017 09:18:10 +0200 Subject: [PATCH] Pinch gesture for changing font size (#2768) * Pinch gesture for changing font size --- frontend/apps/reader/modules/readerfont.lua | 61 ++++++++++++++++++--- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/frontend/apps/reader/modules/readerfont.lua b/frontend/apps/reader/modules/readerfont.lua index 3f5d52668..42f92b54e 100644 --- a/frontend/apps/reader/modules/readerfont.lua +++ b/frontend/apps/reader/modules/readerfont.lua @@ -1,12 +1,12 @@ -local InputContainer = require("ui/widget/container/inputcontainer") local CenterContainer = require("ui/widget/container/centercontainer") -local Notification = require("ui/widget/notification") -local MultiConfirmBox = require("ui/widget/multiconfirmbox") -local Menu = require("ui/widget/menu") local Device = require("device") -local Screen = require("device").screen -local Input = require("device").input local Event = require("ui/event") +local Input = Device.input +local InputContainer = require("ui/widget/container/inputcontainer") +local Menu = require("ui/widget/menu") +local MultiConfirmBox = require("ui/widget/multiconfirmbox") +local Notification = require("ui/widget/notification") +local Screen = require("device").screen local UIManager = require("ui/uimanager") local T = require("ffi/util").template local _ = require("gettext") @@ -65,6 +65,33 @@ function ReaderFont:init() self.ui.menu:registerToMainMenu(self) end +function ReaderFont:onReaderReady() + self:setupTouchZones() +end + +function ReaderFont:setupTouchZones() + if Device:isTouchDevice() then + self.ui:registerTouchZones({ + { + id = "id_spread", + ges = "spread", + screen_zone = { + ratio_x = 0, ratio_y = 0, ratio_w = 1, ratio_h = 1, + }, + handler = function() return self:onSpread() end + }, + { + id = "id_pinch", + ges = "pinch", + screen_zone = { + ratio_x = 0, ratio_y = 0, ratio_w = 1, ratio_h = 1, + }, + handler = function() return self:onPinch() end + }, + }) + end +end + function ReaderFont:onSetDimensions(dimen) self.dimen = dimen end @@ -145,12 +172,12 @@ function ReaderFont:onSetFontSize(new_size) if new_size < 12 then new_size = 12 end self.font_size = new_size + self.ui.document:setFontSize(Screen:scaleBySize(new_size)) + self.ui:handleEvent(Event:new("UpdatePos")) UIManager:show(Notification:new{ text = T( _("Font size set to %1."), self.font_size), timeout = 1, }) - self.ui.document:setFontSize(Screen:scaleBySize(new_size)) - self.ui:handleEvent(Event:new("UpdatePos")) return true end @@ -231,4 +258,22 @@ function ReaderFont:addToMainMenu(menu_items) } end +function ReaderFont:onPinch() + local info = Notification:new{text = _("Decreasing font size…")} + UIManager:show(info) + UIManager:forceRePaint() + self:onChangeSize("decrease") + UIManager:close(info) + return true +end + +function ReaderFont:onSpread() + local info = Notification:new{text = _("Increasing font size…")} + UIManager:show(info) + UIManager:forceRePaint() + self:onChangeSize("increase") + UIManager:close(info) + return true +end + return ReaderFont