Files
koreader/frontend/ui/reader/readerfrontlight.lua
HW 2154e7e852 Further refactoring
This should finish the work to make all globals to local variables.
That allows LuaJIT to properly compile things by interning the
references to the relevant parts (rather than looking up globals
all the time which stops a trace).
2013-10-22 17:11:31 +02:00

122 lines
2.9 KiB
Lua

local InputContainer = require("ui/widget/container/inputcontainer")
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 _ = require("gettext")
local ReaderFrontLight = InputContainer:new{
steps = {0,1,2,3,4,5,6,7,8,9,10},
}
function ReaderFrontLight:init()
if Device:getFrontlight() ~= nil 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
end
function ReaderFrontLight:onAdjust(arg, ges)
local fl = Device:getFrontlight()
if fl.intensity ~= 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 ")
fl:setIntensity(fl.intensity + delta_int)
elseif ges.direction == "south" then
msg = _("Decrease front light intensity to ")
fl:setIntensity(fl.intensity - delta_int)
end
if msg ~= nil then
UIManager:show(Notification:new{
text = msg..fl.intensity,
timeout = 1
})
end
end
return true
end
function ReaderFrontLight:addToMainMenu(tab_item_table)
-- insert fldial command to main reader menu
table.insert(tab_item_table.main, {
text = _("Frontlight settings"),
callback = function()
self:onShowFlDialog()
end,
})
end
function ReaderFrontLight:onShowFlDialog()
local fl = Device:getFrontlight()
self.fl_dialog = InputDialog:new{
title = _("Frontlight Level"),
input_hint = ("(%d - %d)"):format(fl.min, fl.max),
buttons = {
{
{
text = _("Toggle"),
enabled = true,
callback = function()
self.fl_dialog.input:setText("")
fl:toggle()
end,
},
{
text = _("Apply"),
enabled = true,
callback = function()
self:fldialIntensity()
end,
},
{
text = _("OK"),
enabled = true,
callback = function()
self:fldialIntensity()
self:close()
end,
},
},
},
input_type = "number",
width = Screen:getWidth() * 0.8,
height = Screen:getHeight() * 0.2,
}
self.fl_dialog:onShowKeyboard()
UIManager:show(self.fl_dialog)
end
function ReaderFrontLight:close()
self.fl_dialog:onClose()
G_reader_settings:saveSetting("frontlight_intensity", Device:getFrontlight().intensity)
UIManager:close(self.fl_dialog)
end
function ReaderFrontLight:fldialIntensity()
local number = tonumber(self.fl_dialog:getInputText())
if number ~= nil then
Device:getFrontlight():setIntensity(number)
end
end
return ReaderFrontLight