Changed from 1 second to 2. I also fixed the problem with blocking the UI when displaying the message. Now notification box is closed after taping anywhere (like InfoMessage).
105 lines
3.2 KiB
Lua
105 lines
3.2 KiB
Lua
local InputContainer = require("ui/widget/container/inputcontainer")
|
|
local Notification = require("ui/widget/notification")
|
|
local GestureRange = require("ui/gesturerange")
|
|
local UIManager = require("ui/uimanager")
|
|
local Screen = require("device").screen
|
|
local Device = require("device")
|
|
local logger = require("logger")
|
|
local T = require("ffi/util").template
|
|
local _ = require("gettext")
|
|
|
|
local ReaderFrontLight = InputContainer:new{
|
|
steps = {0,1,1,1,1,2,2,2,3,4,5,6,7,8,9,10},
|
|
gestureScale = Screen:getWidth() * FRONTLIGHT_SENSITIVITY_DECREASE,
|
|
}
|
|
|
|
function ReaderFrontLight:init()
|
|
if Device:isTouchDevice() then
|
|
self.ges_events = {
|
|
Adjust = {
|
|
GestureRange:new{
|
|
ges = "two_finger_pan",
|
|
rate = Device.model ~= 'Kobo_phoenix' and 3.0 or nil,
|
|
}
|
|
},
|
|
PanRelease= {
|
|
GestureRange:new{
|
|
ges = "two_finger_pan_release",
|
|
}
|
|
},
|
|
Swipe = {
|
|
GestureRange:new{
|
|
ges = "two_finger_swipe",
|
|
}
|
|
},
|
|
}
|
|
end
|
|
|
|
end
|
|
|
|
function ReaderFrontLight:onAdjust(arg, ges)
|
|
if not Device.hasFrontlight() then return true end
|
|
local powerd = Device:getPowerDevice()
|
|
logger.dbg("frontlight intensity", powerd:frontlightIntensity())
|
|
local step = math.ceil(#self.steps * ges.distance / self.gestureScale)
|
|
logger.dbg("step = ", step)
|
|
local delta_int = self.steps[step] or self.steps[#self.steps]
|
|
logger.dbg("delta_int = ", delta_int)
|
|
local new_intensity
|
|
if ges.direction == "north" then
|
|
new_intensity = powerd:frontlightIntensity() + delta_int
|
|
elseif ges.direction == "south" then
|
|
new_intensity = powerd:frontlightIntensity() - delta_int
|
|
end
|
|
if new_intensity == nil then return true end
|
|
-- when new_intensity <=0, toggle light off
|
|
if new_intensity <= 0 then
|
|
powerd:turnOffFrontlight()
|
|
else
|
|
powerd:setIntensity(new_intensity)
|
|
end
|
|
if self.view.footer_visible and self.view.footer.settings.frontlight then
|
|
self.view.footer:updateFooter()
|
|
end
|
|
return true
|
|
end
|
|
|
|
function ReaderFrontLight:onShowIntensity()
|
|
if not Device.hasFrontlight() then return true end
|
|
local powerd = Device:getPowerDevice()
|
|
local new_text
|
|
if powerd:isFrontlightOff() then
|
|
new_text = _("Frontlight is off.")
|
|
else
|
|
new_text = T(_("Frontlight intensity is set to %1."), powerd:frontlightIntensity())
|
|
end
|
|
UIManager:show(Notification:new{
|
|
text = new_text,
|
|
timeout = 2,
|
|
})
|
|
return true
|
|
end
|
|
|
|
function ReaderFrontLight:onSwipe(arg, ges)
|
|
if ges.direction == "north" or ges.direction == "south" then
|
|
logger.dbg("onSwipe activated")
|
|
return self:onShowIntensity()
|
|
end
|
|
end
|
|
|
|
function ReaderFrontLight:onPanRelease(arg, ges)
|
|
logger.dbg("onPanRelease activated")
|
|
return self:onShowIntensity()
|
|
end
|
|
|
|
function ReaderFrontLight:onShowFlDialog()
|
|
local FrontLightWidget = require("ui/widget/frontlightwidget")
|
|
UIManager:show(FrontLightWidget:new{})
|
|
end
|
|
|
|
function ReaderFrontLight:close()
|
|
self.fl_dialog:onClose()
|
|
UIManager:close(self.fl_dialog)
|
|
end
|
|
|
|
return ReaderFrontLight
|