diff --git a/frontend/ui/reader/readerfrontlight.lua b/frontend/ui/reader/readerfrontlight.lua index 7937a4d75..31227c171 100644 --- a/frontend/ui/reader/readerfrontlight.lua +++ b/frontend/ui/reader/readerfrontlight.lua @@ -1,57 +1,76 @@ local InputContainer = require("ui/widget/container/inputcontainer") +local InputDialog = require("ui/widget/inputdialog") +local Notification = require("ui/widget/notification") +local GestureRange = require("ui/gesturerange") +local UIManager = require("ui/uimanager") local Geom = require("ui/geometry") local Screen = require("ui/screen") local Device = require("ui/device") -local GestureRange = require("ui/gesturerange") -local InputDialog = require("ui/widget/inputdialog") -local UIManager = require("ui/uimanager") -local Notification = require("ui/widget/notification") +local DEBUG = require("dbg") local _ = require("gettext") local ReaderFrontLight = InputContainer:new{ - steps = {0,1,2,3,4,5,6,7,8,9,10}, + steps = {0,1,2,3,4,5,6,7,8,9,10}, } function ReaderFrontLight:init() - if Device:isTouchDevice() then - self.ges_events = { - Adjust = { - GestureRange:new{ - ges = "two_finger_pan", - range = Geom:new{ - x = 0, y = 0, - w = Screen:getWidth(), - h = Screen:getHeight(), - }, - rate = 2.0, - } - }, - } - self.ui.menu:registerToMainMenu(self) - end + if Device:isTouchDevice() then + self.ges_events = { + Adjust = { + GestureRange:new{ + ges = "two_finger_pan", + rate = Device:getModel() == 'Kobo_phoenix' and nil or 3.0, + } + }, + PanRelease= { + GestureRange:new{ + ges = "two_finger_pan_release", + } + }, + Swipe = { + GestureRange:new{ + ges = "two_finger_swipe", + } + }, + } + self.ui.menu:registerToMainMenu(self) + end end function ReaderFrontLight:onAdjust(arg, ges) - local powerd = Device:getPowerDevice() - if powerd.flIntensity ~= nil then - local rel_proportion = ges.distance / Screen:getWidth() - local delta_int = self.steps[math.ceil(#self.steps*rel_proportion)] or self.steps[#self.steps] - local msg = nil - if ges.direction == "north" then - msg = _("Increase front light intensity to ") - powerd:setIntensity(powerd.flIntensity + delta_int) - elseif ges.direction == "south" then - msg = _("Decrease front light intensity to ") - powerd:setIntensity(powerd.flIntensity - delta_int) - end - if msg ~= nil then - UIManager:show(Notification:new{ - text = msg..powerd.flIntensity, - timeout = 1 - }) - end - end - return true + local powerd = Device:getPowerDevice() + if powerd.flIntensity ~= nil then + DEBUG("frontlight intensity", powerd.flIntensity) + local rel_proportion = ges.distance / Screen:getWidth() + local delta_int = self.steps[math.ceil(#self.steps*rel_proportion)] or self.steps[#self.steps] + local msg = nil + if ges.direction == "north" then + powerd:setIntensity(powerd.flIntensity + delta_int) + elseif ges.direction == "south" then + powerd:setIntensity(powerd.flIntensity - delta_int) + end + end + return true +end + +function ReaderFrontLight:onShowIntensity() + local powerd = Device:getPowerDevice() + if powerd.flIntensity ~= nil then + UIManager:show(Notification:new{ + text = _("Frontlight intensity is set to ")..powerd.flIntensity, + timeout = 1.0, + }) + end +end + +function ReaderFrontLight:onSwipe(arg, ges) + if ges.direction == "north" or ges.direction == "south" then + return self:onShowIntensity() + end +end + +function ReaderFrontLight:onPanRelease(arg, ges) + return self:onShowIntensity() end function ReaderFrontLight:addToMainMenu(tab_item_table)